From 5646245681495e59f8a0b76a56357f8291125ec8 Mon Sep 17 00:00:00 2001 From: feywind <57276408+feywind@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:03:47 -0400 Subject: [PATCH 1/6] chore(temp): bundle the pubsub-api package for now, until it's released --- handwritten/pubsub/package.json | 1 + .../tmp/google-cloud-pubsub-api-0.1.0.tgz | Bin 0 -> 216999 bytes 2 files changed, 1 insertion(+) create mode 100644 handwritten/pubsub/tmp/google-cloud-pubsub-api-0.1.0.tgz diff --git a/handwritten/pubsub/package.json b/handwritten/pubsub/package.json index 875998dd31a6..989057b63fe9 100644 --- a/handwritten/pubsub/package.json +++ b/handwritten/pubsub/package.json @@ -50,6 +50,7 @@ "precompile": "gts clean" }, "dependencies": { + "@google-cloud/pubsub-api": "./tmp/google-cloud-pubsub-api-0.1.0.tgz", "@google-cloud/paginator": "^6.0.0", "@google-cloud/precise-date": "^5.0.0", "@google-cloud/projectify": "^5.0.0", diff --git a/handwritten/pubsub/tmp/google-cloud-pubsub-api-0.1.0.tgz b/handwritten/pubsub/tmp/google-cloud-pubsub-api-0.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..78fb6c15c9c492cf17e8bb018647b82a9d688c12 GIT binary patch literal 216999 zcmZ6S1B@s^lYn>M+O}=mwrzX&t!>-3?cKMwZQHi3+dqGDx!mNd)KsT?GSf5NUFoU9 ziv$Pw&++HyvdcL4ot+M(h$CX8}Iu@_x z`=vDZ_9b>2pbZeSx#SxDt@;+TiIwbm7jsCDvzjjsk3DC@WA3U+T3TN?H;UC_e>$^y z_*rM-sUOvbx6>tHxtK|i=F!=Y)L_D13&@rmgQJ;?znV_gO=dmZ@@${;JLdeBR&c{! z%f)I}=2~-`L~ixpK-t1;&jo!Juod6eUjYes(H$%`Q-WFqRz90c&68S6EhiPg&%mk-g4D^uT=oxbGHHqXzCzA^iYnW@6U zsjq{rY@dtWvL@%co-WT$&$=C3oK7q2>z}Rnx{jVL3j(rEQ6DJp>{mD7oE?W-rvifX z4qib)G+LhZV*LQn>0&1H=)W(PmU{Wi$*z%JEB3XTNQbf60CZNf|F#HfOb?^7XJN z_W;en^rOB}?8_~jemiv-+GQ7js2UnJ9dDqtaj2>ntBPAR-P+lx<=Ou`-&53&FT-#a zw8xsS)dr&M%5e*$y*dM5@Uq&faXQR*$%}Dbq@CKICcW%kF8M(EVtCI5WPtkuONsx{ zqq;5m2Dn;F3_sA##`bPB?ApZHNIXCM5uW>Lp;8g@bNc%E_i`Lv^`lqQdChb7L-zGk z^wUH1$yZo$`_EPDYNY*jr`&ee-O%eYZ(OM@4zv;*>9)El)NB@K%!z%S~H zJG*BU0*H8o0Y%>uJW_Z@0B-l{PeN6Ll_VW!#gB-Gf)~9`gCZ(2ppFmk{$3mZBm7Cm zzc>z{5BcqR=kX+SV6^n-_;a&TU`D+?uBA1L=dwRm0RQHmm{GwBlz;Xz_BHzK75@+#MA@?)5DF>C1-bG?SCQ4~NQ# zG$w)a{nPQU$H7!;lcI1d`ln5dYsF?}-E@;>!P@&uw zZHv#FOxVZFyluTI#W#fs54!ZrMaqFRPG!u4)Y#~zL!`?gSXazUAlg`{NjKCG1(A6(y z7A3@ZnL;;FYKHC3PKauritUt^UZLYaqs#fG$G|mcv+~yC>&>zDN>;28kJC-Y>F9+dEs)yG{bvGx}k?<;W97X zl#gxUvMk;7$GT+Af@$h|UAn>dwFt54qoZ ztI`eNEDP5-w(L=tP|W=$;-Q}$q5}GQ`9?b~fl@PgNFV-Q5LZ-!&AZbf;`EOFqe9!l zYMmj=6V_!qdTH-rOd0g#IAuf~1ElSSY>lY?^dR|c_MkG*zO%EpV*R&7D^J9KNBbD8 z%~47Bsav0kTc7($P4!o2p|x2SuT6xmbn^;y`vOCYHb-D&E}WG{EAw68FfCtPEb2C_ zg_v%O^IiB@Shh_wuGm>iSpN|0>qS>u1HjkHQdBgNEPAzh-yc zIWH#u2`bD>#sgDUWOqrQ3=?mN>%?3%?R@gFQ!|~^M$Dr(5fcu z_d8Irbos&dI+0l`#W$xjk8hY4@egjn-Qa`u&vo`y)N5^I%o90pk;&P+gplD4jU>Yy z7USR!8#7vu#j)XBJRA(n&rZntm$L=&%>3GwbwqbBAs+8?LRa6b@*U)V zOSb5djRD#QW`lrlF)@2Oh!0+{Fnbo{J6wdWKw+A=%*(bEgsx<5qZ$ zA9}F}Zz3ZQg{7RYsrJYnnAGzRML;IcUcvD<{@*J4?|)cm*W zoAX_I!XSa$p3z~5KB7263U*@QyFw>;+0|-J9`N>gyw2W$n29?~4B=*vN9%#EADXUU z3qP*BPsW=D%6Gz!-xp^aUm8lh=P+8tbRYZXT`B3||fZK!)VXqTJ2sp?{>?YXdwlerSY^C&%wzg z4494yZyc~-M91iO`yc#52z5TGRQYA3#e_PHJMvv(gSI%FaoB{v2gL|5ap7_0P))-? zi8fjWOjn&6%AGC9n+x*yuAwgZ6A)-#e0Xfl3$}m1TvP!23~&i^N$sN~)l$(^(z(-h zB(Mi^28U*QNW}ep#_5bW0}jp}a}FYHxPM<%$c##G3a-1XQ#NB@sfSsvf5^5AtUi|S zK1EBsY6*CGEXuZ8_U`XiKS(YYY^7F9XMV+ZpbgmOkSpd(DEjZ0clU`6)9K+#$Y8I# zkOdbe<~7*aWyo2jNaz_eGoUX768$}>Ou9u+Xu`!s1_uu*D-)^M=rCB+2KivRQ>fOq zThyj#$|c^M?|HlK>f+%Sxa@YpK}2WBegvlF%EO_AZ2**xoc#ccecCQtBX~?{D-Pz^ zeBJ7v7>08#;h}N*F;~_`y%ZC#X31G1pRF480`wSPBKK&DMTQo$5{YaWhO5Ia5tncY zdS$wN(}vD{w;vx)P>!v26Ojkim<`5|hbWHY99qH-=ezr|e3Ge5!M_E*WB>ZSodJS2J#io85T(qX$?BEe39~MOMbP{3MXzumx1*;*r7~ zOV@rIrk8bZ^*sge{)`m&GR>0E-akvg}xu=qw4Og6Qa0iK^xf-eaarXSD0m&0M zlz4D+;FFph=kHTOv`_-dRuCX@s?Hu)L;S_-v>cJ0jymdzjniuPE4`3c*^{JBh6jWm zfqB?k?;9zrkr$pF=Hcg+Wq6r>tNRRS%!2$mU02#E@WV5)_e+iO5pY`4y7?xLi)-Ho zs470+>*j&$Mf-tNy2)hSj>sJk``XE*g3{~Xlx*v?5LUhrBpjA+(o@>z5B zIwqtQGO_9n9?)vro?8C$cYJ^#)U2gPR zi}xPUhbhnNeo&y*!uL_Co^Epw%q2jR>T(wIuoL6k<@dIeVq#wlmqoI4NncaA;r8E_ z6$?3u9o;I9b6v3{f5ZM!la`S7zG$YtJ>ug`GnWzT8AGBm18RVJm40OavR#!lc-F83 zbn=mU4AM{MNUxK7SwoeR`KVmnR{|dofUTVaYZDDr%LP>;#Lr_`%ph~~T@ogt92O5N z0(|#^eT>Z%rO%=pb8CS@nUFW2_*oq?{2#eQx~tX=&4{LyXsW$qqHWqmk7<&ZPS)$C zx(nd1zwsy8M`tKUGYd@1^%^h^^SxEke^U?8i??Bl4>hSMhdEn9JcBhJ=3j;z@hCkZ zp>vg18xN-b;mR>o9>a=5uBEZ3EyJMQf z)nR-d`0+u{!D`9pY1)p_9;bk02r%BvWs<+o#)gOVs%pD6GXm_xRXnZqLoL&j^={@2 zE@l3VuYNWSd_eH%bAflsWP>0;a&jci9+{!?sFG90&eI1Q_B_&E)B(YHCk9YKk8r@< zXdr*0bpIFMM`TuA=;~xxu8r8A;o{R@gWTtbrk%><+Ww&MC4y$)^b&$}p?6@!R8{Wv zZT>Fs7JQ4-4et{6NRdeEE5pY03W3SWcF#0rP|peRUu%S7I4Gno+1$+)?13g{_}ZrA z8S+BtccjW-MG7imB}llo`RNcP8*q3W3puT|swZL7?B;};wj&`9!`ZVX{n;~ayad_x z(fzP?<4?Lov8Hl7IsaCxY0UmnMxi)JYmJ&!3^hJ-zxMK)ZuaupHclv;@#B^)-hyn*`wKR^@H=60}HBlNBfY7}m|R z*FSHUTjD+w@Jb{Ig%Sp`+?ZS+T3{O;A2%~{&mW;&S{*kouFcU+=3sV1o?Zk|G|_Ip zcEVKLa~oS7eUHXtwFmZwMOQSl;tzHHs78?6%lGWY zlQJ6OHTfVZC@=;>4R&2IVEHC;L!*D!BgUPUM=a|~%VQow-LhU@#*BfqEXgQc#xZ#} z^nY|GG>Rm>pzLg-Z&i=%P&N^#Yo_WpD<|rZhl&|4E)5bL(DXD zoH*+Rz{N!VA*;JJc73%yTw5D8ROwm&k@aqLjNH6kIRlYj|3j zu{Vf#m~jm*%E*t5;Tq3l*u^Iisa*ziid5ShK@t_NaAOHra;yW*hT{ zO1XQi{n|z3hN}1hcQsh0z;D8A!~ra>QJWvZ8IVcneLZ$O)wkmoIWx53*%#fr;@Jmt zu~Uhr!A&!oBwd3_GK=j+quguXe9Lw5W3`n7o&H%d4`R$mh$cVIschFe^Z4|+kA7S2 zbjr?k{eUtwM7-5qK)57BEVusrbWu2scGJ(;S^GJ((U?A zCl{|Ko7S@YnG+=-M(SSKD(1F|+rTrz~(klSKbfz1t*`y8W3zqohX zP?R=YxOo#%Fi4C}k>Y?3xD}OImomn^nUwt3MVF+BuEdttf)|UV^t)>ex@OjVyQ=^kjZ!f-X`RopP{yJEyXUy(|B&1#R0~}SHIRy2$PQQ_>!+$qOy2b_=!^+l zHvbo%Ltr^^-WVR_PXph#JmAF*2%Bbe?v8H!S~jIb_!0;WAVY_^e8yJrIWx3g@g6Z_ zR~5(5n4dB%Jqf3}U7T{%H8j*?38>gA%Rm@!eq}%BV(!aGZ)s+nALyNu1u=Lz3l7MHPI8#BvBM3C7-<3FLFzlX8sJQCqrvTiN|`zq!sMW0 zKa-(4BgFkBQE22NF;Nmv26Nc)_~iw~(*)IolHTOZg$6X_)QL-Riu~qqxfrBZ6h()p zS4AO(Er~Y=r_o3>D8eR4_Q0arJ@~msW56StJw>6s;c@d~#*X)pr2S?p6{i_=4j)C+ zOlgUsh;2IjDgWRtDfy0GE$*%2chADO3XWn?-Acqi+=CjB4RXMbU_?_8Ie2;oQ8$iA zoJYMruj zz$@ZHz+t~(S%7PX#J*hP+2Y=q_m2{#O(fdd;M{!I4~WDoVG;y=4qSiB`nLG`v^qAn zY~0-7Ugp}~TsBnb5fAC!4#CQ8`)pqQRM0##QameS_s&fpZ@+!_-Mw`LCVr*8s|bEY zlx}mb-sE0hVN*QTBE7FrAjU|WRLKC|6$2)hkddp)fA`AIJ-QV`g~uubn0xqf%C3DA zU%whl5T1`&mJvJxjO@R<_kG_RS574UrGaa#b4x4?gCTlhHN*FkJ<-Nf^TvFF5F1w# z(NzgHxuQ0ZQ~s+jfmLd_A-SpTtf{ig3p_>n@5l0?D2sVlVvl{Mmj{2-EZyzIRhmPj zY{e$mqqK_&YW3JmwKh<;YayA5YFWr^8S?FHC_TBrWx5J2==|vS%w)PMHRv40LR*p2 zY?PoyLFabpe^{o?^meS;x^=zH4tONwQ^Le0j7Pr}M67C_@TXLA? zhFytC3*#u^Jpp@nS?9IlK`5P}dApI4Ao6{YkeuX+qzsVEcX*q^e*%sl48WY<>jFbv zWA!1n*0gUT2&w1NF$pT&0#0+!EEJDH^hj(m?Ea8L{5`%ygPlCy?X;TWZ*IR-M) z7Ux_s-o$)S!danVUmGa6=U4@j5ysA$i5Mq1FSgeybSw}zLH(%d?N54(4?ohVz$J$~ zP$ltYgr-qFEPQ1VcEJDn992ldfo8CwXT0i@lHcfqnt@=!?fPp1980&d7YQJk`txdX zanLvR?Edq*YyR*x9RO>vo%7dwm1Eiy+|kRxFORoc0UlqmG!Bn{tdK-2l`aJHPhU__<@C=G-F43z;YBtjgQ1vwB=3D> z??8~hJB%Y!&-s7|hSk)$9_*Llld%hC3Tm5C-5Q@!1xcwmc48?Wf8%*Aneb9ndApKn z0regXj(=DOha@ zLi=viV^A$<`1V8cOL_m5G4L_%~}d~OaYY;M`vQ@|Qo2a(+xwa+xE{>#3Js((V-D*?ep?yhwrFsAjI zC(I5GI3vlLq?FKv?Nc6IC8AB$f+V~`umOk_C4Ir^)d9akFv16QPv}5HJDHEJ+BWsb zI1k-+1x)Qp{FV{EMl&*2LM9$@xbvs~v0a)+)64y@XiqhqNS8IHi2bF(B&RLI;VysA z8?Vqt583*+x6(SVv9(%x%nl#7v$n2mok{9qJyE$)sM1J4yED5p)<2CZk*#h$QRm2x zVioUMze^4fD~%sBZ;)6zLj#)-^;CONu>j6 z&OTPIf4o>kCW(#Hfp#4re==juhf`m=*|K+$@V*PJVioA??RnAffFdyCeDR{N4?`X; zGX3q=hMMws0?$O~Z*dr#&eiCJ#_@$d;lf_=xZ67j`UOo?sNpYcBfyQT%8l0=G9@Dn&PGlz{Hu~b{)ne2zy+)5(`J?^-%UD1@dM}7mz)+ z86zeGCRQa#VZ=ZCNo?;jghv3Aezx^5vIKJez6%QHsjT{Mgc)Hk0G^nW($F(pbXz=3 zahJg5u#pPbKmW)Swf`E8(er)4=dG30T;W|Ovl!c;UJe6bp3@;1Y`YNl3kCUB4 zS+Yw)vTIDBNZ>~_d}H0-X3o}S~(!~~VS zo66Q7dRC4GRfw@nCMh_P=_)py+AWMmixQ_Sm7P!MEOIZ@X@C-eG~=TW>f5tJJ$*zOkIXgkbTG^7IL17PDzPHa-rUKuZzQnJ$ zkFl_Bw9UoqzGGr}$r3!ms1#y^_Y=;pvE1CwF%%NPTs82C?kV9{8@nKj?hQ^qmPZo58RD9>GxZPb zTr0&R9Ccj~JUQm#Gy-6b` zN76xL5cRqa{J8A78^FJ_8UT2qO~CVtZ3KHfi^Z9R{>)(zvN`p42+d%Xi}2q}lMi$- z5pHMC9Y}rBOnaJs!^d-zptOpYfzNW=JcrRAF?6OCHPT7gy@>BCAC^?Li&%EWiWOB( z)e;N)_WKko!1xr;y*SkCz&k#f#itY*k7s&@_bzf}%wsF8ju3|{c&8bwOqVHSPnXRl zGF51s7yeyIR>M(@F_JL(J1U}h@O?Z-ndeFk`4#!SRcBjOb&a5v>@*#syesfFF8V~0 z32*F?%|RLzg3Di{sj$Z5_qPe`hUVB!rWN_HRmP9-sWduLS%m#*`n>MA$(e1%F-pqp$ zer~McoX4{e>}(C_uZ3J=9*AwOB@JEIh+LAeO7WU>Wus&y#;S8N)@1*1Rj=Z*C)R`@ zva|1sH8$EkZ_N1vZwzMJG>u)Gzo$Yf8l%=1>Wg>@rP?+JL>sM!dB%CW_E61)LWj`- za#1J|SLfsBo!AX!nAtSr&yjZ;xK`p`_R_^?<{sx~YAfuI^`*Ed4J&r&Wv)=MR&>rH6yyf(O?}bzG=ZCyDMX*MWW7*)}npfolxa8s2T@D(f z89^`Ad57Q%ZCEUnO=SuwFpMGyGkvG=W>rP?I_clZhGU)QTgxnqw8D?Bv1?;Q(lWC} z-bk=dd~4g?^FD`7*od+Zb!*GlwKp@HAzt78yUo3^r{gDwjnRnnE@f?Qt`EUhYgk$0 zG9(nkf#Yv(tF7M~P>obCp;xf&QLr+Rw%~dFy$K2ovQq6z<`oKjjs5~{aalH~F zrC#%QQj&0{*ka4&fKf~Md*pxZUTw{pMMnTSCCSr5a^%ZC((m*0D+ge zc=V9L+fF<^5>iemZQJ8V>8@vNRUCgCIv8sO`;0xqDTj44<#x@cI8SiR7q|@9YmI>> z*~4)1Q+J2!0>(Vj1&Gy*#ftgPIyt(LUYpqFM-!;xhPXpIfe$stYldk?rhPbwM1Ikd4;?*v2FKK z$ElNXvYIGFp~f4L!9_p21Ol2;4<@7LBDdr{tlz#wMRCnwE-xZLr#lh`b8RLvg7C`m zaGnJJ6Vp}}pa@3(R8g`3$-Vf#2+8N9US1>zxOtHQ%SIo$QcCY;8oDIH*)h;n^GY4W z=(BXrzX|YFclL{wv+aoqwPH-^J)>oBmy9pQ&B}Yw zdMy-+W$$UU#)%rXvT)AuL2{tUcQ(P8~k!1c`$ zvXk!$$>|{rCH2W6q@CWv(B{rlcv}w|_3>dJR>Sm;`uG#riuqrvv}>V|q7Q!Jt!!yP2b;aNlKO zqz1I=GQY_hgjiA?&2Np|#!tukc}7pxD2)?2YEFM7#EH&BM?YCGwlL#^L*HWQ7TZ{a z&m$g(csb3ckgeDp&nAH%vDdR|Bv8}Zg^SO+dEE<$V(TGAveZmq#3kGESzvr*)zRTK z527QRB@*A3@zREh4$a~yD7`4fFBBZ0%eFa&e;pYP)#r>tFFJ@@u4|7?l;f7^ZCc>T z--ak()6?YWm8MIRhjNZJi=sg%xlY44#t9RVQ&eM?aI?Zwu)4^QFig zEUw?fKg)Yr2%N!;VTHDsf`{{wPe2R2sO%`fH=EPhviiDojk)nDO@;nojoR~&aaJnYDZ3q<{gYL?yWiV#qlCOH zLLNk(9n#73Ezx7mKzj&>aa5Pf;{8<0flUew;!A5~>#zx{p^sCW+x_BMl=sNL9{re~ zCT@4Bso9v%TRUk=5sKV4N`%evvjnir-$0KTG*|f^T>($6x-9(k>4U0V%WSvF->+V87`=FW~y+pqRmu3AAm%c z29PG$?p|0XXP%>65J4ts!Ox_$w4S-IEf6P^MJ-?W=K*9vh08=A>$YmikPOPPbbw_4 z(d0r-pVkq%!o{!wE6B{fF9*Qj+tC1X&vfmmz&6F%Yio-!m#h1sSg1qXGo!O6OzsHL zP_{5=D?XIThOC_T4kc3DtYu|Yt%81ZMcuUuLn#$E2PWNdzuK|sLXpoxIpJGSa^5%N zilwD1rIb!|hJ0Ck(Ql4v-OFLVAP16lUSA<^n%SV2^3b1SjvHt@lI2a< zjW;S_E!ixMJ9~UU0TJ_v3wF1Wn?>~C$O!s0)jZiRWl=|krAn*vCu#1nGT7jAh!!QN z9IfMXbvvkC?M;Ii*SbkQ0*?-$ND&O$slJ3sYM~Yk+P-jwKfe)T*2#5`EUTo)9DZO* z3l}_*HQYU9_0CMtTxRG_DK#=W_fKyn!-aN2hw!l&%RzEK|(=T`5 z=?o1lL5E38(b;Xv-4L!d;o&h z9*6GpNb{HKD(x-4gq}fT0jAaAe(xpW?@5Kz-lzBHbqfy!d*3C&rSP+tV&`%Uf_$`> zi5^0&rWN=*mkEZW<)mQtcW!7Pk|qNU%zq}z=yL$^dzh~{^nDU4aS+z-mi!vvgQ5%Q zp^%)TKMYKs{nr=Qkb(?BzS|ixC%l%*;V&q7l?l%%n2jEk6j2cXw$n!bA{G&f$8#Lw zS24dFacISkYU%5l%0bbXH6+_7*1M5@CcCRTb8U7z8`}ZPb#D zB!X-?L>nFDMjAP=bQH~c6!~qOa(AH6TtG)YNtyl|1llvABU8T8%pjaJR<1YgTNcVp z(=7`&srG?Fw)8fMXXs2Bz7$C2@&%#Pv0mDqbH6;EE*r&U@ccHSppQO#(IzQ!b}UM@ zfHHp!okRw%B0@T2WrpBhwTXBQGnopzQq;8&*YRH~^EqBX!5rhRan2~ydYUe0 z9eG0;76kBe>R1d>J2KPLFWJM=I*Vvb&h@*UMHK|U8#ZXfrjkGE zfhI9+7&x!csB$zTGIgZ0PXVhHm|M z|5Eyc$_Xg_l95+#pDmzt5Q@gkf(MF7l!E>o{*myRa7X-w4KCpk!7C~{#`HJ`C+DyD ze^JO=Y>nZk;MuPv)0f=YRs@qR1~5`b$;1V7BjABz$G8oAWB>qtJW$$P{DmkYQ_}tM zg~G@3y4*9Ou!1m#(j=fK)~(`>aYzY*OrqP)=Mh=@X$wqg>f{H0wc_6Z-olAanhNea zH;6pX|6?7X!rmKD`2Yk={)`6PXc;4M<(>P*fmy^x98p=qUwOq6k+Nzudb)`fZ0V^p zUwOqbNKxkmytsWDP10FMgM8^pF+@?v?6)vczT$#pOduIX8mWI0TKPA=MUwvsS^huR z0aeskftR)WeA1nqIeVFemyMQ>E8$j@##OutRn%NSm$&=WxtBp263{~}UCYY~1{3+^ zILPw^tNt%EV&+TEI5RV6^?E!rvu7Jx=O?F%_>5Hv8kQAX`5etf z>a3tyI(O~9d_6V?{Z4RVH=o|WBbwczyQ1e6zIaybnO$=I9qqT90k_6>{ye%zYyuYa zOTJaadc0f3l$G{40PFO{EBK;>MNuLEgN$o<8!zf%{1(KImi1)BL`k9(DQyo2y^od! z0RvRv&Fa_`y#sEY6&AWt$_9g1WpJSSYepq#9)S_h^4!YjrPk&M`a6Vp@TBFjSi7l> z3QHvm$oP80)t(EiH+u0SE%d(okqTg32xSm=K_hi*2K45yOklDn1*x(it|n9cJ*(v$ zNcr|~Gmv@!L}9QA156_3C-^2YTb#wF7rhJs&`ToEg*&C~A~La$Va6lumLL^*))sRks{WLvMairds_4-+x@Y&tE2){zdOYA@6og1D-vF_TT2G64sVR=uuZ)>(6@9g(qU_q*$XCo4Xq zohi@g@G7;u4&+jCjLfc3@!`B;{T0(J*_j}w@`xFPAI;ZHwzy+P)9jx0Y>J%JolC6_ zzT0dGw|`&LjJ_u!xURN4xQWyzpKSXuq&>xWu3xe-9X_`2t&w<=s0a6r??QAr5m1y5 zA?Z&>m|q-d-;$rNJuAB-KVJxMcOb(wH>GH4IyV($4W(YwM{8eQvNP8=b!KX}n*q~X zFhkWHDFdWCqnaB{lrA}^O~@{rA^cVElq<(;@$)8Xok(n>VlrQD>l5r&z^JrmQ3&Un zX$>TkEnG^)^%xPEaJqIH!x;oyk^2rJ36A!lv87Bd+#=o{_4CF;6b&4Qs1@=OC1_CW z6(ODJd5=`Xf;}t2!NA8%rrA3Tvum4M&UEpyGNcoqp}y@iII`R$Fn5@DJ#vM6(%#I* zA`<-be1eThz8BE5$NIZ6TXtrDxrnrpup1uX@EQ&Wldt#ALIqQ~FBSnh0KxFx*#XXS zp@pB}1dM-}qeu5OW+sI(=g#8QrTf%zv;I|u?7D{(a3=kOn?ql2kii}m`PorNkt zk3Zv)i_9BlBO4M5|C9szd_RQ!rak;Q>N6t@caz}u)f&X-orp5rgmRou0&4-s(v%B8a z+zrfy3~shNE!^R5YX;$vP!0B=oIx_$%{}6f+*jzR1l-f!{@@6r-4XvHUvR2CM4hIn z*+cn_tVAbHsi|e*S6W!ghX&7XXX*o}T&4UfrL9cTVgX_Us>w3>Cf}Z~A0Zd^;lG;3 zWBS{H7jFGxw9t%m;SvM16sFkNcnhs9P1oVgC^VU2_=wYoz6dh#yJn$092_(n>ibaZ zZ@?E0|5Ihf&arK>$}k89NC9Rd_NiKkd%g2VM|`;Y_smwLmk6Bw@If7L7#67+)9oC6 zA`Y$lSx;F7;^j6rc?NpnGjZ@-UzR4z$gUrN{pdvC!T?ijNjcn2cc% z<1DTq@HN3A^ET3OY7^4nnBUh$KOn4-ui)Gt-beG|hG;&)lFl5vJ$E9e@?aG#CP~#U zhU|McL1p{T?8s&Z2dpG+IuktAx{YF3JM?&$YUaIvl=;kpvEWh@{S}+_0MBoc_cV^V z$X!5Zhc1lB+zeqPR0Y^In{qP5Rl;!>@C1A5n!S92a5oXg9CuJV0f-z_^-#nRQMMc; z=W?y;Wbor?=f^0vnHxUxzPg~%c05@Uy?ue5+S0_v<4sRxcm`Ys8*4S`FafnczveN2zhwq%E z1Jy&Wno^aS06)m2fX&O`kXEZ?HYbda(2Vnb*0FP8X&Z>3}&s@6Razxa*@VYPBjxmr3bZvhRZB5X1QqpFO5-(r^wR=To@z1MDYeubb0K35!-s6tfCxPG-N?p$5g z3)4OTAx|7-E)K~Kc3EHSc`PWdNNIuiOAbu zTow%NM|W33T-U?+Ij#`JbpOe6e|g^`sWLqRdwh&alH+xg{kx(rOfg4h))F-nzAw%D zV-;59*i9%`!uzd1szRToBy6e5MKQv(I8RBc&O)+0WomJT4zdIpI)?|yCkhxj-b~r_ zEIbT(!a(Mb=*3kT*>O^# z4b&EX0AFs7s&e9A<*`S z8=M^1IV~xcmoZF=J=VeWf{ZjWWJ|DP_Tc7{JG|oye?eWuYQX-~A48yFn)Y29)9(BL z(Smc^=*fXrk@wPbb{Xb`QU*Gm%9iWz6(hf4>k;cG63;m<=b7mw)HCv)t*SZSN%f6} z3~0%PnQE6q?63rxH|;5B@)Wk5kN$xX$BdNufsx4~XP21jb)ZOW_MQM~0MTI-Y1Hcr@UN6XG##)f5Wp%nC zm-7~N7-9{_EBNZBI4+!p1{Is@FqiY{q4UUdN*}%zvx|P}3{cI4Hdz+ew=-FSBr|M& z_8|uulKsqAsSa8GZ@Bcv^~TCR&57Y)fck5(Kio^pq=Y;&=8V+EGMHFd?PgAh&e?-Z zY?(9Ls!Le)&57m!ACjf(+_RE1g^S?gh$@)YWFq+xb91i6F%xH6c1P2r5;zm~^s>=* zAQI`gO_d~RixRh?xT}XazG`6Jx9RqV8MQNerf7StF0&z)vp6`z;R*oOn4&Ee&m+NDSj&#$Oj>n19EaJEI?05 zw@x{JPT>YE*%`&7bdpeO8vn2tFqJ-3^WQ55r`jiksy+p{pEfn~G zpF3jIzD4(RmsF_-DOR&;YmFj$2~5_ewL{i*iaSe&UoVy3)XsNCuxIy$uzY6;y2FXn z9}&Xk{59ODk%(sk2W?KQr45G|tA=v&5u-|L0b$8;5H zp-5!Y?~Z!V0DrQ@%(BjuiWg1@*QKUMhEV2KPqTcYR8t4?;ari5?06K?)H{jtG?^ zv)f^2ZK#4WeMvugDNGWd^F3fjlJRA0jJY)Q48Wh9eGD6VZrXIQIx+B|h$nDs`TXhc zu=r3uq(FvBn8mJ2D%sRaC?Gce=Ma;9;wl`ZAtkJ#Y`3fDa@TdP27oIc(#Byy<(BX>UP{B<(2(ONa&&6)PYv5*044X-X~Euup4z zNQkthfJRl5MW9j0umgj70kgPrt=+5{R>jS+VaY%g|D3yoQpEn; zM-W(xp+?mnu#9`H=?!So*@T|@14EIfaIa%y7 zgY?fWI7Ewx=x3xs5}I0mtS$fE{e?1h-WSl zFjGOr!5X*@#>rb!3+E@{bLC!glOR9Cl_r)hUD3VxT0s;>=sJ*Y@)RbyJaNibZ~|$! z*bmkQJjw5W&sybOxSA=yTYaNDaIdTtdB?mn^2q8AHHHFS%O|$mT-isOOkOVXnh0kb zY_v_lmP}?TA{q$tCoY0d!x4FPdO#n}!1#JV*3%+X=2J)I z$Rci{>{yI_;^hL%_W{y#Mtw~P_3P-?1;`ofk_U|kj~curDkxq-5Ek)_Mj<{}&l9WL zR5^@i;#X*Ja&W>LqUJTOCQ=6-61z{-5zJj^vsUcE1&Q~#5Uc~_F_ zDfVy%@%BaiwtO-IQ$m-H6R>tYBb=)?bUjhm%ncOa$6_a?PTna-VE-3)&s8UImXXKa zjvWNhM}%@B`9wi2XT?pGfBtCFPIiA{X*-cDH#~H>azN;ShZHV)kpIENro?L)`g4(a zQnwnlD>UUvX239u1_S{qW;-vp2{l%2dOu!0zi5hRY5DUYfU$HSU<8`TCgqqHl}zeR zT%UR+y`6ekTLLA#>Tz_}QYli`+EPJN1*jz$uVh7`y>nz?5Zh|JXX7NfDQNJ98Hq;Cwj*3x9fM6Zj zWQyh5rmQ3H*hGT3uV=K?5%iw$ksbSk-E2n#CSzsy9zx)*m@U4mEzRCFd_L$NTslO@ zkw}ZpYKY@Usc}2u#KLCn;8=(1JDbI(cohoACR%>88YZH0(t7u}pp5PEOe(Gw&ZFE5 zKTJjv=*%qNKDWTWXD+P~GFv@iCKb*KMKOP_i&T3K)yC8e2au9t_EhAOx@_tQ?%{%e z^P4C#WZy+V#at^_D(WtZ=m9vFNJ28YXeNx9QF_`*yv?pfkLvmvPcli)9WCFlVqriO z-Sv=Dczm2LzbILJjCAie?G+AL8Fvf1CV9-q0W^GfkxQyTNxO|s=b()X>4EaK_&}(2 zN}HEIsPeA`p|G1p@jr`w5oPUSY$fA5>Akiy%eKf4lZ^iXtw2)0+~vs9irU+-So@Xh zUCJd`TzNKwLl<9@>?ku1)BBBJ`m}4HuBci-++V_b?aJQkba?d51^Gg{E-l=WW+gP& zl*Oe|uk_H1$@C^qEOllbzeZf|*Lm{HvABVo5-@!*@!SAerUTwVkpR4t1>hYD;GISR zJnKEjP`kq{#LXy(bb*0Aqs20Y1JF(#0NQz!0GhJgJcre$BP_0?E*%ezG5ZSO7?Tlr z%ushb{kYqy71}xv1={kHo-=4E3vuoa12t4SKk5`VtEYyCbNkdg0~?|oaC)Z8+~rh+ zFe$fJ1ua?j`%yyQsMlIU)NE7KlW~r8c)uP!}FBvflHhkn+ySX@v@ zBTNLu1|!o3ecI(frn0+A!c3*U<^w-f0ix4LW|)Wuh2J1OgXt6He4n8>B4R2tfW?m0 z!BRw+a#+OU0f;A{4sM)KF8UfC^1w960;T~4ra|*3_QcGg|I#`7gs-}TbtsNjI!^DUAEze? z0{Pj@%oNBIi{O^e86%Jpp%c`BL4(JNK@0mH(@yV+3sPVz;(m;_8Ff8IpLM75xk76d zfGh6P`5-b9R(xhL-6tb_ zSa%|?3ldh(;WZlsKTIJ=S`GITG#MkLhOmgZ5Yt>aZ3DkJ4Izwod(FzxDgB2ektK!FPLw|9kOS4=Td&(Eh3l z&O>!CkuMt*Ek#orEW)EbShAc6`TW^s^C>(qKlY$T^g5^?y+WJ8z%8c%+1S55;>RBF zG@_e(l&FFs1BSu`W|pRQh`(FhcGT@H63aoib@;PKwZhubL-A)z%a-xH4Nt7|ZVN>0X>b15Y+tuV3IUP3 zq5$H8ccm87<9CJ=Hk0r&@>hG|Lc}QbS<+ zv{uwVeR5_$a%c9mDugcWt;)c;RPQo5v1M_xj1KJSlLLGC9oW+vQR{R8s8!ks25wac zSYyZaL~vZk-$keOB-Lp>$-=4=id84gI<4cO5koBgL+h-T2+|zYF==y7>Pa2gbMn}+ zXJrm*##xTSIMgwnY^%sAoe(X;Aw8)Tnob^!Lz*p9hBG=Q)H2-m?d={2b404IlF}Tf-Vv=CC%EsV=O6o1>~Svp?t=G3iMwd&TZrPZxv_+KBH*WM6_ zwR-oetlrh|O=_YKz`Bct=})*emKnz5yH)tI&O zjPVME3mD*gv6V=v%{Nr3uAJkf&-g81s3%H8rADh(mvg`)ClKZ-sA;?(<#tkr3(!)z z0FPZE&pGrVafK{kt+$ni)WOG(OYY#1A9$Qo-R9tC8`;B=JC5gK0AHNH*O!dxTc%I6%@1Vf&B26H$ajZ*d?{hYS#Fh$N`1fh@Y zvEyDH);FF$-$t4&73tDOD3BJ~YlqX|ddqV!ovT{68f&J+PGgl6zyi^EYmGP{Y9VbU zBNDy-j|hsW!sH~sMl~qKh~}WnRDVglRKB4`khR`b+!7j@dm+VYis86=2Y4bhGWP(* zYKnoEdIz{IG*Sk%6dPQC&`n)x0->9$OHco-MFflAS%dBDeL+hc@J#}1%a zlLJA=C%S?>q0WE1aIQX2k$~y*J^YBm5c#@tJ_`Li-NzyESfHWO9n$BWul67u z-5t0C;xW5L{+&!n7+^2=WCbC1Rfwx$yY}cVbOyn%(+i&acHK))tsz>NW8ZdzOV1xm zw+e*5*;neiq&tcah@beN$vXvjn`MT?;SH=k!o^?b4Ge&92go;Xk`11DO@=|S_OoXo zDvt?RR(e*5rKNxQ3QkL(^hw?HS$$JW2ovzC$L{>9q^w~;m}IpK6cL(!z1r?xc;3ha zYiCXCgjCLV43%=?8pXOW{>m0eSDr1`>T1SvQK^~LQA%aBxvMl$fg5xem~l1j4h>Cp z`GC}Yueio~KoxVuCa783b;pf`UD3NMIph^?&Xqs}B;hNtBgFX4?|I zW>4-&WNhK(3fO}GrZ|7Sf9nhTqj>;aXf*0nL!Si zNL$FB4p-Om4Pq^ zk0_p$-+$$A5)-$LK8sCSmYY{NhYfS)q?>OU&ph$=<7kFfVD=DAQ zFVfH(IuhO=mA!omH1K-Of&5uu$|2kr$hCziLK0~43TS;?DL|$`*Z;HT#Lh8Gbi+J* zW+tD$&DdrMIPQK<7{5cDizCZ0qKy!&wMXU>*al$lk+SBl0D} zv$TR!S1EqQJXTVXZoHz*nz$x2Oq?QBzb5^U9Gl=ouO{mPxj4ZhZ(>=wSMRP_!P|zq zNx@D20*IH)r?_TYge^eEzem-1O)uY24g{zJVs zqCCx5>Q<=mCSrPH^E&KJKLhk7Z#MEid%Wf1&avOS#&e(VQ&|TF+&2j`CjFCr7K1>k4WXUONk_gnoA%yB78P&>ywn&szMFb1VL=F3R^tm^PaO3(-#+r<4* zKLM#5`7Ty>%wu45fozwPc;GQl)KlQoS}Upo?rI&!LINi!_$FZi{mBr|3_2>AEeakI zsn2sp$3t4xr-3=%4Azw~8|=c#0GQ zESVzpn2Mhw`Kvrd^B+{f{p1a~q>I8?72iAVgWR!s4yvGSkepK`6GH#aV)j}Nv-JBE zI?EFFDnO7ignCcFa%zc;Lol8hQb}d@D018s8*T9c)3?}0iu2;(U)Ng5osL^1P>!2V zV!HL#V%v@ya=aj~^SlS%V)-rnWEIkneE3C3qmHY#RGYhjKjdq$&@-AwC5W z-OzSYunl)GgHmIeqlG$P;56 z;2`c}(MjaW!Y|q9K134UvzL4dGp+Lg7>z_wctm1(cvOW?u!PY89*J41+W{CQKva07 zY8~)s=RQsoMy>H_%(PAmcx`!tdDfOIuU*?>XL|D5%ASx}hP%V`z_|7MIf7434?G5Z zOL3tls5CpO6j%u@Y2h`|)da83JSUgJ0;T#XW+WqSWc%x#3Pp#g^FH7KC5NHwb40p| zrvf-QL^v3TYwwV#l8z@twpx8K-Zh6;!t^vpn~cw3Z-YL56_{*=r0}%MHNXon*RiX> zQlM921~?u}FFt=&yb9X5R$yinlEO11*8tDVTqnW8%z(~_8SHNW2FiaeJVvfCJiG#D z(88c(_r(l!Qkja|amibbNt)!(z^v$jyM0aYg6!vb_WOrBTf6UeceahS$ZHUn z>ha{8TgSV9>=?02A*Na3X^wXK2Pa2cJLfw`M+Zkn?01N1U*vT_0PCDeUU-?)YJ*p~ zzIXH3L`sufC{XBPWeej~SAE}D4i{08d0*bQO2Bfa=%;|1p`#CP{`p`XX z21SYl+Qb}C?rN*)YhRL^J3J=8XDdlfC;GKWbbR%}8eYsrR@2wSAus$ktLe|> zE8rGO?Cb13b7NLbacRtDj{b|-(p;Ye zOIqsAJO}=!&qseR>Po8Vr$&@FemT|j=eMP~#mcaxrR6Ih<5~QWh3l+*#3J>s*zHtP zLQg-$=;{7G0oYllY9Ci{8nt}35&dJWSh4Ew!kYg4r#swqLuWfOzNs}ZqDDUgH_UV| zLV^m4-Gu$->&<+M5K_&2rwx=pb@Ex-D%uh1h{nVWZ2;*|Lz^26Zz<1%a3Y(S;+x3+ zrRawJF{}9AtLYa%_7kOzaOf9tfZVhm<(wp7N?v@vX>JU9q0b@k-OU#`jIeXc3q&m1hmy zi+1M#ALMXeAIrQJGK)Jd-aK#Z!Hsu$Nly(#0=m0of^-abO)=bc;}}jHUZxjYpw69% zQ7F|BKwx^FCShtbJ10=*?wnAnBfv*pZlLQrz~l8}0*~B&Di05(Em%zo3ydnIty{X{ zTsZW)RvdbbmN|z3xnCe$#3?C$OfTP!Ur7Q9_k4wKUE{gf!IB~>tMmi{5 zS-CC;d%3Mz64)N4hcPbx#tJWmv`h!Z9*G16$1WAuL>%RoX<~?x%E&V$@N#bRihX0hzL5&Mm+&yr*1Z7wMp*v~Y6^tTx{* zX|3aK%|v8fvB_~=o5{g#5d*hFpMsSR!Oc4aK8bJ~2aDZFRz-aHx*3Kz0~8JuyUVgG z?xAp26} zdcG@%!R0+t5{Pf-xHGj_N3tRWvebncD%)JkL>WrJ3}J10pDNXt!mSLT1P>kz6vQ|0 zmIWGKh~hOpjlc$%$(xCYsbaKvSK|ZRQq&}F3`0ga4%9LagaL-5=%uMF6nH>U;6dXk zFbqeTF@fPI_p=n?D2MYnA1zZQ{ zfn<8kyMfx@P`;#Acne{NHRjkPLrysA8qblG2&WvPkr}KcqS?uDKYsE4MP(O>D+k^6 z3rBN}7Z=pr_DkP`;tk_y_4)gGOXOIK6&x3Bo?CxJ#dF4o<9T3Cr-K?{#6fK^LS_*h z|43j2_X@UoE4_HS;|?dD&D&s)3+xR z>ew3wgJ9h2c53b=sY`OCOxmaijDZRiFdW_b;FV{^^bQ$Mg*4bHWE8 zj}QY6N$%j}rs`g5%{ zo{mCiGD0+QcR+aE%PsMe5psY=9$oy*kH-y6bn@Jm^6{{amGtf$re@|{ykCbyHCjn% zdLm%ah`Ej+C(?ycp_%HY$t;qtj0ZyNb6QcEX`wif5+{d}Ehnq5wW&av2Fw!sR&bJ% zg76#_$4r7hjTeq$Af6ylz&zIc_kx2G3hQ!N&x_Thu1e z$A-dycxfs4L2sMPQ>INjCK@wx!ZFFAC#H&;7qiLr%HA9ih?yz!guiJI3!{1N+zSGS z-nzIH|g@Id1_|h_Og)9WfzjX#^ zb1?9xZn!hHoe?=B;A!mX&_V71MISO8+cXB@w(%GQU}TwhCDkH&XE#91`Mjek%QRUd zI(-I%n1Z?`>j-eTMUT=k$ymO;ixS!;DW1xBzs#4g;I`Hfh})%&IjwHPN+|_^jk*C9 zO^HFBXFp3`pm-l|Bt+VT2Dhjp`<(58$}DwOW%JRc;AYRG25_bUU`wa63?$rfuHksI zt1BIg?4<}P)hK$8*X~?~fy(xxrs*2=r|I#Mm+4J!Cc>Gj5ge)?!ZG&7U=HE%0s);{ z=9es7_J!iIFOA`{kZZh3`10ie!k0V}O;}(F!Z;FyaX1JgU<-$ft_-=kss&nnSxRU@ z`lVH;(2xtP%LZC2xRRthsz!)=@@+;4YLix979p*K0UNkcEU^-c+%iA$BmCk!A=*Qs zJ+wm`Cz1b@CCffhS@x-M8&l|dmaYlX=#nMa-0vnDlHIgh-H9xqa)e=sWMY3;hpMCrTw%sjmAtRwn@^Z znHfqOf<5OYim6ymErp#UYZGQulw(Z(Q$-`_4h5VIUJk?~^I*;eNpF zX)NC_Sq2lemm0rHhX0Q<2GusH_@?_O5QY(oPBH$uYRki6@#Pcg1L`tr| z%8ZkF0ah*`H2CsG(x5^(Z<2l%dE8?OCg|&Y!rCxa&a*a*T5RKIVQm;y9ZsI4)z?2~ zosfiVPgUv#ctn6!l(*$iFQ|;xpI1oYI>x%bUDMGr7)PzSQa)c_VI6OIkYOXi1Ke z2UM~4m4&1hjGLaUkD1vm$u=#@R%}(h<(?v7a5@-8nRD-iD}nb0gemRq15qUCxut+{aO$3TIf#cxx@&C z;8`-b%3T1el&Z@GknMM?79)XDuRCN?0pY)Dk{r_&7Cw?hIK}K8nwsp?3Qer95}$og(?UGyD^N?o3sZ_{B5)_2rqx>BKYZ zCHeIgZbVXnXVxq7?e&?JsqxON*MxTU%*s-5XVz-RYj?gx4r%@&JhP7=kF@ZsJ((Q( z-la1_yF=xp#zWjsJ*5_Fh`iGMtfT8bJ-Y6rN9b4P=QuNPi=#~me&(oZ^;_bM8u=o- z=XCjEf3n8qTak+#JC(Ij1pPXq2>R%8IbAuKQoqwx5J)iD%R-UouXDR-VaIDOA8EhV zaECs6@{$4x5K4$uDF&Svr%4t9?#J|wEYejK_b!*iYRR3qOY0ep4pGG10DV-}@5jl} z@_s+AvZe9+@rq(zzn{3PaqK#;5Hwr14o6IRAL0^w{bV3oVB{~zou)cE`IISV<5UtwqAo22X;?m~PYEuB|Rw%t-LvlMi} z>4U|paIKGw+9jd{@j9rFyBD=PBDuwMuB;?!o;YyFAlmHZ50{hZAELB*z7fg@LL9@aF zxvQRQrHsHI0 z-YH}s=i>;j2F<&LB@8CCN`tf08c(xAQk?BbpWS?$pL{ur6?bD5P#>Znb>}S zcHNLKzS3($K?_iE_Ul?~rvWA6N3CfYEVpRy$%%%DEPnarmtIH06Zp4wH}v*Nm&|rs z<2@8+NjgZ8Co2A&GFLH)RG&CwNj>^W)6^q;)65<>HnA`?hdhvB(?_?B1sqBRGCp%*O#myghk(uc(O;gS+Smm35RbF&A*_o9L$WYf=!WVs#-I5vJz zyo7toEF={;A)5wTBjLe0yVm5`ntVtUOITjer8SzS01}POI>e#rw31Q3`RFbAc9^%ij)`>>RfZP0vC;mWq(Q`uQd`q8nAVdH048Zy)ngtnE;NhoX?ZP z5SIBh>!$KodQfD2*T?i=Kq^wK=+%I)wO;!Cx}>iLd@cWKKDWvgF?lm47#n{*i%2rUeeU z39VA5-=IewOv$l*`MApLBmvn;VRMDg-PEc#Zl2yoNPQb&F$q>TvQw)@`t$}>9L>OO zipm2UxVoEvyCGd3RQ8C2HX~(NAR{Fe@Jsm;1eD)z@mcB?k$KOXiRh_FZ`(PPeN5ep9?@GdZll zJsf-;O5XBwWdb{_72F>_luTg7M39t@i-?{i3LpQKes`j%aB6=Gvzdp*;>Y3%vkVsD z$#g`N#`91P*eNfdeh|aYWzn=Dmq|j;6$9h2oPi;2?~*2kRNHa{O3M;V-*ql17&76{UnStBF7Q}lL z_NN!Yz;{R|j?m{R3PQ`=5mFj+6qv3<_(AJ-U=Q*$$sBcj!H$3kQoVI-Rx{oD2_>Ax ziaarcKeIluB02nrA-7ajB9!CDgiy45sk~=T*nU}TSHOEm4(8e3O=FyVwdQj59oGt_ zj?vO5!V%IMl+s$6%#e8FL>a`V#^ArmxiRJyL14NL#!N}Ccqzp9iTzG`BqWqSE{6%V z+q5Js)YiKkzB;{h(l8_7krP2-nK|i-=pXXZ6_R;^r%qw@8OYJV0J)FlhQ}&`2bWXm z3d5523YTO3c!^wyDpGW1cvul+cZ;zI=KvHLMDha8E%MyFtIG9+U(>iBGZ9-?Y-$|W zW@>16gMnMc*2YIC5Ui0PF*bJj5l?)Nu(Dxv#NX{J)OY^HX_}SakG&h@MkUfsk6mhd z>^5$CM8nMDvWQIYOpFK^2gmc2S#w0E1lz{v`Z0l6HJR!>brV8;GUSAW*cZEX*cZEx z$-dC-p7Q2Jyy5hr1Ig9{(`3GkDCj1fFE{3HtwzD_()w46O99cV8t?v%m_*}ComVhO z=jn+^*hr{!C+PFb3u%OjoY-JwT95H=IqN{T$x0drx@w#E8f&GBPFtB_A}yeb86dV>7tG`lww zv0BAwcDFV(tJ@a_Zd3zigNf$`$TGKeu5+AA3&#N5ZTh}_*AeJk^ff%>k?eLBlHI0A zc6;$iR^u`Vo;{O(z{ut*yl%(1$F+Lv?tfvT_2;9 zT`O|lekhT%(pu+tCIwMi?H`Cx?m7Yazbs-vcX_bZvN16?zIZ2iR&U+YOFED8v^$>z zKRETylDJwI>{-`%?#^bFiaZgPi=u8rB-g_8?aJXfl@-~$sCjs~ z%#?J~cYy4>$I^5?xBgE*bij(f+RkU4Jm41RKYgIU1Uu_9cB1J?sz9^N2%z3>#NAK0 zzDpK6xW8wnkm`!3`cpa=kl`)Ko0xarBsM z3@w{2E`a!`R+xVD6hI8(&7*R7Q_D9c@us%k<{iTNtx{Da@zHl4NqkhJE$R8<2 z{`lQsWMu}k8dD1B^3N)SRlMK;=F}420|>d*s}g8`d`v)_+inX3*Xmw{^54FMo}w?B zAnRkTnEKV-;L{Hx3@iI-WCEl?D! z(xw~;OP07ic&#Mvl&@+z{L6xLATE+JM5UqVJGf z8)zyI{|ioTP`~mKrXJz%r3(-RRY)<&^36?M{x}v?zx+5HRGB|N*BWpxY@h}?E|e@m zZJ2q#X3U&~Xzp`i9h-xjZDbEej*AkX_Ia95`&@ZNLc-KCL0o+w4Lo;>HiL_0cdihFzB7?|T4)>qef&0%N zUm%IP4;SL>eigqjL2LzKrHO?QZE$KAM4yQ@z^YSR;=rDt%QJpnt37c36m3#4+9c+a z92w!YMhN{XK4y`_;E+X-*N*XCUy?rFnNm3&)9D$jf2KYVREY?d{O^G9-2h7Jz47N& zgwd#yrII)rwc2G0qyfZf=}4M{ds8{P!~}LV+X34ci6CCjR?i+&#a3U{&Uv_>KJcMH zw|f{-c!X7#&NktcS7xvdG}^^R>{KO$Oc&O`(8B3K;5Qdwx!4qwSq>Xu5r6q-iKaO9 z&p6BJyhh9EyyjRSb*mbEWex4IS8#yRjssS1Vi& zFb{~G<$>{P=N1g$J;F#27j`cOUoQ~jzN-=AzN-!6s(ftV=J4wELm$~=$Gs9_-uo%= zwx5A+`R`)_u4PLlC;4VZ~(sbA6D9Hy_7oM-i1XgApaV8qdySYr+Esen+|MK*% zh^`YvJQeE!DIzq#`byV4p%rrG@{%n_?p&T+X!GYDYg3{lQO^AuZ2SHrGVLK9|Im#4 z`0Vl0baW!wNfoN3K^TwV_Fq^Q_7=1g?GbP@@|;XoG-bhhTh~(5_t+n>jz$4$9m)b96j)tz7~q1L;tjo11z|4~ZF7PCXN8{PERcAm zM_)w{K$T3H%Td&?(@)fYaua>GZlY{#nW3SfLb@@7#7Qr~ukeh-vyp*Y+2nAS)Ij{o zO_rt`(V2O^$=l4uAW)fnQ@1HH5A?Cf#BF9X6$q%cv$mN#6rv6QF0Hs0dT(fJNqdWA z9-J=DWrEK)5~7rgqg7+~A57)eCIs8>@AXaRsh~UZzO-|aUOQLUZF*%C_?#@pJ$6H6 z&QKY{B7JVCO`%Rq)M94Q98*H+;Q1imGAEb_M zfV#QWk?Yi~Om>|L4YV5S_|=M(RREA>v;q*G1ZLmEm~p`|3>`l!ios`arsHe1yz*&N z6Z+sQ=j49c0ktn2OGjL2^0ObG`QjeHaxUzSJohTFtVsQA;1@9ZaYlRgl`aMO8n4Ql zF?EON(s9v{c^cn3SGz7f7Kuv!|LlEhQyaO`@L$>E+B!AVx>A^sgv;xq2sp&M+!jOj z$x<%LfdRZRGaNHyljZQ=-;y*VbxSR2u3$KPN${w3m-^l<@rBnEe+F|a(cDV@5w+%9 z#kxwnY0bBovAfW^2qZEyi((m0vn!%s=0{u&?@+3(L`|MW)6$+rQ$idXcjs5fgg7*w z%b<_Pz_VyPbcjKI7lWx=HpvF#kxkgxXz_y&)mCJeOnj~ecT=alKo5JJSW!|OAOhiUHJ(7*?I2v>D7pH?)=dq1bL+gc6#6;=bzr&G1E$=fNr4kg{b{Z|JpJLs6=@7A|7Qph0NjFHZVnYG|S~myP z1Ibo4o=X08E$vDUU1#J}a7IqW>hsO_{y>cD!ypPUbq|`z9&l}pU2W=4gDKi>v^KXU z#INQED43s>e5%)XHyX@Fv=Kg#wMaf%uwh-6Zt%&MQxgG_h_-x$=cN@jivv3;v zA(QaxI-ZWEKR%4c6Dz#iM)XP8h(0~4ji`>KIrHA6IcNh|XXpc!bcO#*=%XNy3>ynsK#j-+=*YxFR@3sKerm#S@#)zcE^G*@xEL`M}xk)(@a?CC^2bFLc!d%-rP%I+f7biA7nIoG}-J~YqP#AG8^b4qhDA-Q!24yjJ84UKk-VCdS{DIcz9 zt7T()R}0CTu~oM04!qJQP_uuU<(%g2$hdFqh&XQT$RSEJo|4=|URE{BT|^_0tWygD zVSQsX!H1xKA`yo}<#HF(yl=(yu2UlljqcWxXnxyU2ZAvT=H@3mYwc8TgoO zMIhPyrv}x#pB`4dYeQizHj+7}`gNK%y1|Z50lbq_0lZUCt-Iq>>+T4(?#_!^w_&yJ zLn>5}qBoC1b*Bl1>dy05s5-Cx|F&B7si-)28dY)byr?)|RGg2h;(XEQRnX||G@;RR z5{*XmdOJmZ17}6M=ccdC>-gLrOV3o(=brQo>H8j0r{!^Fd!m}Hou{YSdQoCM6Lrx} zgX*H42UZt3u|tcEhbxU}FVSvr1eYTGJ~~Y%KlY+iE}?u2r$2hp=*uKL>;9|LMxa;1 zQ+SVQ6UWg726L-{j)WTM=;75snlH0`x;~!OUK2mZHTUXE9J8D$_6i_v6S<^bpK7ue zej)I!90v`}BlM4&(90Y>f4vNSv#Kj(9G5W^+iB=rESFLP&!wt3YE)HmWKmThRRpQ6 zSTpn#D>XIxUEJc+@uyPRe&M}i3=sY7rX2xb$(hGBsL_bI032*gzNq&jJ}YIAb)3 zM%Oo&aU!1}e-Bq78eN4fQTqGP@h~|moQ%GN6KTp7D}y1D(FIZNX7b+)Cjb4T+Irby z_zoq5vA?IyO6y6WO`CD)_qxTF_<9gftvO)2PAhy3f3U2J0${E!!^XIkb^3i1QqcS7Bn6RJ zsJghr5tsdOGr(Zl5yzIO(=p>J8&`z`-qmo!SlM!3)Df}TGw zV6$g4zikt*HnU}!bWdk-@@(*8>iqtKiRY4L-#04FzJDr)_agKV8$CH4%z9)$+>a2? z%xlO6DXE$6Bc-8P&*G;kAnJ5r5oUEb#fM zt~pmubEOq~bYYukOw#H+Gvt>S&rkH@m>n{bzpth=AZb@c?Eu;4Y#6#}Qf(lFAQseD zyY20&k8h@D-+rmeuI?+_HDqQ^N#|Ef@Wq%4F*XqqqOA2c=P%na;)A;bk~>Z2H-~ z^0e`4nYtcDsA|??osy;hX{L+{29}#J2VNX9ua9_VD1uK4=?7(u56V0K#Q4PZ0HcG)y3DxJ11v_B9#%0X^&>mD(|b(~Qm=yPePaqH5?8cXkL-9K zU7t}}q%EW{N=rq`D^zsLtM80%zRE(kCTL4&g0>#r+?!3xd%sdRTlVy{7-W4}d8jq^dMp`FZZuYGvbRJvJN#{Y{nd&+ZdCgqM ztU!)%rYHgT({)&C%=x|5sBpbC)50}pzmeoy0?7oi^8l!P#1hY-48$2+>lZYVvM2_P z#ymK3G!V1h{HyuDb0#XuYqjBl8Q7B?!t*h z;qkpEPbx7HP*{E{su6lJIguusj&}ZmxU=;ruC0_II?_0~NN3-G1X2cZMfr{a%ta{= zftG!;G`foN?j9Hg+&h&da;rgZf2%QWpFHs`)+2vZEZd*pSISKME1vT8_|*6se!m`1 z!^81aD9+HYUgPnvK9S&8Ark!htc=5a^}M=Q24pt}^J3@%k}bX8ve zm6V{W6nJ^-0WH%d?YkDsw6gI2+Jv<8>$CE6O>su!MqPn$?ABa>dR#}k;44Z^*ogT8 zK^tkdBDYQ0N-J54bIEkSHY(Ho`eHEEIx0pyG@}|P8q%J|ez`jOv0<^-0YC@9w9V0BRz$Ul<5s(Mk-EK^y@(| zRm33zg+&$*)T0H=oRka+nA$xOhLSpLs&dp%%8aVy>tAQwoaitjN)c9sT>~oR4Siw+oiG;{@S4K;Me9{(KBTZ>x3QKtuQexga08dgRNHk zKR!ACKSIv`&yzI$(K5f(t1`pcf0_^_|MQ$gN%K4v5GuJe+3j}LfTc`HNrV8SC+!DRUe6Eer)c-U_Q_T%;vF;dk-5%e_vKvWX|AEuIp2mD{Tdg+! zKDr181@y>O5_8K-4%&lqo^@rT(W0KH{I}#79s!r@DGNyKHt1wY+xWtE_2FN3AYkJ_W9> zY5k{BPUWAOMIECn7O+u~wG#15{9*g4&ZH5v@ ztSK-nFZNG0UW~e66}d60$;ao%NK9g*PC+7ZgmLgFn#15Fq5iLjh@`**c@Vpvk%pPz z_W)lKLuMpK8~~y~UB3vJXW{D&I;n}S2QkFobrJL+MmQf(^7tO}W;L^{|1`$3Qg@=o zIwY7@k*=T{e5ABOT1I#T6NTTCeaNkT^l_^n1-JU~QQbu3)L42u`NNhqUI*ajqe4#P zEKj1}kzB`EXmP#DV+d?_MnPa48GUSmPyP6e`BZUP>T?w5NzL^$#uJ&V8z_>ODudc#f>-1lEehS&fQ$rn5ZQ(&!%< zBYD;OCAz<_6?JJ|7YJpoVQ?$!{IOQnS={-0d1uk)Y?$b26vvIz>Ja+QXxSxrWk1!> zDV@xQP10t&=R8kXT+2XR?(;lxa$y&G!6Y!J0MBh=UK0piTdoRcUO&!YN@h&gH0O4m zrDXPEH@|il(Ptz}JxrVtmTp+B`*c{;)1B2x?b-FBK4Sq4mMyx+EO^ZV$;XEhNW_(D zu^!nO*bFBj5yAS|W~ct_6Er>xLF4mtwNrm?f^Yx)ocMO~NIi_H`g5bK@aGp(HRtg@ zSL5->^HGtVze%nqGuSt9^G7CM##J;waoZ-wKn28D_f2E!Iy9Y|wD7 zeWL&eDd61w923>zBT!4G(RpvC(IkgwXHq1pEJ5*P)~pk?Fg(bjju@Wb znqYW-dsZ=C>Q2|7p7bZ@_G|WxRfy{k#>a^gVM)8}lQj+%ZW4 zE&ak%m@#6~WqNHGn3ND9NyU*9-`)soZ|Kqlna?cqL0lze2%7 zi3}UEbMCR5bC3B!nw?A*w)}gQa_2?v+<9gAq#*L|70?qVD&D1?FrGC&Pj#OuT1XqN zEmH?dSVr}yDl!e?Zw*Q`zcm-xqV80S^`qpN%z@z#pD^%;5C;BuG+`hCo!808{_zAE z*~E>}NkjWs<7CHxlSQ227--}Yus)42hJVbYMvjlm$}~_@_Uy%4xRPVXc(*2r$$GrI z=Kzi2pFbMLKhkjVhd@B5m*LfD5Kh01Ps45y1pf!-mW4N_H!XTKy*_=F!YZh_IXKJi z|AliV78BSBU^2D@>F0Zk#s!WfZBdL?w);~Upmyo;v9BAW$wW{gzV>0;o|>9>k>Y6z zOaP=K7g4Y6JI*_=v|tmh`?)+5y9kp;XSJ2JUvf&ae$M$!n4OGQxM^rc+o}i0oDh^a z^z;M)VBskqgx|&tt2IAW*;B451L%BHmlbj@!D)PTHE#CcZh$VzUPsVG&WTOq$>huE z^lPJ2J3yV3oE&Z>=k(5mRvqnmLzCPjx+*zUs;Lqaevpak6U+py9`ix=PcP@R_zT!g z6U0xb6UW}^fG(VaVGB-oM?AdO@O;x=a!go4=9zH{%%=Q*fcNSKzf)-t(MQgV&Es!; zy~dfD3l&Y%JJLV1770#8rBM9cCwl%aM9<$J-40cIlEfd^em%;MYkOEG=YeH&YFm7b zDoDEtNx`Td)b9FvP>`qxmc~%_pkT}%)FH{+ld6&1JZDx_#=1B2_7w5IH=&34{aG2* zIDTn9WgQ2$Wx*7O8JgP4B62))fWWi)t55D#D2wOu004f^ z2B1FW8$dNOFn1T`Gl)`zAdTAy^`R@6SFK+{Y-;?yqN$N%&8k*L-pGs?7zG(fZ%V!t zhWdSKMYmU9!fC535m9 zdxv`)d)p`Pk3M|p9kjBGnZkA;?E0sJy;gQ*Q-B5A)eT}ug2;PGa#leMsSZuRzxb?`Wvo^|5x%sSC?pl2s3|m$}&NO zdB!HCm>?>8tAHt;x>M?Thu<4CB>mo;At_beur65p-GKRRwFBK=6wl2a$H()-u6Y%Q z-T8KS93OXvT?6$GyB%J(FzgCcKkP2F!@2hFKxy)69RBU^cChiWx3hloso(p<+WY(U zL4O1F`Qd1LJL@x{tU}%3Pn_>+8b&;-2YtQ~+8wT4AqoV(`O~L%`BSJ}{(SuOSbUcL zv=j`=ksOPc1IH1*7GAdzao{YE-wE8MvKFL@3-xJg{Div4!bxNySV)=bY4#)7TV{1R3L99@ndHA?*?w>Ox9xARZ zLabN>`7fAws~G-KJyd6Eg2=yLFp6JV%F%0eWiUw)A@U{Jm*^g|tTl@!e>VNjG`uG* z)?b!L9<%X3Q-)Xc@f(vf=GiwloBp$4(|>+;)={q}%Zn?|Fwf@{F*ZT8|MNI1`|20$=F@E!Oix~S@$RdVJD?eAyu3sbbs5dto zoTG7z3mRVVwh@LGaTbC&yS}^vw2#=-UdsL=$QrC8)L_c$!Xc2=g{#Gs)rA8r0NcRN zGm=svqvPoiO}l_~dFD$h`D0qiUxai9c(jF-{7e^mEV^SletyGq0dt=H=LY$_pBsJA zKx6WLR;gi;b9grh6H;4?KBtVH1}bw38{cKh*f8<1hGD{4!!UWC8r+%~#9AIpSXgZE zu>|BbhaXFjds`=K8z#>!2`##o51{EK*<18Vg8dzZ#TwpGkUQ82lN=^5s@)l8mj72C zc?gs0nQ9SYs3T1+YH)^f)M5;%2?lv|%1=~0AfBa&i#$sa`<|tU`9YkGXDK9uSwaHI z`I1FZWp!*BAZ+fc068Tz)N$JgSj2Dgq@>MFf(&na4D1e^5gd&tb2UJdbJUxXJmH2IU%;1w>X2s33@&wJ#y~zSZ?aCZ0A=wu+WcYn3UG$TT|@84BPPR4mQ@O zGOSKE%{-HlBs2I-2B1-S9?7tBT6Yn38szgB`f1>gW29?69Tst^dE93)k_N?w(5iIW$%r58)gqgi6&y2KqFEz~CU=nc=B@MGY^{{`2rhp^4W$&>dD%V(MS zAMqP|ViuXWLD4FH0MSavOD)!|Rl>?FG?CXr6FDt3kx!0_gd7#USZE&ALK8J1@kGyF z;(4*uAkiplR5XfSEHy8d8oTHcH6XgwY_Ty~o?+poVGEAY(`;ID9K)P_i%#@n(RuO~ zov1;vBYIe|Lt1tsE_V>Q`MbfCGU-ecOG>1vPr8^2>0N_gZIsoYzF0vjrWy)Mq#6p1R6|-;+-Wryo46BIQ~#JP&PeJX;`$rM z#%2VlHR+EzkY|H@e$VydMJ^_8+$a+_ zPG<2%&>Fb5H4DGC(%7pDYtHu;QU&O^8h1vX;fnkj+2(_BXi2f_N}}i>ar0;>-GAaw z_b<@tj5#tODq622Lh0n}u{}9^e2sUs2W4$ILQ^+B1g-Q&m6ff z@I$dkqZbybGK(~7kVP6b#v(aRUyJo?GD<0fbVD&nH$E=tMsPtl&xQ+1z+~#=QEr|u zk5ZI3;Y>-l+gUUC5rVl;yv0qUyv5D`ByYjzT_26FpSI5=O)o*q1zMRUnp_VJj`_SA zqmwreL?<))c*E&q_E@||Ay4TPwx>4lno}R~JQc+AG2o6E~X^(>yu zy2qST&79+DW1J&-DqE~aig(NcK_@nZXk${zIgjbo&q=ti!%SxoFDd*mmwQ!}-F7lz6s6QLU-8~0r3}a0m3}eYa zk_kdtJK@dE=pvNz?kz3v-WrNxF74jh#9&l#CHm-|y^6xW-`}2}htq(CG9e(2S;o;t zcfOs{BK~ZBn9(9MvWy}PuEWz-`|cu4R?c38LAA^BZvUrtc(?!EcJTi zZKKS_?My31gcvMhZ68fTQc&%#s9d+xrb3~bi-j7W2OV~Qz!FRcpjISr5 z$PRbYS}pcmyEex;>+9`cCdG04zXDK;$PSj4$@C#;p)(pF*E;>M^3xa2%FxSQoKUDl ze3CZk$@sE@^6!Y=)}tK5Xt*Zr7;bd7)MFamDXAZOxCl0S+zqMGv}AqqrUfm5kcg|c zcJ}Ja=q7x-C`n0H(vC@aLBfkW3h!lmer{#{|8@0i%okeGQw2_4Fajy48yv)t?8?e8 z(O++OV{fy+yJg88sDv9>iHU+BeV_zFDFom5ch?U-gCv3y488$-JCpj$L~t=G&0i!p zq}5sp)UV@V2K%pWm*+^~El~#{0tmSssnsx33etNr-;5r$d`x6JVIpaKj&gl)a+p?l z6kV-jR9OcVge|bQ#u})iFy2DG7YeDqN#}+n|2xwsHLwrcf=`C8?jvbn4eWZOygN)?7cPPW`$G zf&ThA>eRLUtx2hV-Kd;-v=H+P3($>RJUp7`Iyexea6~-pa6a zHwe3e;Y!Jgx{1f(@%*q$vnNBA;`lf`?hLzvJsfsB{KLYqo3Vn!?m|1BYbSH<>0JB6 ztI_qi8}Q!dUVTiG>uzv{BHV5#p_Y9Xm7m{ECOD6|J~}A`z`9#A#^J;VYVg)_H$JaXt#^ zh|e0Ooo7$Qc`n^fPizqbvgM-Xg;HzCfBEy!YADLgLW>TIRHzC}MdhCr4N}=>o5WEq zcJ9Ja1UA#z-t68+k zcA&+YW;>m2M>qHm^=RQFWP@aCUHJVXOoYb|{CIs!eT;92uV*|Yhkza>ro%IaA4g1H(?lfN1?fBVK)N0=7oy1OesmEgt#<4B zmj4^yu>ZtlTfFY+Wvks1({cDFefJ1o-?{Ad{ZZcmNl%7XFP*~K9g{K$rIfu0z3O?k z%vQ&wix8;juW$Xj{#)D_^D|O@Q@60O_{QHF+jaZviSZ3+PaF+ji|GMEPDKl#O;HXl z9LedW-@w5RBW&{xb{9)dFIAK5rukZAFt|auDXdhrC$506#q^>;Z!w0rHuz_TvG&Dn zRIyseBX^S0sFI zK#%bK*{BiNuGa9fO-5|(erb&E+TGF^0j5j&W1fr>)5XliEG5Y_z+3J#$7nNMzO*vV zh_vUX7VwOFw=xzKp6;_F(ij11Z-HZLOI`D^{qk}J4#6!5Z4Obbx@sqvmgaktN}BIa z&5y4P4}#t4B<~@8&(aTWue$sU3il74pM>+? z_}no}#{bABZi!JsC%ydqQT^j&jFoI7zVVE-80S^{Xj7IgYeoF@tZf0VuKv~K>>z05 z^wK@rVhmo%@kTysBQ>QNU-%20qq=^gnCnZy9Evc#c)2*Un>EgUxG#4V22RiW1{gP~ z3?-r9ovE5!toL-zJRYY0oZ!EwLWgJ{89yY*yY_np zWi%U4C51F=U>20poCPLnGjsONI9r17VyQofIgg8pB$nmb4Zel`wzmj`Qy>Pz*j>oGliyg;`w-Nq#Bo)uQO-jwjdT9wuZRc zG-Bde^Z>tY!8&d7uII)H`Bo_h%3upd^6;z0gm`m9Nx8ks$f><1JIP}Vv1k>bWh7=; zYvwE!7J*AMTR@$3BvrtXuJ{EGv?as@*iSVTWe}xO`$d>&?zI^sB0x)MELj^|=D)tR zw#`9HDKJ?pLTAAKv$oHnOKUWPNNFC#AGVINIwjSdqA9My;Qw3aBPx{AdTjPb+Jh&HSy~m8RSz2;8T6(O!xAc`GQE8Bfn}qjL zN031xE)?F84DHQCR@{uh#Tivob0~7KvzDq5iXhI=k01{5Jtn&~a~Bs4co7+=r^Wi= zj7EHQ6-V2n=;C&C5i&(qw8fkId)wXt1a@?g7 z3;D`<@tFNcBV4%|Hu^3`;4U&0Y-Y|ez+?SW*8mda=ANg#+1T#)b`MXs`|l6d4?dr4 z_6CRj-Sxx%-mWFRj@~-Tva{7c{CM=fC6Ry$-a+vD>l?qVZ}m=g)_2#pdIv3uHOz_& z^SLkymCDHmTIvMYTC*g2s>V0qG*B+Q1#FDxGZ+qK@N=4ZkrGHFw|EKd<<)rsY7CSF zms56&tcV~p*wBc8nQG9_GzVTQx73T z22s_E1XC|ruaQcef8L-v=)4Ja5Q(c=tTV0?g4?N7LSMlozlHqTvwH_WPe!-V>E$3{ z*`wxB$uzu4c5ko3>G-tAlY#xKgUbIJeH+QHxH<@yo?c(u3$HI-g+G$ZII@>V@mXju zJ&ThlOzh>;+b=)tr5CYY=GJe0kYyh>aJfwp;B?dDj?a(yLnH{6u2^8p9TeL zhH-K+wj}Hc_z}9Igh2*YO>Fh?V_mLKLhq zv;$BGQxB=Ha9F2Ym>3yKNL@`F5qHgsi%5EdXUXlIOo&NyCnDD*Y5irg7A1y!1Ve-l{AY zP?@s~xj=<;q3=YVETR5}3tdH&2x14Gm&Ob%P5c6)>tM;N)-PyWX0O%o^3@NgY%gjK`|eRPP{$+2OH z0*(xp=;Nv?Pv~RQ$fX>eE>ghp;WB-MRYVGXbcp7HG=Wg6fFpw?`nbx<6#AF|$(AF6 zVg($J`p!p#44Yre+BGS@yS!PGYVFajnxtro3q>Uieu#Dlu_kB0 zR-mD6d;Ms4201tFPc=Sfc`u6_Eb?`(71YAImdGro5xYruoYh<&`pcXZ#MF_Ro z+dt@Stg97xqd~uMGbbX76AODP$DzS=(Ar4CxQU8OTq4u}ZNtnddLmn;!Is?9+y@o6 z3rfpO2-LTP^X8FxaWt>S&)m~|3o#j3T4pk!K0TRSvNoEG&I#RHIUZ_07@*XYP!pC} zslS9R2rUo0JCzeyyfF@Em~q+jrF@HIXq%Qps>tzRCRhXITSo-A{xgCoJ_vX&Kp?3 zbR8j*Y(7(EXM^TNEW2USjtE0`WSXxd(`X%$rs{|=P)DR$IwFkGk#2%kd_r+W5?H!g zZMy-v3tsn?ZB^$ObQC^-4xV2!8D|2P3uJ4KR@k=l! z9&$_CKq_c?qI|p#7zpBY^np~>?L*0VMb}1CT4xjGA;@49kQ^&#wXe-6?2j1unaN0g7Q$Aimw zn(VUIBDJ!MadLV4Wqb4`oajZ&_7wjeh0`q#a~O`U9OFBSPY*{I`_u4z{9SJ;o?eWi z@jt?=aUK;-G|xS2`~0s1;I!(TGNWD|V7GtUKKF0if6VAjd@`6nF8*T6AWcG<*`s$b z7gD-d>$kFOpZF$dzpgx#j^Vh`sTa`tdi0*ZPB5HFQvr+8f*>ZyG}Y zi#tQf;2{{my6RGT(XIl;-Jm4#019wU#QkQcjQS4GT6WGHaA}}!HWrjzo~p*9cai9? zkV%fMm9TgTQ2u!crq%#rCSOMoR_h3OdO|25a$q#amRb8mtuPH@US(QhmN!~!23_f; zcZ>OQ!n^UWm&=`dOC(^|z|G|A8nG<$x?X3VIk`dh&5~Aret~;dX}pRJn0cci#?A)F zJj@`MXMXd@9GW`Lcv4Vn3iA>NYoM(oTlGp9uz z1CK4}l}|`#OT}FD3g$VnXqk%~m(DzM33PM2wucEispDmVnz{Vh_M7x)+kYbdY&w?l zJyQ>%Z6WX&O1drJ&;BrY8_ORPS*tZvCS52rzCXr!tF<1q#OCFhe(drGd41`OqrQ34 z6VxCRXi4>TlCB(ZaDgWYdIh-w4+x11GNm~9=y_(Mv|ORRGy%j3>1m_Bxd%bh7?0+b zsAIcQ6s+>nBMRy3m0c~jl*2C=UK~=siHDvch!ulbC+=&Khm0ew#2|2-pRiCyXSc~~*#dSHl@tNB&3rk{kNe=R>&%1^>*-pL&zmkB~M%-;a8 zF@iyi#9o@qbEtILV;Z{r;^56JdfFhya!)z2+;785ps#O1`&nCv6+AK==-0#w3V!y#Q(mdcSH}g7yx! z)_41Vy3zz;YZh*6?`RWv`XWf|>bp4rj=l&EdHU{u+&kPG0AF7Oiky81hX=jh;mN0d z?+@Vhi{O#l@8IL!{(gUV3po8E;5W#VxVHz~qY>O&47b}mSU>E4>Yc3jfsZt*@$Q~u zZJk@n$5Q3JDL$TyT@q8vvzk-=ZlY~d$zEZs6yi2J$ioC81Wp+OsQ2xC>>kT9>{d|a z<>hiK@KY!A96h@EE}jy3fA+FS89W4Y#iMaJa|I;SlbY+G<}VPDUILNf8xZLp0g++Z zkMM0aT@iDmROXrJx9dki7!|X}Mru){ zXCmD@JDv{f zQW^!3Zh@)aejd<>q*yYzJH4+Cmi}-cY`m9 z>7utkI{nI=-dnBq7yMAd^xOC}+?b4RZWvOQK73+o82FTD^AjHbUwm&Ud=YObe0kJ2 z6!7eGDvDERd%igg2cH(y7So?wQmfFK0}g>{-LK(~n}BG1E`9nof=Gz)_9Lbc9Z!dI z^o^S!a~rHMBdzC4dN79f78o?}WwDfU!T zCUWUw^z!e22NcxZy_%@`oI?AQVKFA&sD~B!RBqu^(y`y7v7cH8JIU!=am#%xS|=wQ zE1sORy4~*SzyE#q>T2{gWXGPGQ2UhmpO{zcbl9EfnYU6Ldyy;WcWo(;zBKxH! zctcfkfo(_{nb0hD>1Vgawib#)WggdQiF#Q;D>2nsz< zkt4_T3u2wtSnpPwI)1qhe(qI!mE&%R)cPhpTdl^`VS2+jGDLESKHHqdYsWT*t~>B? zeCAD}a$<;r0*feWSQ235r+qjLhPsI$68y`9KR3{xDpj$VpP?(B((De_|4s?1Z3?9? zBQ&8j#WMRc#T$|g1^$yfC)Fxb_oWzj=U2z@#E*>=KgK71N}l-faIQTi5A=9A?1r|I z`-&n>FfDR&VL)?g?MO#lAog(hlGkHc(9l8P%E*EXP-OgH_f)^obDM{<9QAz9SsYqHydGoLm zZyp-Fd5C%QtJ2S;fuvxilL)#KgFR^KKyZs{w%|a07+MZOBEkjk1($L8!ewM!#$^*+#^v+iGQgpmX)fck zQ7+^1h07?#Wn7l!GQhDb9{_MUGh7C|MYVAmFxS?@aT%8{T!xj)xNMNixNLyS04J!$ zdf;3J&ZQRourV5_fE~E$n7f%wK7^y>b{gJDFgHK)L+~R%UicC8q!qQIzOhktd{3$M zh&pQ6REz!uON^=d(F9ZV%4~?WwY~^{Zg*;($$TY%&6QCf>*EW8X=3H@J_R`F&H#hr(@~;?S)yKl( zt! z{Af^O`O$>Lg3~|qPN+5L278H?Uv>TFM|9ecd(r62Bs^mo&xxA=wW=y#(iT0 zzKzl>?crJKG_X0ofuL@YXHSScdyg*inCp@!JOS6h2?x=u-WU+1{C2E$u22q3UE@9T zbS$nqYE<@3^^M71)Ar`My#^Pa_L>l$_MW5gMBe`D5*2|k$OnP5+;=v_K~-W-&kh8l zRmmk4?KLVD?OCKEB=wMj(V8I=t>oZY*L+83rEdIXdwvu{t`W6~$46Hl0?kn)cGX#P zw&qcz*;`N^$AiX)LsO`;vy_JhfLNjdzQgN+Ch3W?%}_B8$=FM|*y zZltR^aT5M~ls`yZ$Xa#fpy(M%e>gEKwuxA=g%ysy{BP`LdU5n?9XOdD>*Fz&LF^;- zkIQBTv74)Kv7GTemTzj71os-31W7d2Vm;5be{j1Ne08TAe6v}#zWHRgZ$fta_F}He zEIr?v5LUiD4`BtKx|#N$`PQfe@$JQbrj-B8x3c^zJa?rT)m_gcst;*_Ko_Yt`vZE4 z?cscAzP1vv*rAwodmxCg}@y-RW!&(GOB2O82MD-qte|66gEJzfEu3*5DyPMxkgswqsxd6KvH$eI)6V8SqBrnS@vqv2`!bRM~5k%q9>hJ z0JHSWHIbdiot#ITh)B(&<7g@|kHKR&mPrAzb>g{++U6?p1)OwGXLy<9M9?}ZbgC~D zd#=pH?qeI~=C5@b44HVY%c$adc8ooLX2a!UH-_e8uyA@}B$n!~@vukGESP)jM96$J zG#e=fLszzpC6~4I??!bUe?M1UNB!A?Oir*o$7^Z;bY3?bfcCvWz9)lw&Xes)N3}TD zlQEclnVxE3oUIF{*k)~zvcR%rv6l@muwDw~k_!gLl5fRKB<)@?9p3hck`5;asu$4D zC}qj}?VLWbLwI5ArXs53rAq>ETbTn4r#dmF00|j(ne_=H*V&!wcMHrRhyn0 zxBC!&_9n5+L7N6=rCWF4QOb#>G)Q$$f?i}by;PqqCLsW>=2iQ}l!~uAaOwZV z>@7sN5Wz085;>_lTMw%+x>`)_7~55h-GN^VDb|T5wngZ2kyXk^yxAhzWaQOCs?XS} z=IjoHKku9r0&2+ z7Ga7@2X!rz;L;?XBE6+a9Yu0W@;gm5?GpoN-kh01?J7(Q(lRtJNUPAqv;vxjxhzR{ zQ!Awr6LC?R@tj%vcswK|>ErRxMPdB5rMszz0%W80Q2;h(3wq}xx0X3Dzt{3~H+7@t zZ15h`%*IY5UOseNQHGMI_t-FBv**O$4R}sqO4wqZFr0L7`$auQ6#QlLocPP{iryESLYypivff@Zx{-;(ybK{|(~!2W2^a zh3iW5`>Kh@=Jo;Nu8r4MZ9YvyH5mW@fRS1WOM}^bevF{VFIJg{w#q0i^`JqqanOL+ zsBUwMb-?y#CrmEmGbK2F$M1_zLN;Q?*r9?+99WY#0%GmKgicwYGB*+DsPgF@EiN)eTqV;&Gazc(Rzet#aKCq53<#ZP(v z?XQGGOpy0z77$fg><)Pp$By&G!!Rf$B!V!gid8}|zBeiYet#+=U>S6&za^cbN%eTN z_~3qKyDTm>q)^9^m69mJrn)!^3U!&3JjCw75>;$Y)dZ+qM52s#s1{<;{A%n&-mxi| zQg}Nay2s#ir~Y16D#iO)S~A7WJhpVI;db)k@wcQ?lug_!iu)iWL|9s6g>2SPR66jemt3MhLh0`Aq*ps>#S_&c9M**C*yG1oyQ40Ve>8vtkWhE#aNa^KXtyL>F{}nr`Kzv zTrf8GzpqVb0lq#*Edaz`)inYJ!gFkKL5nnnD8uv$89D)kGV2)w%YI>?+R9Dm(ja_o zRDZRrzYG3P7MnG&_lVSokIa^8!M0y-IoX|lS zAZ1s?Xo=QL6rpQKBSE5&dmoly`PT_@x63cFg<+&QMq=$yap`q~tJsdNGQ||L}F`2J9J? zc93MwH>unj&&?gj$MeH(Yh%0L+dVwl?!P}+KlpsIcd)g-+y8U@u)nu^a`niLSaiDbQ57tDuw{>AsK)xEhtk`*{@)krw;cU)%)x}70(g5Q67dx zfZ2Q?(qg4}5WoGt4hE(n{2MYP1AH1}`))sm=I{{p=%BU2n!PRilY{$Zl^(WBU0UT~ zYw)oZ9#-td9TT!6={~QeCjQEHyt!m9aocJRvKj*t+8q#NwZL%>Vh4&;4-DGLC4awd ze+HcvAidDUXBS__7(hGIa~Dy2m6_#@y<(>LY+tzfUHy0%l;fPNlM9OOF)v%Q%(dTu z%w@ZJE!G{|*X_}5bb2{RMi-%9(AZu-+THkgGB{*H0wr27ap!2azq7yH+v)8d@)9NZ z>>u<*3qt5g1+d=w!S?5q^^J|*V1VVY?fsAIND_PBJ6uO{*w#7{zczdO2fdAT(eE1} zxp0S$_u=K}+c=*3r}&}Y+ul5R-}|`!slRt%l^XZS z2*83&_)_aNFUL1YJpIv~$L&pSr=y7udozwMZYQIu@jdx53H83+l46ewioM5_6WP$c z+M*xVp*`k;l>+^q*aL=w(?4x;Cob0HP8cnp0&=+%j9hM}Z}<`ryN$qT2nnJlk{$_f zN@f9untr`7_e%UFn*j^N50zKv$)QlI=v5q14qWrnL+N$ROW{z<=s}wd0<_HzHrr7C zhoq>o`qDz?K7!IkL+EsOvqj-Wd_NN78Rzd)$e<&|~e! za^XHhxk9+l09?X7b1G4InC_Q(h-4@^e3eZ{d&nfk&U6dxWf6&}X^_tR%J@7OXUBVt z4lJLX!02ph3*9c$DyXa>#4|NA7em%kx(b<|U^SfFgg@B|3n(*sP3kgwPehebgl=IC z1E*KgAK}M!=ni_3=ih^{1(;1|k`~K;)8Brbi9sa^ok>O@fzCv>?|y}#91X?2E83ZL zF2A@}wkUeKo`^ryYbbIyFx6$M_1YPr6KfjWtLJRK2oa^kL2pvc?X?YBvQp5D$&* zOj}i(36HV1o%cATsaH0$oi8NSk^RgoYv@z!+fQbwkCo)8sH>TfMv|a zmZ>*fijBL7!c>`V*}zmxx13=mu3J_=sH zI1rM6@G;D_dr-4}5T1wAFggvpK`)^+>nOAB<#=*-s7gF~ZQ%jcd-RCNy0zPK8N3<3 zGC^R@YYNQLCtvGongn@hD=QLYOAn?;Nb=l866FR7twta= zGDyI6BX%i6j}Ir}#I^vASQ5t=QN)rmMvP^QYKJ_C5!M3KCBDbByl!SKX^vZyr;IUc z%r9WB{Xxbebc2AU@|=71VLSnR-5^Z5!6BUR`B*p1ANn|$L&3ouKB^Bl8#jLlYpkRP zT@eP#xHiL#*ubl^&pxZ90Id3PH1ub10Eqz)n_yKApFXQ%S@A)blzAH{7^nL`hI`EI zlKeaiiz_eUw#0lJ?}??Kb3Y?=*eF|b_*C4e#lCpnIv?9@C#+08A3nBOPM{eOU-MX; zqo|v2(`9TnzwPl*=F^MdAYQe8i8L$9VHxJfeho@-K=$Sy)12bC>*7_zu}#Y@HowGl zUy&z;zl1wh+9VfkFoS$k^j~E>R4i}WY|i6}qIo4jVnMt>#eFz~p2`vr)1>+?GImD3 zN<7w8eSF^2yh{dxFVl)?%q7sz9X81G9oEeA*-u%Eb;eSM_s+)o0u6hc{WPlZx81!z zcBOJ`c^;N-_qNtIm||>sJ}q8e0>%3Wdxv`qtay1TEne1(U-RN+p?M2mgW`qx1yYGmCgao19FTv9qpx}3Vtx=l#IUXD<7uUalU=%6QzVC^_YSbJ5hPeXm&L) zD}_$Z{51M~!Z?^+1)Kt?hShmy#6}ktG2gjOS7BEBy7}M*@Eq~%qYJ|ARGQjjj z4C@%vM$i!7%;#9f3}Ntf%zlsysTEqa4B_O=zLZ%bc%V!Efu?B7chyobIu|0NI4SR< zhLqM&qj~E~)QAzK*F=n<>46Op4A@olT@CTwqA$IsM(en@g7%HtWD5+&CQI`wtU<4! zqZCX^*)Z@IY7iuZHiRWL1PrbZKu|63CUGc)pqC+n7UgPvQ>y1{HU-0ozXPH|QUKMk z&Qh=y)4x$`W`WV7X%=AUh+ai|_T#V#<=%7E?Qt|$-5SX`URMZ)V18)`7El5ChOx;N zaIGQWm4)sQfVl!TvN#D7w~TFgLxhIte0PaJ3Zs2XOobN?&Zi^hqob%Xjez)EG|9l2 ziF+1WyOue4px_Kx_=|}##x`ugr(g&z;t&{BTt{J%C;I@*;+WtD)1)6t@W~Q?C_szC zx~Q^Rj|ft{;aKPY_@JbqB}ODcEW@Fg!y-fCF-RFJIM(<*5nzypXIdKgOf1tG_vKKX4-lrn*cHUoMD5O4-Na>tyRe1vDcHF#@?od&1&K`U^_DcMCKwH7Sf z#)ZfqtII(!2G8hsEb7@-M(0S}>w=+etAe5A*zjlfirC~bYCSZe46KIUqh~El_9l-4 zz`q_koE)EC;9e8E+(q0NL*fFkL3GbN0ov+olfG zI(d>AR{Jd#q56i)F4*+Bj=!23G>AN`v>cPvgu+Dq=|?siq*kk_1EtRkX2R7u(bS-D ze7MXQW?ezGh6)6K>eRSc@A!%P*Z2S2CZbHuVQ&u4!uFJ*r$ry+yk>-3NL z`HmL(os&e*&WaZOYs7w!Q|%@1?8ebyLr| zn%A}xQ-+l8{C`OUi&z1Tq0hzimz%vuMqqO{^rEZz3_7uCz2UPqzKS^;OnXk&zTCXM zk^q}Ip-x@RYnX{C8%%fLGSJ+oX-*Zp?&s&r&ECcSiI66+qaOfC_un=k8#xJMd_zK00c}K?gY{A++Sk z<3g=>Ca$<;nR4^7i9S4kgjCP3dK@>*rB;p^l}AP`v}!)T{DqbpI*x#oEhQwM09Eqz zSmiB#dVt|!)$4;o9B<%dQo{(z0}i^#EBxUjjyz$qmDj{PVs2SUC7O0aPb#131x*9W zjQ3Xgkh&KbpzPg1tyr!|LE8_$9;WE2rw__xOqTOTn1KudvQ3D0L_!%UJO(ka7iBeJ zb{O5aS!I)v{+JYa>g=q9V-;w-2zKi{EhKyPZ5Lr2ykJ29#(fGP`A72V$&O4eu*mfzW`FOk)kwCYQ?>dRzx zZ42m4U_RQ0qz@)6Kf+jy*$c%$f+u@84RNXM2r^DAKaiyCtO$@DmPg2x=h~4e>9ix- zr9#ValsU6U(1kt1-q;c8gB=0S>qu^hnGngq3G+&GP{ekc4YsDc~8E&~HO@viLaP0GU8$zeSX6qn-#LWE=5JfD#j?d4vr3rW>l8 zh43I5gYt8}iwrp+8>T4-urW%$dYYFl2ZIEa(FpBc&UcZ{I?EhKI_u1{9Hp%2v;Z#) z#;2;|1$25i-$f?3Dc8{CHu)k-&TX2T^@Ga@s)K=6QSj$v+`u3t+oruASY54OnB9Uq zs4-jV;EK63-$hnUoJ_@L)x`0fY`VrxBxf_fQhGSMhx1)z(UN7OvT4cKm^6JDACd9x zzJlQ+h=31MWoPHWpi|C_WeNj{O2@KKmZU5*faC#Zhoy)M^<89D;APulSKzUYF?4i% zYlyEfAhW@E%m)d_&&*J{zBibT z?C4+=T{z(4D2&fH!_$ca1afh(U>Y*26rOpy$iQ~la#^9ijc>+Z#*=Zv-Y4mMqV4)T z+OGecqV3K_7R>YydmW8SHXQjeonw z56ZQ;JQ!dGp{d7$6+QEvJOznp1&jhzAUsc8zk%qr{_}}md+5lulyr{~bxw0wF>WwR zV#NxZ3NCp&qd_nHAtb;(j7|Q4j|_0VVrT%Yfk3Lo*$bq419vdRx?`I1T|l5|WrZ z2F|%dm_Qa;2o~6?k-{-W>d<((sD_8jL7fq_3{wIru2d{ozsXpz{!1*Fp5iaZ%M0h? z)dgFgH~1vhxp)rCpXLtet(Z4Mh>N!CA!=!B1y~r5 znjizThTdfWD##@J;t94h<$ddtknE8Pb&*29wg##TefsqT-e_!9sn{EhxpEH(0o!&2 z0m<&sS3Av$+S&eC)El{vEoR~5+F%`rwqdwWZPPGQmv5nVIose~r(MWIz>n_pORG@)GD%@R~eM9#*Q@*X{ zv#2@{O=gFxW5iCBlXX;F8lo|fGN7rAQi6(4jwwD_yU4>MF@QFB)ob!3qC|jEv*PH; zKoQVg7R%Udbe;NYE*rGD+PZPMhS5@s zuXj^eQbe0#TEx|bM)F$@39tNgNnsF9HnktD<}t6wx+%Rou-Vw}o$?zIa|Ff2AjZ}S z&;$$_`P3iu-}krshx`@P-XVxSf-Y*7D%*P->)Rj-2UO`;s`UPEfA8QBgyDcX3m_h) zKZ{R;2>FP;Yz_HJBND}+#b!VXBns`wxaHuJG)`HAP_(!cu%KpOiMii3MV8oH`tBlA zu2e6kAh}XJnZjhYQqK5URTMGcbLG2>2pJ(8A0;EOK?1J3Xmkjw`ow}m^1AZfMHX(< z2*%Lp7K+FaIDcA#DWn24vesV0No?GZBcjCT$9ET*Os;gfHP6)ju2Ew zTbj?0?=GVGs%+2}zKRVTvn12v3=Wuu-WE9%mp|WKMDif|G%ybWXTezw9_FBZxv$B; zFQDjAz5tTJkE<{7J#%=U9?AHzY@QtvW zWHe1!h(UtlDbDmyIO@Uol4@VPq}qS)I& zZ$Lz6`uh*nT(R-y`aQC3VFTQcwuv`h`^mHQq}3L`x?`=ljJl_obgX69k}Q1f^zNgN zNIoaOd|qmez7X4gDlfzq!!=qCWr1d7_DS|jrc1VDpUjPkw5}KqQqD4Go^FaFskyr_ z_ZcKTBKTXXrdLF$nUs?nZOYp4YBe!yZO@{`S;u4MnP%y31f%d@nj*3!HjHWbFHPd= z)$VHITuEgweI)HVU!Zz=lxJx(;)}IB8UGfgOdHnrfMEYZ$VoO_f&U4jlweild7LsT zy@{^m2ltq-t(&h;9)_{kCeHZ$WUk%EqGUJNq*(n;lhxn!G4z{)q2GLA=qZLi0V`7{ z@4Wepd1rJ|ABAx$qIH*4h((Q&PpK|JtTO&j44lT!DT#>PS7V-FL|9two{a7u_u4pUl7+pY$-oT z_IeXkmzqYu zU+|>9AdWWMKH@W#oxu)f*~%lLf*e258qP1Vyll%bp&k)FXo3Ykct$KRd7G-SzAWME zm_ABl#~I<#%@l4GLC#b~OJp{6tct{AFYt$q0RkHn*eQL=SRwc9En@{}%R=BqV1;rL zu;6h?KAfnbKny+8-Xp?ON>DjyR8Tp1DoS|rD!9=-QN7*{5!sS{V9o4HAO^5EJ?~PIkYJa3uf`G?EKOX{AMJkX z9rQo+dz&yw04ZUB-Sr@u#WyJ6tzpVGi&UlAZP6r6H+;A-opywER^nL&pVH?pqOLT4 zS%J9L;%NnS8>Z!M7cjx%)(F4lD(WB0QszuSPEO+!Xm5~=lJFQ0k-L^cmZ-LdtEsAj zC?~FfF%c3|NLTLSda1j}MgOzY=A`}X)KP?TnwR8)InnK8=T4<&KWI?9e$bS5ojh4B z-XXYt-C!L~PGIcrd>ef|znx5W(;y*K!2U5lX8zyZe|7YNYo>0?3fv0wb)hg{e{??r zu_WGLCPC^fo&=&4T-tO&y_YtH!%hWDAe(Lmq1sMzB&j6S)oHF4DVAGHAzbbpWe^}v zh9wc-nglX)cCM5`int$+3~Z z^~z6g-8wpmd>YW#!R8;`X~vIzE$l~-NapOnE`}mV6nZr;i_RtliNLh@xKqSGNEFh2 zFU|%e>J(MyRZ=tztEALABiA$G+#?y^7;(F?WN~A}*T#^U1!3<65vc089v(4>A#JV3 z8wPPkgsby|K@2H&J)B?=Ln5zu!1!L1QR@%*rh)OW+~d^>Ws z>2}aJezMF@yF{Bjl>IC;zNgps6SFVrWjv_6ADxBYwXytl6Gv1hC}S z)!+0vzzhHPM;BXber7A%hFs~8&q9aDnn9FDo1`a~jz9Ua^R>x=P?N70RFk~4qGZh^ z;H*82NV5Z(3fs{djXOt11@xG>vpz&3E{Z=YQFqm+rZX)>P`6x#y zve)P{NUuHW687GXAfRON8>K2CO5diXyY6S0B!#6x-f_n}Kx}ES!a)ziQWKqC%uES=b5%V&tq0L5vd|uvJ(K@O{Atn2>sik0-Mc4-A6(u+Y-5rX5 zb@@T1S49;NaqY$bq?;sY?SQb}O{E{M)6ceO3G`;ZIoz9*y691WK6p#S7d7JP%8fHgZr$NVQ_KBlCeckXPkwej;ru$cmRk; zQx1yiqkAA_87S@60oDnt+Kwe51zRfPF|7tsFO8kMPlZxNc1dO zRrx_m&5NPdv|4tR?`9Q^FU3(+Q}R+R&V)}U$vmdGIo~@ChSE2tl)eVJAsnqzG8V*= zdlYq`Pu2GN``-4+-abRv_=xEWEPgAfr=HUAO*V~lsz0CmM(txtXcNyS21MvOcUbd@C8Pt*iH8?!z?{2j+ znx4Wf8*p0(dq?{%N%ONso;Lt@dV|6GmfQ}tALfR<|9sdRv?Sk<0WOehEvMX(o6<3N zrMG*u(~_J=250Wd054-l?o8*61y=4&M{Z8X+?@d$sob5;I}%d0DR-!|M6*NbCBTLq z#p@7?x*%4f9l@knltn>|r9BIGL8@JX7^z(iqIv62P}3SMt=ATnoa$&^5d(0elh z*@$`&>msQ#lWDpe5#>EQ*@RTiXsDl$lm#G4vAyZBs*@e&waQPv35u|L2DdA_)=dCL z0&8Rkh>-R_GFAKaq_3_bPXrNE##C372a(;rSWG`2X#1JZZI--p+pL}AbO6jnR*1=^ zYL_%^;saM3(PTduj3xwYnx1F2WvmwRc2JPeccp>{P z`2S&dfq#CTeHMJ!u=|>SUd%opW#1S1_cs9i^+IddeZxP$m5rx7;;{Rc7ra9Syv93T zu#^>W{(RV7;$N4uuPHx1>@Eu<{d`s+81P}YlUncPbTfu~*zJf3cjSx(gFWna#FRU) z;pF(3I%3uxIc?5B54#;P>yDiEK+U5grrvpr%lPCwV)h+5{ekRBOuw@POGKR|=6J9v zaJzqxH3lNv=GU@FimBP2E`Xv`D&?nOuD!{e9jF}f-C#Q*ydAc!sjjzu9_`!0qkTJh zZmt1!7=if~_>I7}95Kwax!r{4_x3aL{HBh1qsGkzrzsC@d5uY?w;T1|-cDYObWP-a zMyH`dy65dm{>ju8siv)_TAT@OHHi&!zbIU*W`=yDrKDyCoufQCnzxf#)T+?And{I? z)GVo?^>(LI-fqw>ce^RKTd7DPle*oN}|gk-{kt zYkB)6y1lCK;*0M3?|u?1*R!Jeo|0qV@S9h1^yY(}(t~%=zo>bh#LDvqr*iX!?w$Jc zo2xZFfrWx!Wd=+294C{4cAJobcAr!Ht9i~E7lKkGGe&rX=PDGWKx8Qtg|_^JHuO>? zEurW6AAltaxK=KLc-#~-jLD17C#=7g$0m+}9Sh*c4~3F6f`JP}Fs3d#8n%2xRRiUN zRtLav!$mLXmPp#T+o({x`y$k89evAVEcqs^By=jSZ^#Spn{dDLWqH*2414ZE8#a)V zvtTx~WQC%6ErDYhfxv@3Ncnxvl-(nWCZ{+gUv#0!6+V~iQT4QY_e<$26J0yo6blpM z+#Elql52!H8EwaK-`dV$(2ZBI1wYp`|NvJ&%W~ zHtnc^wq*H*m}qNx$frr55sn8Jjn|GvN7Km2@hv^(e>!i=3j>!Gnkk&L+NevDff0{3Vyj%_HF91a^To#ZqR%^ zT7H{C^DZ(;SC(&4BV8=Rq96y;Li7YE|Fh~u3eUQqbp+JFVSUJ}yS$5NRGlrA1y!>p z!z^l$>Ss@0UjJ)%e8?8YIi;L!e|GJi_l;OZ~B0PCwQ?&%!nZVvbn*dQi~t=4u`Qi!HXvHdBJPqO&yX$ zdXB2e4I53!4I9r$ZlG^#<5EL*jK}z(atGcN4G7oWwAkWlOrPNT{H(PzSfhZl(Wrp3 z@gksT9c2g3-Iai{IbDiU*{S&H_Y~GqvDF)uKFv}fN%67fcAB1d;pbVTE+YO)dC=1fRN7PMTz;W9m}&VyWbiC$TbJ`;2#_Fna~B&HlDd5#(eM~Pvw z{oL0NNn?N|YQ*`{GNY1`rFL)g$dwy2==BBofd>r2wzJxI5pl>fKOOy$GY_5g)J*dq zIv_X7%KBrs&4{qtnQ;rS8x0Du8%+tY^c`!l9+~(`Zb&!yL`kpc<2bs$<>NI<;@iYp z1SMKjayl7@Q8GxT;pl1{U9k6zP&qfTP4#lOMEpre#Gjs>`Ae?7uTcqTfAmO#05y@^ zK<_n^koHG=6->RRHgR(O^0F=JS`J1#dcHwv;I>zVH85a)$0ylqh{xczr-n5!t_}Fq zgf`&QGtvf-$ggo_fWn;imv;aTrGXZmf;_$(1wy7-GcMs@^+$j0!A>Pu!m#fla8r4Y;^_+$Vwx-u}z1&=# zI#DCiz}ED7_9s3*RZ^pn2)>#Yg=}&rlqfVcD{NZ^C?bdfv7+uj$uhEB`-*&#_qJXW zH7!(@)FR;9ojZfRag&4CAfzgXzRnyvxI^ZDsS#S$j?VRQ=gLnrX)H(bVx$R)MvNLE z4n~9wSg)zQ9B~XH#L?9#PX!U?1M88boca)a`g7zruTH^&h~PLIl%9f!;9L#yDZ0n{ zhnm$rpPEwlkhrkLIuws*PcmIsH#mULPmjKh_D82*M;H7)>P36ENjTk@jBakS3#~)! z+)k45^(16H+_3Aa18jv+I2|Qn??1Pr$<2Cn_HlG`NdXFiv2humemzRgmvj(z5UYuK0C(ekA-E{vo zkLUB{uT#FV`_u4z{M{J)&E;r%%|aV*u1BZF)NcMBpC@$9>&t6LyVsZYMz1fgcfw?J zHcCcTnCb18AC~1l4@b%EG)!?hEV+%Ci{tcq8YW?iWU%`S06vy&%Z=6$k3f!dXV00=w^VO-Zdec>9Y%eQZ}E-@@7Md{7V zLyl5V`$N|X2G0(mnmm(36>xN=($^V)s#A$re4R-^)X6g3GYJAnsE(ezL{zVUkH~`3 z3L21jB@6aTRI$GBO~8UjMt&6R*{Fc~U0hTzi~sP?Sf@g{=dD-NLQCe&+3Pjn+cz1# z@V|VML26ojHERWer>oJ@JQLNbV7-0^Z?Fank2EBC{__l>agU4eFhekacQ6I@;vNi+ zyF+(Xg9OvVMAjXJpFH;cGq103WhR@{;|9i9Tk-MvMLd=-@HC1bpN zU1V^yUG0M?9fXN8s%16Wz|ytgF{=^G9&;`rKHHpn?VuJ9-y@=eoCDDsa`t_mKJT^#Ztecc<4HZU{} zm(zy8r4&jN(P`k$dWB6QiG>T_#pyIuyw@*7_e648ERRbrb_1x)tGudZ&2n+=q)pOr|x0U55Jsl z5?>&tlgt)MesN!ydNh}$3yYz+Oh;xEXP8Whl3rlV0`Jj1A}UZhVP(k{y52EY1{MP)^#=IN&C9|6|@zkBXzWnCp6l&+$b zD}}$i2UT93i3bCl2)qD+xBG{^lY^t(!~RYN|5}58 zZ4pa@7-;Y*nbYM6!@Q^s%|7s>HpE1ag9|(qWQ&wU=X6{NV!}qC+A~Ej+65$tq5VMB z2U3#Vy@Ib2GAzI)LUN76ZGs&!&Fo+oMeM#1Y%rQh!Y(|}4i3!c9hfR;cHio?z;*;% zFsw|v#T7xcK#U*r)gJ!>(TZvJ@G!%)(?Ad-qX^Bp8lC_|T!kzuM&V>VI-Vk*B?d)P zAkJ1i96~Xe`8m;I^U1@ovYF9loz;TA3g$l0?g+Kag4!UuyPVuL+BcgYg?uh62OC?K z`z^LO1)1cz)i{@#Yqhl3hH(mVxo6ZpZQ^+38i!W^fX5`K;|V`BDj&1rU7S0h7 zArTQ32oX`?50M`95D}pckrCh!S;HD4J(wZFAq<$MEN4X3w!UHC{UD-Uf|~K(56IJ+ z@1-n=xAxLTcH*<}7!8O$nFVcSrQ4}HkRXUiZ>rj334#cDK{Xac5JaRS)q{i)1d+uv z>j6Ruf{1kVdhlR^Aac6gH5gV9MA(0=*@%K5viJ!$8dVTPrvF`YK?OlXc=0tDQV>Lh zD_{cw1wo|y5jGJ@5JaXMViR!$L8Ln|HXlL|L^g-WrlJUfNOP&IEq)+~a?1W7mRw2x z@)6YH!2)-YPc+YR6gow7maveLXs3B)V=yne9r!eA&EW%gQGS6nU5z3F>vS$h`)H*s zf}vWYT9!wS%OaUbHlpA)cE%j*mOTZYtmn zyPbA&93L+XyFgt(>@M)HuZLZ%mmhXtx0AW{fynE4b2GY7!T#&$;Q?MY2$Mg?Q^prx zjS?o8L6|5WB%|nTGzGZ?)=y8vo11v5!(y=y^)$NfMalGsy~cKUF*^P6>rEVe7>ARy zjW{}=j8Bsry#@{{UoR3=zU~VuZw<3n-67=bJcNAxF+<3yt@CI3HtXnb%%&lh6e!5C z;y4rD+$)Z{#tUufXk2w_45VFf$I)hI*t^Ur9BTWGnoU+tjofw%^3TZD0^aB)Vy3p5 zj}uq8y!5{lR)|wb*>F=CR}-`Yr9uQ-xuODDmeKVF!U5NxQ;tzch^t2glEj;gNn@Ev zT~wS5KJ&-1v6wSS*U7lK4r;_o;mNuSFJWB;!@632{=3G9T-KWmrdod@!Bll}VU#aA z$%e@XP|PxqUwV^#8#R0<-$dnq?l{t7c^$jn%Y4 zdZt-QCl%M_Tpd3}=jwJ&Mt6KpE>vOn>L`zUb?kMoF3;)0X_WF!ZVmAXpkVlEKwik} z)iM)9wyr|pwsK@&ri)3Bg9c-fr!Qo8_rjkrF!&$bMYse}(A zpT?+Jm3$s2lrmyh5J8RA<0;~UD4$-eY32Nj(LS%yzF8H05S1nvK9hQD2wyH-Z_a+c z-dG}gNP=7U?RAmBKAfCMqxLpTl+OO`&bQ&W>(S{~K_}qXzitT7$>^USI^b=@#l~@X zwoQ~`LIg|x4o6>2=r6Yy2jSW1G|`LL$&2_sz(Yz#(~B^+5s`O zBT5Fh*VpkhG0VNi^=+GR{haO8`|xt~Z5&VaWbNBNll(z=9!|qZ+2*%Bw)t&to8Nv+ z+dMykUdO#ee=KoHr99__z~_t~U$2)LhqBqwMd`y?%h^5hwaj2_&nB`m;Bk7BXH5l^ z@iJnzs-jpm%C4ucNd{xf6wk__JsKhjzd{f~YkAvM7Z?ogp2Q;l?USI^^zZ-%co}Bs z$m?U60h&qRv!$0Hs`(VFF-9T%(`Ki~#a!f7y}SW01*CvX)P?s^LyxRS?GurP*8*bk z41nb5RS(rv9s*j6$UC6(cEOu-_(AIevpT<&dAMjm@yoE&s=CefMM8KyU%)`13(Vqz z-34a50T-C<=adm!-S6rSFoMx1(?v7qk(B4RJzASG|73NRd6>%qq-V+-?m~hjf|4FI zJPS7$63EiGyagpLSQA+*!GTVmy}U9$55|h(jy00X{aZ3AgQ@8jx?Se-F(*m!4cMMv z_|B#Kce6UDTH{VHatL#);p8U#$zH4{88_(k*g}N)cy*yi_~PglEPgmHdR@dHXQ9)C zo6-Vse##`WV$||~%qMDrA8-#j9Oof#W{zuJel_lg^KQ8Nq%TadI(Q}C*u2A_AnhTG zHF}9{H|Zs|{Y1RPis%DWzF?sP&@%<|udW=y^D8)2Figf&RF6QWkQI7_EK?)@#|xCdfrNDA}20Cd4^I(xuR}{Qm5#bLza}iACgIQ4=V+;IkBb1(vd3t?au^i z=z3x`>rA~94~=Qd_SK}1hrVg2Y`S=DWF_VNQvo6Ma8F;>Ngt|#{s$(v>RvDn+_rEU zm|Q^ZJH3$EB3e~f)>Nu4epvea>G~@zd8ghhPNh0a*>S6CuKY`=vE%wUrSggxZC2-L zX7rVLWuHh+UqedBuW`av^JMbXIwRdo5sdSi=hW6I1nSn$5m?nRu4eG8-@&U+?Vv4{ zv66(`-oi*h=yMxZjk1f4{D-%zWieK0r)nBw)zXaQF$U^Fn_NWX%T47imVY$W@rgPp zJMQ5@e|Ia*U^~B(fzIQ^xCbzSu7K#6t(@%ldmAu&u7F&)*OD)1;up&YDwLBTJ**I` zm^Y0s_7F47Br2B0Hq&FK)!^`c9h~g$9qg=cgL!674;ma=kB)-t=wYyIAII_N!`Y##|G zo!Cks2(Z+yK$ENL!#z0Y9rkt)`+K`5N4vl6?)|X~_7*sh&{c5a<_@aTp{oq`jtja>!&GdD4-p`AOjl&?351NnuP!VS%XQC}>u~*G zt9N*E_<6raYzt@r?F+2+p}!5c1yt$Ss`UQvu(vzl+q%BH1-A&)Ua-~P=?wU0}@To74_!6$QWM99-k9*ltEaOVcBLA%+%;l5#3f>f-WXNueX)9UH>FQv{7MNZP z)rU+)6qx-Klv`0$0p)w4MHJMREE|le`QR2>sI|`_11LF@w7PRXS_43SQ1j1H&& zC+~Y7*FW|54o;4C2m8H^{)fJNX=HxI-y>pz_VyW@DMge{j`|v>`ukD;K=!|oqdww^ z_Kptsj}A}vcDFw(UdY=7Vvzc~S__LgT0rble`n|DaQ(ex0pH|k0P#*oyL$(ly@TH7 z$##Ems5mEYD~O%i-P=9s?d%_ZKH2PjSU=i6RGgHzA;ezwH<|SCp)V!Hr5r6R71I9X zjq`(5s^AHuy#jH61#IvB_&;6i1OfrKXD<*?$!hJ0U_;w^^XgMx7+Nr)(7F&g@>A6Y z%Pp@0LCgTcEb=4DbQ)$;K%v4~%i=pCB0?n6BRwJ@Ih!pLV*R`so=ApiMEN2oK#Ji) z@d^6M=FR60?$HLjamQ)LEQh=BVklIrd^AK5DPO?4q9F1FC>HTF2%^m4uv*+hpda26 zyY=fJU3k$F+ppB+qF}{xkrqLexkT0*UlBy6*Jl0U6+xuAY}OcB5fCV(#Quu^53-hy z!Eo4KD-VJS?J)hPJ;38GqI7s!#HXRdV^N-&c4a!OJo7`|RC-iZyKL_2*Gi?PNcE2+ z?&L1Asc5oAv8rg;;^@kaX;D=P2!l1-0(q++J=VBB3w||Sg*is4sc0-JdgjxZmkdC; zi*kwBWZrVCh;5`S*9DH8h=f)B0IME{zIKOeUXYba?cYCi7)=mWmTP=r>PV_l@#@>n z#j9^OmhWAmjTY;M^Rezs@AE9vyAV@`-FcqWy~9(zAK={Y$llD;zt6R|Q@+dJgOXlg zC(8H>ds3!e*^Nf;{r#CT4eZynO2YmP1Ee+#MS1<>psaInB!(Rh4#Z_~g9-R4+ZxZq ze;gk#8l5mJ+OWIGOW$av!d^D)zTu^B^)WEZ*s%MS7rrA3QybW@`;LPwX&{-kYuH`l z<;%v{xm|16T^7rYIfZVplbDGIy7O)HnfnE?2h?^FPqh9{!o&4dW|u+Uk2x488B?c%$Y`%1Wn>%0dT=d6k1m7m1PQ}bI99)>$f zT`q>&rK->4P-}SR91wMEVn26;Ly;;Ykea#Ke2PH z;Fssg8v6%(hkFYxb>Kmboszr8UR9OI37N{!xavRmel}C%P{LWT=>Ho9$tzB*0+`|3bU!nT+E#n+B zHY813a{T0>KvGfy6iCyQ#e%^WW}5NHnHfVU;lICY>n@GP<14qA4+)HN_#t- z|7R*){3DO2EKNgTBk8r+b(VS|HP{MM1E+>%lh1_QNeu$Dd z)xh#TmfYEDC}C|h8Z3L9g3#yXP#(^*$?4Id>=O)_g4qpIT`b_tH0-z8EvVQQU9Ld4 zptqO?yQcTfp|@Rp`2!~Hd;`c!khj9mXp9{tw?ve`uV6Zmy zj%h>h?pzzn&CihgSv4q%Y?iB-J38w_yX0~WaUe_I7y8J>8>j_jXOx^9drV{4s z=ElqS$B={NwT&L1F6Tzdt5K!#-7J*GcaK$RH0j3VQEKv}rciy%6CGz&J+O>MesXFj zzls#vgvbUulzRGZrt0at2d17*L>O}_t40h9lvh>bKB=*;$Iuhd?%cd+*u8;jm{RBMaTb|kxt)^bz}jNWt{ zTa4a*WUGwUczpYeIc*bIYAitG+iWaAV_0wWiBWc(VfbkAky|$()4GJxJlv6voUT=m zcI32{BOf`v?Wjl2Xgku8(^`&tL zY(fjyYfjNE@(b6B!M}^ljp9 zmN#3gxL35h$DCshMVnw@#2BG5b+x^lp{woPt+?7u)xHAVR%=_3j%g>xbx`ZX)e zIb;--CKdX%%wzT|^O*gb-DSR?TTRQ+m`Re05weZmUZM+eBDD3LrVH!WN94lN&)?)e ztEmUHf52!*C8k^C z*NNOBI>F528c57mg2u>`p(Dln(w;q)9gh^l+1;mk;9(11u@K$FJFgO$=@*4f7nw zx0~bm#?;cLtg8MxD^*oLl@;g*6w{5k-<5jlYkgQj6p_o-C=6&O_}5usM&E*>L3!n0 z7c0Q8M^b=amnp!nnF9R!P8DD^m1PH0)hxxo`s>|^&>JgX!LY4I|E#J)kyG|85ExzRSHS6tLaa3L&q3~j@L6abi95jhK_ML zo-2=(#_>2J>dV7O<8@p7b1>S4{4+P4qM9YcoLjdZrFHA|MAj{hAx>u8(g58H+m_Dh z3n-sQbQZ2MVQ3U>3Q0PKp)Ll%LNUPAQ6bgHi`^4i^Rx+l6vjM#JP+5FS2~J&Vaj{` za7}rpoh2W3cQ}hmp-FIDNzBA-x^{qI(PHrVL``i{gBU|j7iEXhuW1QR|t3$gtR#}7h7f`m5EUZ&BaO$|-V)Dyz zGBnRHac0p>Joe<7xp6;iyKwnX?uBvq&BHYg+s0r!-&rn)n!~VjJNDW;PkA%zoK#<9 zN}YRc{e3e->+hRcT7Px2S%JR51iX)vi?F2(z@Lh(yq}6~!=Fa7;p(-`v@@It{YKKP zas+SUi>s2LpPlcwNDrrFRfAsmC#KX?)*Ng@{={s^pB}aidHMOXdt*gj{^{$pnL6`8 z89RKG3{ZMQ!&C4S@DP!02XrQ6~^yrYt%PnI1}&w7W5+ z)**;1jTZOm(HiwjEOBv(`7Iu3b9>~@fUn8~K1)&38@LVc(7fdh-2ZoG=JEy|yMcDD z_{Ox_PuY|4X;z*Llf71;C-7su#o0M&OE<>9#l8xoC~V_yk7PJ*U2WkD95owexk)4c z9m&n{Z=pltJj;5OqdZKrR+kQGKkUR5hsse7{9rG}zs!sA@8kAj*eh7pja}dD>?bW} zn_cscJSRUde?6WPwQ)+0!Vf=`)zHVv$2nXJI%Lh8QS3O#K>!V5p!bIz{87j~ZJ}=; z`1o6v_4fJ^mUHgvMT;5p)6Y+z|M)XxKy+@TOd}H0bb0*yh+G~9f0@wZF@$e|dPQ=~ z$(?ub$9cpQhjZko<>g;~{Au}T+gHJPulqcWFhNU=A9H>X2bl_oBRVi|W!#@mVHr3& zo5}?50W8PP3Ax{K-~-fkts74WEN?u~+ive1?{BVe9B;gOwXt@vujSavwOexbd7vfN$~9TOnZ7&DSg%JB3&d#OKrBIoVO8%$2EG+i%AWISrGvS3DuZWlS?q z%cceEFpnjqQp>4<(||ko&)$xIb_miuyxIIZ9+G16Nf?@9Ce<>?Fg3Wm&dqEL?Or?r z&s1yU=9uEG;Em}zoU*U=-&y%ujk8{%9oYxI=|N`InwK^CRC5D9sa6lkVdJRjB-%&K zMlCxehf7DzoStyhT%u*mdfS7_QFFPLRcrrJZ?EH=G`($YhU1`%O?TGh4X@GQg$ zeG>=QSM=f@Ny99>z?*T#%G>@Hi90XZe^gNVHOx}4QESw`YgAVnM(Y@Nf}vY4*{$28 ze;Q%d&@5q!xBwaB%U}CvXE^bIwd(bPPA35rur{{Aj^b_VC*HnGH!-Xi&|~<&$V;h} zjo_Bt4!U?Z(8GEG9K#`56ynTs<=NY22)3?Qx4hcQsc6Gh{LX$s5_l@X;;)_F}3GQg)vpt?C6&&2jdy=R43Z;DeFY5YIFj* zH%_lIoO%X0E$FFn^hyJt8num{p6lDgtVi9o+cWUiZa*Gpt%D9so)v?Us8A8}a#<~{bRKrjtJRk|v{q2a8hrur)iLgA2n_bPbFu=AJKxdZM$U2PDv5F1 z1*PL2UuqHF8vUMts_{~3tkogLk)*$`SZ3z8K6a)Dg}uz4CZ4A^|F6(N=lfJ7%W2Mf*tn+0m1adXoD{O3Q7 zS^@urvZ|kvZ8{Y1yGFG-NU>InQD8GN7Q?PXjYp2fuoFEo9IS2wK)1!e@#G5uPFmu>$vNb&P$QnS!YYoySm zC)+XdW^>yb*c|__>0;7!IHuxdHZ9`BkTc3u#fsQ0eFnLG+pfu4Qs$gYlqPO?8WWef zm!CW@*7ljO=hl)uX~_JD#2w8S34R$qL)8^k%61Pe75i?b(vREtER1nmNqoPCoz0jT zWOz&Vg|=kBdexPPIw2EMg`2z#dEO)bCEllcQ_a2xJ)<~iDiJ#nB79b zPmI%5sjPVBm%}5`=DTK-%0+Yw7M=9OJf1M$Ir}}hFJ1QW>m(-|h0Vr`Fee*@RaWyb z99d-1oR1uW`!(nkG;zm4ov~@$8)>6BPU0{!3*TQ3U4F&(2#qIj0Lju1$}mU`LscaG z&m-;-x`u(s$E*86SqWbyM^AZbGJP3sW!CPHQTJJn$_*oq$$gfyojCT{II*=9wHT^Z!ZVX3KYB`YMdW%yx&V+19_V zOx%IcCaOln@Xg;f$@C}(}i><^lYJPKP_EV9m6S7zj}^OC#+!*wD%6C7uXLR+$Ar(}hHz64`z27qHz6JeUsnm>uFx~i^;TYt7xaRj;*`xK}*rWB| zZvWA`SO$43KzsKq$5+*E4Lq0c(zQWS_v~-8cuo6T_NX1Sa%WARHcM_sw_6mPx%#%W z-ro-JID&<70Eq~hgAKZ_2%}@$--SW9NF=5;OjDT71b^y>32vhW(Pp7iyB2G>65i0! z4(?4GMMb#oQ21i#p0)ON=h}XoiC6Wvg4dvi+tleLLTk}w4<4_PwHx-lr!w+7jh(ms@ zwHw@OO=%;YT&U++I@uR=|MtvcaPLwvEzRIX3~o#;7Obf@a$3qS4KSK!0@t~sbK*)& z06Otv9u9*j8%&klm}140rKsPs+Y_VYHl;_uTH6MrkGjX+^p5rTLy(zcH^C{6TVRjU z%iu8pplp3ka1WS%nm zLaXT0tfo4%_HtQoR(021R@$9aPxYrxM_E^@rrC?OJ5&{YYuKl(e3RHM%uB7tcCoAK z52l=_xBT^#vzd9@RogrT^(lKjo`F_%{CJcq#X}}np-jHxj5`Eslw?8f$V4k)0XK41 zhwG{qV{+DmyQ(&ia#n<^sv5g;*7=E!BFDL$b$?z73z?YRV5obm$FtP1jvq?Og9*5* zig06cQaikjQ94R&8@`YAU<0EwXN9HY$2NkZVBEMn(`4%kT{kDUad*}lcOa8V2MTpd zAh2;Zi-$ngxfLdrE)=@9Kw;x+m5)2S?-3T zKW*_y4WmdRvd20&5f<~~5?cY^)!%eX_B=wzIyu z{n{}f1=b=R*zW4u?{eHrg>9CsJ+`{NZp@aul{R%nEZZ?>wv^zJyyjqm)3JMZ@apH| zKUcRl*H;fVceWkVVjIZx)_-p7ZNB=Tjm)aNY(~M_-q22gRaH9%g%W^c_&K@5BMyzo zhNz?Uc4L2k_4US}oslyGn&*7`^}%mIfL?9>Wo!<+nXxU_H?}t4ZXOu>!fv4L2$#6w zm=0a4@rbGNX&`h&!2EmsYG?25>VaeEx{XtBwYs&n^IjXPR&U8c1%KVxKY*|XJ9|3y z)EX_{3?-~M>0w@0qLk60$vQxr)biEN-rC0T_UdfC1Cu7r`KNR#@#pKMr340<{x--j%UmU}&AI(^`@E7Q8?6}s`TY#Nki9JZLBlPoS#B#XV{fVbn4Ph5YkE;7WD z_$eXltjpsp%m*lox`YOA6-rN2l~kVf+HqXb1R&Wth>1a*eQ)+=AT?A^kH|j@4#1tw zit2SPRACs}NM#ev=5j#R%y~&^0-&UEu0f!js#JYYB|Os>a13sv%?O`T^hyhTy+RyZ`X5yY;^qfm75jZc7pc`M5y zNN-vJhJ`qVxJ)kGL!}35Q3T%9d0{So&pTa-5N%jj);81lFe+X*=dF9aiDF-TNW0{P zhIn?4h_La?zsOX|SfZn|u&uslsPeWtPO0=G%G=fjxdm}6?3`zy8tUX+PGYwcAMVt& zUMrL5Mee8dH)FXEF0ScU?1Fo9N=o7w`1pg-B*^1RMWrtVmruix&+q$#Tirdg+TsFgiMGWt&5L)FtWns14-+S}p@okN~~5pk!WE;vQSk*ois%fm8qzbc6hBt@uA zy}}M}u}cOPVZ0W-As$~qXAK_AI0%*2AAM);R|-{FbQ+XOa7XHWIM#`KYi&~-r)-lE zC?0xQn14R-%|p@6G@pJeo$6P05q;YGR<oQp`W&d?hA-&euuT4!hoV`mrBy<- zen}-^n7rHMAhA*?KJ4xy*TK3BzqVse6aM+_psXCZ#gtq_P9J$kb3m>(C1Y&qS-rvw zO@MUcntVk$*efl42?I>qS!QVP#FLJiU~mOdD&^{o35eMzW?1@~N9z5&e~6T=n3(1{ zcE3!;i6LJ>@6z{uJ4(x2tgGzyukU)iEHf7n@cF)^eBeJ9#S_kgO`<+L9-!(`a5mi3 z{N&4;P7!MeDRXso)Xi=G?HZzV&x~`Zq8y3B%{<-rC0q&G&&DSIVuZy7Abe3lJ);nx zMgLX_5+J@}Aqm7uq>6#jmd@63AEfhwlBdct{Iwe`Lw1n`uCZ@JKD6|=?JsB<|H@@r zXw%;H_H_TWlbBM3_n^KngUxGmVR>ZH9%F6jM2zVioP}cT8j7#>tn9V}NMwrriUnOe z4g)@+f4hVE?~5ScU(;5Xm&_|pTsux{ONsN-I@aP!x(|;N3Sx@BZo+SC@JA;kRK1)9 zZ7Y-AR`wb{m4{=#zRV_Ta?}dW_{32$1IUf0TCkh(5@Yj=VSK`7O~|qFOAfE3CLDP8 zP#II90>bK@bN@bh1e2Ql!8?IEI<~APO%7w8M*b^;eFmkKR1h2A(e(1cHz{dJHKHCV z6-CEsm$@c^o+zcw!X!%zHODoU>x$1ajFTV;U|bel7NkZbONzwSMpJ;d5F(qAvegcG z;Lm2vm(1gt2Lu-}|I(*b2j?m5ipZp+*%iZ>Ts+$VSr<$R@Mx zZ`p<5?{B57Sy+WnlRvKELIIFkmHmZRB$%Kt;t}JUe}c1u&0ylg8gqK{Dy}}iL>hA9 zq^VjU55b=myno>G7Kh5>yu3^{NrT+0n|FAqxj5qwGf!w=Q+~+J0P#|%Z?omvWV#ab zRE4M5;zutk>@=8(-Il+yV0k*q%ubDb6}|a&5y{y|WA{Nl$eQ2@=JbLj*cW#b=vh5P z7vKn%D1t_rM|S6G03O~Cu(^}hfs`z5yG-=-oc2c8vTgVb2pTnKiQpQTcJ50Q^NB-YMwtd{vPCAZR#)2Xwn zw|8>KE8{&>fnuz#Uf}EkuakV|2ds-@I1X6mAHU}z2@^1W7aMMZd{s^2Jz=s)e7Tl! zaDiVNykYcWZXGuNg|&0aR5`Mb5TBTgz!L`*v7bZVTHCIwt&aD%LZr5pw1e^)w{!&^cmQCIavt5oOV0+;SPD%103*q z(iGbIA0{B}9JmO_sZ=VZ@^FAQj^xZ;%ur7Cn-T@5gfuJ^j1J{)5Pc-OiFi0nrHeSP z!0-I`p&)NV-D6xjIj5D!D24T9!XT@iPL&=@)&6(|B?5PAS?kgu zrZ34sJ~-36W~wPs7d;~NN`e0m2NLO!)b&!z0P4-oKuZ#JHi2E{J zhPtRFC*F_JB_|6I)FhHf?F`k`Pj|%=J}3&bsG1i9qiJqBH9`LsRjd3{u{`smjK)cF z7DW>#f{uIUTies86saVXkzoX^Xyih)7{@LafpUW<9W++}fSGkn)q2CTiQScNfRum2 zvv<(&sr5frFx7NgOlQ~XGj4Oz0`iYj$!AS8|BB0~jP>J1TS~xBN$lDXa?>kj7S2$` z+>3Kkn>#EirV0M|A1MYZS2~uijhI$|cOK>Dh|^XobVE@thZMSSs=Wlo)_3NFb&+G7wXG{cJ+>3J>oTxE933U6z--D+-2%f= zqxEE-fw0R@`UtV5}XZwB?k>78bhaK4< z_UP+c<*-rj@_qnF)scrgmVr^)5;%MOf*|sVd~5xmj51t0+ecAK37tkB+2*Dk7LlQm zH&npX10>)qqX_V3zksfZr^0F+6@=Nzn$Lf*rMFz+n=RH6qyQ)7*SEb-wGdv?YzZbZzD&yBq6TtuLD;&^HOcc>f~8)O`xeksel&DMnLSNz5knRIy2RK!OAM`2zY9>auU$ zJa{y+@;=FP|C1|;JGIA=L68aR&d55;`<0)V`v+Cp{V$ft3#1M0EDfCWgAwO(vil9L zjky!AuAXmEl+sJv-es#t@zM3q2LTN$1`ib`bL~N32s(4MwV{yB(lG_LXDZuIFEFJa z=mc(toC6x`laEP-h=|2)*I^sN^fkKWU-?7U|-1)YrkcJ?pRG2Y{u*8XIkDfzkodu=}Z_4&79tx=6 z1R&4BS)2mzp9?CZwvm}C7zlQ0f=je=WwPj0aSIpdbLp92vxpvGEyHn2~2IYb}cs%q|-FRkxff?tn~n?zs!lfIX# z)Fo90u&69T=rW=ODeqQ3pj+n*j5HOs$?OIFZCmp zZrK>L;mf_Mnc?PY)ptkSybvZkTAUZ_ z)wO7B+(Y^`%=N^tb2W|q^S?l7G%bW+hi$La)k*$lWpo$Vj?8(3u4Ipd`VoOMB zX#WIrOpXLUEtEM4hJlu9Y7v7moGZdxj36(kAgT|PDF#g3WRFkp{v86zlPD(YSDmu$hwPi9TUx0y7NFt|9NpZZhOg@8TV2R#}ukPdao8-Y6# znJ$I_&PB#__1`5!rdj}7)p`~^$NKa74+~by8$Qgi@8SdrdxCZqOm%b*=x{M&i5l=j zRrcx@y>|rOE$NfV+9>z_-uGt!`8St%4Su%GlQRe3w|+*=HOD5r2azs$a@4aAr(Sui z_+S3*gnNIEh?DtOTz0i%0fIZ-y91+{7+hKlU1>|+U{vEZ$LwT>z8&x?zFf;w_O%C} zs;7EAtT)FpDS0zqSz=~XX7O4P*iNmg`Kaev1>tPn=~&oa4vVRQ5F%|DX;L^$Nv!)k zDXduMM@()7>LryCL|y$7-YH%nvMnQj!W>1`9W|DSOZ!SrtmqX$%FpB#oItU}DLbt6+J(_ZqI$k8~%d}gHCvntKVZKR_KMw|0p zMx$TR(I>#_x;tSJR+t+_L?r0H?F@O5U?`BGGzRe+dZWM`_y&_2x`dErdT}|X z6>4N7)uINP|DNJ0MOO4`IhPOel^kkV0|q&yhTIZPC#_Y7-pO7gheJp9nhhI@g@MOT zDyTXLdNm=AJLhGUI}~3FP`@E~r+!r}*DM-W(K{LfY1bsW{Z_LHo5!to+F8BX$RAoD z!X`!funtEat2v#N{JR#Xy4VaMa!8Vr;5J0S7}G$C7=)TduT)*KkCbO6KDkl2SUyg- zICO|y5#ho>*{fbg)%yUA+pSr~1Vo2mdYzCx4Ha3`O%vKDAAHcCJ%Rz#`UVxDX1S|5 zE(>A1M18C(XI9Bg@uKZo%q=R1B}jR|p?3+YVb8FHv%}^}rJR+l52I&^O%*+wayrD& zpHVgzp1b#gzIY{}wHgJu;55aDDITuDZNY({O%jREQ%CwJ+P&LN$Fu(g)|^3LL!jQl zue5&)3*){&aF~ZSBgo$+S}xObG`RCu^41jU^4jZ)8!nR&&qGt;wfqaf`uO>atnq}7 zj84Q@gDhze_spLnL`70{e?#Tj#|EP%J8Gb5nix^d{EmRNKsER>$yYxPAQt2|RXcQ? zec+El8?@z+15&(-!SucP^C$L4XUnUs_d#Xq-_*vMDy-26+FNWs-v{DJKtNyx5|Rbh zUhLw5N^KggzgEFsY+v?zRc~@uGI$N$ov;DMn(Shn?mzipN5PvCHk8sMnF=4%ZKE9D zY(Yi+S5~Jwd$+w%RsP5oLDCY5}|SZ_i)Sm9?M-h~y4IOyY4;Co&R^wBiXQPCp4-+bT&* z%L@B@78uLwXx!dQD+yWT;mcCJhQREyq{?XS_CA?CO=ay-*oQg2+-&h96;7pBg! z@hDi3DFo9U>h@>s>BVAH{^SiHBQc01?^*;5ollbz<~!L|pk|)4wqS8Kv!Pk|e#ZwkkPhUeNxG2YuuOhT*>b{6I@0xlfo!&HQyRQv3V_ z{0zF1fq2t#bq$yk5ro@=Srs^@^ky9^4aRCiSE|3&cD-owf=sA5x~j7ghj6A98)41K z*T!|#0^|jGd7wHurvmNj&cKaBUZ8aL_yU=Q7z_e+0EjnCq8@Pu827rj;fFl!5jXDM zaR#N0zW{MJcSr}n!BC++oK6%dcBKIB1bZU*N1owv5hC7T4@iXny%4E}Bmg2cB07iC`ntCfXfwO-B2m-jNI^xT8PHuMlq zh?y-iA6A^0lbKxNm6wtEhmsQkevuvCuRBj;%d@wK5tc_e#a}R$@U@i zcx7!d{#E2uJfjvZkkt5MQt)396|VuQUl8~C!XcPymCaGK^AcOTFvDabvwZRVE*RqJ zFy!5EAxu^Yc8oAWUgBwnZt@>{ir)Tr0fR(kT1X>Qg7ov9!iTbT;epYl@B$}V%Q710 zPZJX|0{K`UWM_+{>Krxpwzal4H}-T4AMo4fx_Eo6V$k1c!P`Of<|aV<&7P2>@T#Z zD@$KfUpPRXy`Hxl)19D?zOMH6t{(=@#)Maw1uZ#OPg6ltIafZ-4=^=$euBOBc6BRA z2u;qV4P*e2#C)Vu)Yh}jD`T5{2XQQEOT^ZJruvXVqU*;X1aW+)fF!I%e**aqLzs!o zLLxg*tV-wwC?!i@9sayQN`=_~oo#@akO1ix5o|z(UO_C>GOY6kw3nfEf*;8^Nqs|e zN^tk2ghH-^fe|{7q1(0q__Df2cC8+qu#jd9$s#x6K7zdA(&BN@l}jWt9QHEPAk)># zmlK%Zbpn};b-9yw^g?U#R-8jgXziNVAM|8$pJ=;E#-1beFI^#(6)Gt)xgpKxDEkUd z|6QjchT9`Fw&BzVnjZa^FYcoi>Yq5hBLAeJ^@ce@_rRG^884YOqk zp$~{NkQPaA3^$Kx##-KGMbSWZJ5nUFf_^Dr2~M*bY6eRFMb)ZFGni?)R2^VjXy(oK zK;59m`Y0&@nX^>bLa3T+yF!NPX(^tN2N6tC7=vZJw1K5FwuFUD=Vx zSJpW#q>@)~TB2^cquyr}C*(hlziaZ$iaTc@8gWfdy1G!k&9XGUzPQg?R4<~T6ottT z{hkkyC}8W7?2tx2jWaKZNa{`A8JH39MJ|Q|p=HmiFGr-G)mbp24w(Gwcf`a2HqK&hw zp9flqB45h~^Cy=5zn~475gb|}C#J2(@Z0mA6xJv^Qg%&2xpHw__n+RoQ^RM7gvy;dHA(Y$%GIY zOS|(!79Q$b+nPUJ`Xz3JzGF$yM5%>poHySsiemn`{)m~7z+8~Yh|y#9>uj&OehF-E zZFn{{xCyR(p`TIWq#6y!Orbt{)q7+cfDQ*xqH9Ci;4JvY!KisHT>OX|ek%P9s|kPH z7!ZedsgTpQ#BYPi79Z)nz#-H>+_Y8Vskcx&c(|z6p(G5<0)SQDHCXb1M`kMh?xKEA zt#g=#<=A(N3vSqywf$>_j3--rehTGJ$7X@(8aTs$z#yAAUy=NrF)vABuBmebLMgR6 zGGgf^Rv4~RD(jaYU7V+Q`08bmxFLr?`fVXDa!40mxRC#Z9Pg24^tjRAZ|5_vFZ>(# z1F~GkshhG~2F0NzJE2(SuDU=kxc@}Ly^2q2nLQ)k5jef1WEiXr8;UW?Ki?z{Eem&r zc{6`d{?;?exvdDD*!2RWKLTY}!8<*w$v0To%jEHHNaqc%oE_LD;M%CEQjAjm7y8CD48Y=g+csWTysBY zAm8S?+#1F!a4LlhA?L8Fbxp`+PGgnOELeT@4`0o}_u%3tGROC|Vu-RnofW{^Is{Y1 z`akNzra_N_=cRH(1L|y+EqW5TjxgpyG|0mK&Stu6= z7D%gA_MLQ(~X-K=9LLvinh^MpWDhP`pRgZ&l#Gp8uD z4fc0H-uED@R!8qbl!mcpWxCh*1}<`PR(|1*Mjv!Br*$>59ta2v6OMdA-e-t8^*GMovpPE&c**LBX;wXZD0;hF>^-gS_jXlQBcFxrI~={JtNfbNta0UZOJ;DRAcAh@9~bP z{a1FJI1)*5AJigGu+y1lxJi-rsL3#9TWW8ozE|QG+O*8Iu|1GhOh|PK&xYLk8{87d z&FDs3zZxeeGLxw>Q~0%1+|YvP!nLw)mo?~RoD=%jy72{CIQr3z7RnHH&ME->dGQ&( z*n8UzR8O`)LH>R9)c66egnoWdl}Ypqi%PcKGOF+MRyZ&ONnVS*9K8Vr2>EzIzX&XH z@S`k`xydEoXoslroguJdCNGN6S8&G@7H$?~l(J@B6@{N5Qd^?j(w0trx6sQV338;G zsgI%MH2;ytE{Bqg;)}Hd#Kidgj$`(x)?dFrPW{kq+Kw4cKG<29h?Ah`S`~y?m2-NG zBs?Js;SD610DQewzPVZD?jS!00$<_DQ|wlTiItH zO;sL30?p;urH&3F^K6~c6r2}#w{S26M(c>Sk0O+ub9_(ZTm%A>>uHy#U;R4B_bdP8 z^o!v^AcPI^{%N0kt1F(%X?UJSP8;IC3Ry#EB$>UhGiJ6jnEX6peVxi=%Ib7sR$Vj_ zM!;Hm<8^2mG+JP@8ph>_oYFP+#5u|KMfzH1!yorqE`+|bK{Sn>@kd`{wainbY3;8M zYh1`$fz9m2UDoFT^?$E#S7T`AGGuMw+p%++dK0@QE%E1IM1(y% z*_;u0@ZVf;monbm7Mt?B$pBncyL3mg?$m8mzQWtPnE)Sn4y0L!Q6Pq9Bmo$O)_$wI zK}5;Vsb2_8jW>0!SRAfTFT2~|=EbZ+Tz2ia^o-2RJ6T-fii{P%5a{A^|CPa<1abHF zeb19Hy%wpc8nVmm;g)v+N&m(syBcPNnSU5Y3*sVLXmjk26}Hmih81cDML-J6d&kn` z`0x!unPfgJO;!ns-u(Bs^N#SnY)%p6jQ8X)Fm6cW-Q9sE0%_yH3?~4qn|xTAmaucT zRI6?~ET#5{vklT3R`O*1y&=a(GFh0qTsK_D@f7!J#Td*q3Ci4)p5p^-v0MIL4^fU-)tEF8Oz$z?aU#gC;N6tuemE?&qiFCfVTV zIx5a$|FG@o{v^NM2%{(z$-v{eRDD^x_!!^YlhBvWZ^^cGYH_;1!FR*FqHmycTJ2s| zpBeC4QU5d$!yvZ>Rj6b|#bUpOXFM(gZx#4u1}>wTb0hiZsrxj?8UvO<*6&v_m_ zo&ym)Ttl>CUQBZ|rfAPWhc**JPA+XOFs57}>tu+wL4de`9x<&fh)438biY71I-l47 z@;^VRWr+KYFk`yYKJTb@p!G$z&e;(jo*)n>7B!1O6pq3a4yq zGz`BHz$o$*iw6=Fa8%PQGET4JdyLRBwsm7(-iAt-fs&dx|EZT3xd4cr2yMouH)(Nr zL>+*gpz2MY`gd>w=Z?wp{#}KyLw^(*tcK6j@6(1JY)32`)j3~s!v%k20779$QE_GF zJ)s63bf*P^BpVRI5!av^v<$V?jRCPacB|}gb}-(-T1|e}*Sqo#baMm&l~u~8{(!>s z{xnKWd;WE@+rg@y7JC04f=6LE8iX7>$mL`fhMn&)4K z{j6(7%l(xW5CM`y%QsOHV^$>JUfaZ=ZgLv z&22gKsnx=GbVN`<>+CpK6ECSRE23c|taN}jRUl0OcuyLX)wMmNxH5X*sYHdRZz~*MZd0Y@3QW(B z5@LPqRSs}phGWG6DW`qp%habUA4kU637k!wLF(j=z`2obFqZB2*d5gw*n(XqVq0R4$8$K*ET<#x}}Q4@P*QAlh3%oy%3(@ozM>;44;@0fh+gJx75h7yb_ljIZf z)((Av>p$Twn4byJLq^ti4WcGZe(c`21b1z_i&zP6z%^-r%j;Z#&}nu5{5-&H0{Jz#y2I_G5&2mhi)Peqls*(hfgv99JM9z+M;x&Y{;k0)wtGzY0<(T0NAY7u-IT zx5BHfRtpD40s*IMT{`bm2|)QEE0@ zTAUs7)(Rqyi;Tj8sOGL31`{YfrV$8Hc@8N~xM;JR2Cy52|31BmqL0#&akq}%i)XEK&HR?- zRp@l*F#qlR=S8i7&-P}=eA>M5tvr2)=-m1Dr~M&xZd2drFv!)%k+VGKNifS{@Vm48 zFw#?<`xNFCsAKP15$J}*2)PXOqAl~pUFq*>7DCh+Rm6egE~jZ)^D)}DC97eIVcm;g zNAbq@92m28p`tD!e2%K(Cr;;m5rBZ?)%&5@qikC$)zYaQ2)IJge5^zk1R{|l=OMuL zQ-P1b#Z!}^reS|3+!W9hLX>39bDQCTia-|>34!~K=#$@o5oCB79Pm1Y?WY;x)dC)p zSiqONhaC{VD^24Ka9lSmEE&jAzYG-e3(=AY=_+w&O;BZiB-R&yNL|QP>J6nZJu@#{ z>)z;~fmQhrlN$A$2)js}9oJY0cP+)GwvaRS@&w z89T>vr*2RjiQzTS=$vZ|1O@WE@IY1(%3n@O!wtNi0RwGvK|~fz+i!!;;cfBr!3vHT zBR<$X%!1uyWDy8A!35^H;UNOQG;ZgsSO;~JbCY}*)lU#rB83JYXEj8GFkVY6Inh+# zZ`E%RGp)uExM~SLn(xGNMzL2&^cIkGwD9MrDa?^#dJzDg?1DeM7vlQOh#ZeKXz+p4 z^R8_K@AWEf&k%5S_)IY*M-2sv~umES+ z+ejH6?#tpk^JLyRL>?19jPc-546Q|Bq8z=5uwS%Dh{4OY5e{p&9rTjKFViW16o@K_ zy^s5`=Gdc}z{W8*k_iSG~vv=?7yYC%!b}s2P0U_y7~I`C;gu!H^`r- z3n8KX5QxV9>Fx4z$Q#yN*Q|+xyqNH1G&qq&ppRI6(0 zzL=Ewml15e^dB)4X%1fO!O5m!nzJUf*fgPbM_sa|YAM}|(PtT&`4QNA{{AVY08*ly z?1V#;yI^q!ZY^G7b4sLJE?EAk-8CA=!r&p$1*r#cv;GbutZgG)_nM1LZVdGgl3>EX$#6ip@zaw?}S$cw53au(;E|uO?1-tgY1$#h>hnCP7^clmHv#bt}i*?S@lLr0ff2yL6K^y{k>gyWwn+DWxUyaT* z2e?!B24m6rI7@Ns1Q(6xZ*}IgWW3yo&!DY13d$uoIODudke((zam3f1A;YtN!yo^1 z9r~vNCAQNCuvJZIFblkX2(Y6^Z^)dDG=Fpe$->IsOggNo zbAin@glDiFQtpw{^@hR)n$z)hVtc2_HA6eOdjzLT+<+PhB#SMF6tQK88fJuZ&2=9i$*l)#EizZbi#q5D z)^^S_eW}HIX6vSm?3%jZNo{;PZSfd73H#J0yz)5&vI?7f056D~+A*q6xOSyUql%*s zlm%%UpJ+SSTjuB^j$zyi%l~8|<*&0KbC1)W=2CD6r zd`^6gP+nQmHm1eT7%IA+5v{){Qmq!bW(Jec5sGo5h8K}%1+1f10+xn(lny1#q}R`l zw0a7q9efALxl0nS&go{+x6ROGbL80Ehzx++-^)Ug&hy7t;Xxo0awMDo-41z&x$%z! zF7+4KFTswYUN?-CXQFz;%Pt7Gab8E9OjR;X5^o9~j_>SDi`PRLNHuIsl{NLo*e}-< zOl8*5b6Q*DTismK+tL=QIz42YcBAgmndC%X0RJlH+k}~^Enf>k?T)4rob_NiZG5Ke zvjx`%c%VpVFx%hYkRgg^RoP#qh*qc6Loi{-)C!<)2_DNg74Q6ghnDl2&LH<|!-mlH zXt6{D@ez71%i7OynnX%-M6QWs$u8!9@ADLB?~_9LgB{2W-9#kdI*~XC}ZU-i-sbN24$u=*h0P={6}(AofgOoc1nv8kKRzr1k*XL ze#^gy=y_r)|8p*i?tycLcxt4WG66z_Q1rAZI?miM(M(zWsHhmdER>EJz=J5LwErwL zd%a#h9|#Cj3NfDgHag52!Uy47e_&A2ooKprfNu9$%$%S;tyR)mB*d8Q``n?1+S>xi zVb2xNz;4Jxuu%$u5gY0Mc7VaVz2;Tt9V2QB@{I57?P_v zKQn6@FDU;QHfD#-)=64B5$fboEC!;qF;Z%s%!;*UpHx5DqEh<9}Eg7wVQMpJb_CjC&X)x(EoWj2a;Ve$C3V^iC{b~01 zjM9Y8PYV@FTLbmS)C+#S_j}y)2Ih}*^FYpY-mc4jAlOZI0&5Wq#z*oI8V-5M5>enS zUvs>7(az@0alYrG%=_QBjl)9-kr^jR*`Z|#P;P|%<{Pk%4zlur9J|0sm9Kx<+Agz`V_SJrPGn~40n%|JdXvE0kl~d^E z-9MYm&Qam?Hc;~#&IIuQoEP3vrf4mM#bt3pk_lu~*ygT~M;AIk|4ccY^u-}fIJ&O^t(S$ysf?C*mR1*9Y>VJpyPSzrUF6xZ z?4m#s&%)Uu94XLKR>U7GsM{Hd+nLa=v^n&E`9?|WqLxifM1JP<<4<|f8OxGxNMTt4 z&o@eaO=S?xUY;qgirG>|hqtwkRgS?8Go0LA@&JJ)270oTiIVR{_&3L$cx$Qe*qK?4 z_|9V&SDdx?@89}+7f0fNGZ>sQAyA%N|MBa1zF71^0N#a&W2Z)y2orva$N$JoW9}if4dN?bcHk;^2jfalEb&mnj4>Az$q}s2|#+ z&LaNamT~8>2aJ3(oLfPtii*rHFy$H)yvnZxz$?fN%@Q7GM}6zMgkWwRS4Z`Vmoll_ zT~sV!!+(o5iw7Cc;ntXpNwpZriMmHWKELau&JwO;aLANkVpgvJw^wB1h$yH?93d$$=TUsnU>tVIFSPP{>N$r``oX&zLo_x>Wao%pzA9b37p#Tn zofYy#XcmD8#9D3J`S!BP6gc1w#ZR<(-#2F7%aCd=d7isyP?Hj2Rn4lCw=*T^q?^9a z;`@so;9lCIsr4O(VjGzPA#J1xPiTc#_z7)*v5xXjo*)FoaBs<`o>-^8KSs89yv2Na z0&|ORICl1D_!3Pj81oF7d6iJL^#8;Be-MpMUTtSDLL5)Fw$)W?hnaTDeu{lLPJLK{ z^7Llkv0NN-wuh?9q+kh(ndOc+L#$=#tK+en;>3&YKG#?d-?ug29WAl{=6=6+H8ekd zdLCfEmo_|pp2Z0i*yHSM4k!pr1s-ON4EeB~A}0O_#OFy1m^P}@R`uD5S{J*g1m`@! z(Q~Bc6|Fp;Bd)J&fBex4yRWGaIau^S?O6{(LMSW_{T_neOca{%1(iexEQMBb_&~{4O@(^ty z(ShV(T-&Ofr{@_Yn(@1)fRXFM`||Pn$n*Eee&fz=&Gs-d?~bg8Dy&B;=A)O=YGE`H z48z`l;j9#(a}_2+DhW{JF0bsA+7GS{w18mftMHM*WCPl#Ptub3y z^^x_#26XTHu-lsB4te@@zP)|^+UYuQn7NRs~8a2mNi<3)~bj$l*1qFdD_=Kn7;1O@+($o69S;L3cq$W z$11>(H?x;Sxu0SzItpWdwbwzelhz@8Kg>O8OL-bnBlaCZ7KN0S#N_M@zJB@lfUGB!W^|O(bf%A% z&1H&Vs#dX9{4H!3e6pi?MzZn{5|hlPXe7#ht@F}P8RcePH0x8#C*7cK|HE~st_dvr zQ-IKFz|!by6|V31;{kbhNo0PM+0@BUL)b})dmn=UlkB={D`W8?ykE#$Zg9T+V zEWA8~V~8O6q)6nTDWAAe?)xW;L=KPl~QCxFgKxK%I@iar)9^7YtEq%%oT;#sgv-VvjMg)sd?f z-^>ICNYFwy#x!D>#htn&J(-s2a3FGFs9S*#N2sFFi(=ehoo$STDpw?AO(-AGcjPk{ z!T9mrTzgUOZ4g+c2CPS6V$^{gpXaP+3&Me2X=+%4+q(P<+!CRtc%@?wq?sgNyaj6) zuYT(Az!43CAK>e^rk&`ppU)&D>b1Pk=X+u2#M=l6rMHlppz3~#Ajnl#DAjDU1SE*W zc6oyOz$&(Ri1-=I!L*TEET$(olaQJ**6k)JM7fhub+R1t5Ri3HD6XhW$MRyHn2@CD zD+MG}o(j??{J^P2acVbN7ZfvGn%!Sq=2r{knm^jbgy!MCfS~v6LpMS8+ZxTWK|)17!W8vW5ZK3dc^kAd%#J! zl`r{(F#`>9|BLN?i?6>_aQFTfxL+_Q{(rbVpGUhR!81l$Y97NYl2wv6Zy?nXqmxau zqc<`IS!o?4Lm*i(^X)}TO^*A;Xy>d6gdrXV}i|qf(do47+ za6Q^0IAC(dT&i2-z+T;ckeoP0tp|uzRpQk=w6fv6wN;!!X&xla$ggt_(&x8@2LI|A z5Mta6-{3)3KIfL>qX08HP_=gMzl+6MKW7*`E;=(+<5(lvh(+JGkK=Z!#+3j+1pprA5uPV96h9D)#d`cLGh_hQw94QgP) zDW$~)?hF~G-;vWFYbEsw6((IL{b}HUBs86djR97ksD<>3T@(J`RhQ05CmG0^x&OxU zvP$Aq(z`hf=yf`*7z?AmtAJG;vwO?rL^^esSxQRE_dH?mpX#VBZ5shoKa?DX`t&=O zp$fc4tAR@pz@@hUeS!Y)>pZ!;=Sm@FX~oteP|G>&3sBpU8a&#*QAu-zrp{KQc3n{n zXUKyPeV1_f9`SBGR65-h%%iU9`7fppWzE=sNS<|!Qy&Mx3;|Z~w1m;**;ro4_qAUh zzd-H(q^T*^_>HrSRrV$ zaQ^{$Rube!Gjs8Q^v9CJxM%JN9k%~J2;ZJER%!(%47NTXry~SY_tL2n z1+$0y4x)^Rq*+Ir3j{`TzE5UDjQ7$>qATVx;^CbN<|s{>8piWq1W$VHzL1?%t_NAc zY@0w}rWE|aq?oR_fE56|9|8s|l-($!NN+?AMlzY!D-Mko_M#wQig8M`G@l5Ru;h*` z>+`MSzcBU7z#oH?-?AlBVK3?b1K@ojkE@yb8CtFdPfwRUg^lJFif9E>ht1jkhriDm zs8^0nMsj^BPgzB5v~8(6t8S@3-AVJItxCV%Y1BN#D}yrTnYu zu6r+^GW?)+ z`22R-?zRwK)}!(Lr7h(G5{I~BCto2-Vdym2GgKNlatS66-6(t*f-SjVb;>_a3Pbpf zx4L2v3QX??2M~e1ExbWvxbEW#@Aa4@mU#MXM%XW@`6Aft1Vr%#Mc>Rj+G**Tm@sfS zMdcYOU*l>L@*hUB&O*A_&7Yu>L994M(D0Lnh#rC~u1^wKFqSCA`*VFPj`nq|xjnKZ2lqf5BXQ^k`xRW{Eisk8E5fk zSRRy7vKaoQ@`LRn0&;^Q%|{?ves-(`?zFH$TRLA7Uuj!RLKdGHp9$Av4%}{=HDW`j zZ_O`1Xx@+B;n2D0UL1Crj{4)eLdBiG0&yGCjMETn$)IuahL;ZN-_1pjqmB z6)89@ga>qm33HZ3syIHPiP9hMC$m@r3jAWRBzew7k?wt%TY+V)ZQwTtGj##7C%c+I z=rjs45Wp&`tj)HB-^Gyc4$Fc*CIU|%witE?x})}VR-yNFBQC}LFUpe@)43IK!3a{N zUNO}d&LOP^I@UXpv|_*~i?njVjC`O3wt3)~A}Esl-f>7oj+2rVdswx=g3GVXnt0$b zP$^|eQWZwo(ZBX5)}Y4RhBQ?WnpG(SfX#WY`=prSKHoF zebMm9qixfwB*ec<6PA)shxN6W6lP*minU7wUr38%2)(fm4Zb>csdnfvyS1{FgcG~3 z&M@Q`2wXx(52In%jEh0@l6iVl&cf>g;*D9#Fm@3W5k+VwfxuczHSg7)N7?X>!zYg( z+dT3s>d4!`umuYql$V0_Q0Bc``PM*Q;THRXw%&!vQG@mz68T#EEqjJ3W=<=>0)i^T zVO9}+!!ST6-H{{QjKm#pnwcEB2@6>`DKM^s{HS&aj+SIsh;`%@Wmyt`*4Qr*|^VFylr^%QeO?PE-w2umYfk%dQj2 z6&s3hlW`*%iT?xLC#ayd4iV(A$dCw7;Qlk*o)^X5lke6AqQ*QJF9{28>Md!(2s4}D z831KnvSRp77~LUgSR%@xOL8|0TuDtL+CIbz@pxzZKD+F z)%_gLWtegv^1{h$j$Fa0rF4*ezD&EXJ%nW0O#u7=GCoj(KWGA+K;v6FbK4bjP!U;A z*+zJgp`Bi7rWyee-|c1kBg}+qe01%ZOhw25G$|_q?MG zdxwy)kwsYuPIIcTeswc&3(M|H|bTBjQ=VZLu7gcd~JkK8b_)0?sGypui#Ny4jGK? z84dbVTKq@1Zy<9Qp(dIH#XIk3b0IQdr+>9(^=>hF&5{Ui=rwfx9q@gp!_MsD<3a}8c+ zD9Yvc;sKJp@-y0|C@-&fOHu7Cbvy)@uTkB0nz(Ix-(+}jq=g~gB-SCDzO>}(jj&*$ zca0uT(0y#xI65kFV_##R5ob~f7_fu&GOb>#nVs|(2S#GKC#aTcAAw`ZJAB_SZ~Lfc zcZ1Wk+udcT@*!~@zSNsVkHQ(#tn8yM`UtUQV#HgwO2>p0oLZg!=U`$aB9T8u}sFMIK*3eJ`V%m7^={ul`}9i(E<^>qn=TF#x%$*%s@E#@nEy6iOQ@QuXu?~pWmbn zg=+{z!t7oHa+8ZPH3ftS1ncomrLsK30kkO()z@NH2ac4eD|!$jzb38MQtlK0tDnx< zrrUWM6foxvRRR*A)OiW4O)#${x*;&WRxHPw$A5A$vYuu?_(fPepCWxO{@b1Paa)*Q z6xH`>AF|r%`xpA|&af2X*BA^$Jh1@1U4tsiMKNKYI zl$d*sDxAEs?1sj(8@oq`o}BgPvhJt3cQl4xAFBOolLb*{M~gq;Nd#NVKBD=Cofuxy z+VVWk4QC*ay>Dpu0*{V*XS0|>PYd^g$;D2d+IG4A@g0Z8h7)#Ny-v69WzqVI>(0A? zU9sBH^*t*&jOC9lT;7h~mU_?76VkS3IgN9ten__;i0;P3rqgbt+HxHS=o4bH?YK_A z0s2lpQ|J=~M8GUb zj$=fc&tKjT$5VLDU=gAkFM^~^rSD}?3pkc=QD_*?FIhXD9Rpxij&6XPHtAZ($ z$~scH(PkijB@$d*aOnrQYnG|X@IOS1XaoTfP__fgBMsk=$a0@X@e3|yk@RVF8AZG; z5D4!O$I$-rk-`DU3s#2tOyP87GgM(&ii)^Uk*}KQw2U(6m=Y9>LgCmZ-D9M}0LPC;`lW>6A z@0rp-%F_e!*mm)!OtM_klu#icmhYFYU4U~_@|1s5(ow>eg(i*GkrA~4(*mR({fsHK z7^3MXx1iDIT}h6Jn;*e+$pJ{qG>h#E{CQ-Wv3G>90Gt6ig$DA?cFbd54#LATi8R{P z^TpSkU|j%qsOU7rU8QrH6LZFr`S%)A~TOeS9 z^CzGi$b4@|vqY0rzhZ+?i*NZco6Gu2HAuF{VZaWHTy#ieP{D$sl^2uip-&m0JLBBN z#7uAJIbiwWiUP!?;eW8(n@wx;2fI_SfLCOg_(=O4GD{s6!_R5JcpodYpXjhx#1Ae^ zP7y86bpM0hp<;*syoW*kN`A20{0F<~QDKGI%vzfMgWdWW{Db;aCKgf~R8L0*fBu8r zi#6!(5}BkeJC4@wWb=LuU_TcPmKkpifp}{KMyzQ`1l@l zG_iMsyU2_@(V8NLH%54-7@JiU(XIdGf@YxBsx=f!@9M}Fk?m~oV7omRCPFX5ZXBVF zC|6REktFW|@FcTU{w79y)F;C$XH-ES<*(A1{b9Fvx{YfuZ*4zRU9k70h2`fPY(dX(Z58F`bAd2v>#Cxiu+F;J1lz~R;yp^gy|F{cU&>Uf4 zF(Tvp99fZV=O7iR`=L9t9Ch-lyh-2SLJLr-iiJBe3SH-D_^xn zF^X5%daV(t%I&R`J?V?5Nv6fCH_Tye?cg(O>dg_#w(dYCukq1L+UR~1cgllFh934W zVhGPabp5^zl{2PGohfRi`}Il#XHYq~HZYP&8v6TDhh~V{Y~rMw+mP{#xG1l;V}xkz z7lRg}1-EUkY^rK+5MHnhU|z_{GOFSV@Jmk60;~T9vR(kaXQ2Xxnz5}Ht@3H{!+3TF zJ)n$*&Rma<(S@kq(4x&F4inw&&CFc&AI&_SEyHMwQ`S1P$lM+_jEAQ&oKRlws=K>_ z2O^m$q>AR>n$4MBD)>LcG#T8G#nhNg^stZNhH+@@tkZ^T(i(OewOXINspKP2NoSCM zszYF3gHj*aa}&XJ5P_`*3hBpvo|d?m;IWGJf*}{EIfNuGN)on_0hN!UQiN21C6?z2 z{rGY=$$xy=Q~XV9It8$Mm~FCd0l!G<&Lngprmsl(a&a7_5YkERbr+6| zpnQD@;RMxfqN3I<96B)RWJ16`ACwCs^ODd(i5e9|KzUcw*#ed|hY`ME2`&UEJ+%zZ zrKW4N%J2%hgm?h2*SCczj?p!-gjFCMA1OMH1@j{1D{ZpQ``@M)!5Z!j_WzG6KxNNuvIfEsFhEg8_uSCnL0x zJcYzCV=-=fL0-yVFN~LRLYCS4%cD$JFB}{{Ax^cK0Hj4dJdG1*@=v(m4V%M=@mnmG zu9CVMA%ssDzi6=!WTNO_NNPtpP>ZB#f7>Gkn0jJ-Ni=g)-6ue_xfEg%w4XX)(LxZWek-$5}9lavTz0s=L%_;xH+@hfRVEf&l z1mEm?fN~{yyP&4IuQg^o5bdS81J+6QFreQ8B4DpMLv!2}8}|=Ro47o9jt`vV1^(}) zb$lE?BoLij^vJaz7*GC&Y@4GOR6MvFSZM9T35kg#_FIo_@@FKJAkyG-bI4v{u7SO{b`P4K zgZPIsZSQa=E*Uk4-hguK+kg3Mi^H=KdoM^`&4?Dw*%3vS4(G#vXbO_<#2}lHWkA}3L-67V2OJ5c7t+dmV(g5MvCe$-~0b6e4I)q%~D-B z-?kY~%-&Qj^hr*rbw~BET87z$L{V{j0twgg8hh|nru=tC;2L)%ORyZ~WM+SHpl0+N zDu}Uj!A08M)QZaILKu^*_wQDX?NHleArt^vi( z$q36AoZ`m(>^y;C?3mWV^oy1?ek;A$!&T_wa^WfL&kb8Px2N+gOornw$EXTFiGi>h zez5|1+t*H9xX)w9*_VYobA)Ib6IpJo&$TChg|7b_Q)-MYd9ceE7ZV!kZZZ69R{pRT z@W=!7Zb_FT>ip!oqIk|1W{k&-X(0CE*ns=_WN8s=Sx)=kR6DgVmHQV6?+v0%p;j_y z?;ZeBklA0zh-_pScj=?1U0oilkg;_-2@#CbS9sDgeVD()=hI>FfSz`)+S}gy6UHQ7 zop8H|aHgQ3!2BbwUyTPw;6yzARw^nn)W^(a99{k+wY_!q0huTNBel-JSU;m+9wGFp z3GJIVU4}RRBelogranChIYsyXBeiy2I5hf??U`t-`gKBiU|VI&$~b zqs%*9|4p^u>1zs%=00#dZSvPxi~owm3AdS8oFh=1kx(Dz&DnAUy+U+%a3`bxL>K4I zaVq$EZ)<9Mes$f#`TWy-yB#h4kJYv^1Anr?CfMPiJ}>17N_~9``OiO z$8W2lxX!RPZEE_)=&6)a{J&KD-m?BP4^1;^aW0oD|8+X`6JpLLil(bfx%hYAK1Z7Y zNGie`HO4aqiF@<>06&g*vv@~06d*5>zTlr79lh=P zphVZ4h`t*hZvNY~SC`ecgx0nfh1vW~Esfnh(6bCr^E0$f9iPCTJ?-6kqFg~5I#7NP z=~UosqG|GgrpJ!1LlQ-#R)iPRa*T+8wtt~3&G>Cf$SR<1u70Fp8$c8=oy47(iASS{ z_uSrhVqH67Cz`u*#JXg_k~ioHc6SE0yuysu^mhtmT0wuNWO4516DjdD*Y-z9kYEOA zg21_d(%zj=c^rh+r7E(F@qIjITqU0kxEKP7UaqKZI7z=fvaXjD4_~lKFT!>HllXSY zL!UUKR{8wC@Ud{)kZ3sZo~iA-*><{^QY%KYbuvh$j!}o&P4_4f0kfD<+T#Zd+T0piu z{xNMM9I#bC?Du#vBM8mMQ}-_^W7+^#F0P%Ql1(JfpD@ipf4Fb# zhve&hydd_?dj4pJ5kby_!`V8MOxbQUeP&Kcnm4sGz`ahhi0n@cC(d6@oB-&Q{b;>j z61^eZj3yK+{rw_Qf9- zY~b4jrJ4s~7_7c(;Xtec27uPgy&qgLB8a%Akk~L&0_RO{Mw{~7Wk2H=#ex^O*jlWQ zCw18=dwgty%lv|`%rwX@t#C60u-sKR7jIyvaS()0%Ea>3Z`yOM{<2BC&{eYt8|P^z z|FV(k6mbh}2^3=H@oEw=1OnK@81~miW7Uf_vB{QAwna7^y&64N@!FhhwSmwMvX^&l z7&tJ1bdmCfu0{tQNK>b*7NEP>BDX-})zDQyXNq=^m{&1ore$E=S??oT(b^WW3= zBiMt(F&;``1^9yt?CtB3L@LFeaKL5$TYy3MgR05Us*jH@8PQ{32PwzWW zN`Oa$+yn_ifWiqp1&j1CTGEpEw`zd%0&^ij!l4R|Y!rCc3U4@Q*+FE)R@UDrBycrJ z0yObLq5~j?nFpe(ANEQPUikZ|FT_wOlWh5C6SCw{; zwjhgVL#q+F>@D7MK8cs&cnLy%_4dMyUt>tc*-tq+&N(KUL~z zu2!?u9=&*Ks>eLfhLAv(J(*k&0<$HS_=HKoh}ugSXv<62wiyf+!e1WR1_ClI4S6rJ zXj>78t=gbCwAbHeiPukp>bd(jxB>&%GdlCHc$&$K*mpR+T^$(3HxC`pni3(jQck~t zN4p*&5uPehP4*!c=cSki*}g5u5GO4+AI)JWLk7`AFW-Wes&vI#t8^OQt6qIrsns8r zbZu)xM}!bbqNw39&h8;`h`J36G#~4NQL^Z(+y8`HJ)INhWX?Z-L|g{vHr!4HW+>@U z%P&217LbNgM*+}Sn~AG=G*_hC0%d{{8l-`ViawarC72Z<#ES%p--sd@c-aRa!YDnU z14D3^@Bls3!k{j_CwWtqCmf1IZ5*ExG&pK}lHye| zAdvNDq*k>om^Ak(QXqBKb;l+k-J-+XE;n~8Z-=|Cjf_TMmDQLI=Kk+H0Y|0eg-4WN& zZTRh!+5%Gw23uu-eljc?0z>i;jG#<^xqpk|QWm=Z&cQk1o=Gw@&BVgk1RlWaB9TPG zrb3+^C!SycgJg%md@MUg>&E##faztfbrXm*C8V!PN=VK8_rL6zz}0B|W*8DvrW*>V zT)5_PShNw0n8?1*Ia)$yYP@@CE{!%_kVT~IFBS^Lrf$1`{^m2)LSc!BV(Pl${%hkWzxev#<48GCz~JIM-Tx)$DvM;# zUlLtFAj^NfRljI!lS9N{RBEkjR9wH|oa)t|7__^skLAK~kR5maB9aw(lueBj>J`?wTH8(*@{{NV1-s ze#j5@pQO=fo`SaCMDmTnX#A^3K<;sRdwkA`8I1X~4Nd*6**0aY3q+P5DDAiv6pesC z|4D=L?A=YK`avF9JoiP`sv&|7@Q3kXPK<=*c6SE}ejyJR`N&Fg6#+?hPR*qlbA_j_ ztRL^`O(|gycjrV>;*1<&#DUhL!d<79jU6Ig^qm(N)T{h@Mns43^l$st4%y{>VLj8q^@U8kvMI3_0c_;fCx1egAvjIbhq&yhyZ-B%x{-74X#)9wV{oHXiq zWy=Es)n)V{A}7cw3KC_@$J6Wg=)^tVEW?cDD^(gi5t{M{iE$r7`7HF$R1jRvlWs<0}ypjbsx%k#%dD!h-% zhNlQq)JQ$4RgFJ5&tvLC(w@fA^qlpo*g|$;;oPj@kjPTbiNO_^*IEC@io<+8w`%2u zh_+uT3j@=@p`d;-%ynkwNq4WAKXrD;l;^VPNSa<=H~1rUV`;S#tqs7lUG|Cw)D-RA zIKz|%AP?;IQXNW<5_I)gOoe0Jn=At}KVhFzX!RMndZP{YOM0$qnBETfLlrcXfQ`;W z$Pi&r;x1kl4OO-_T-;1IZmrZdX$Z<3wO%B#%+uMJqej9LZnPxdMEjvFfogKh8xMX4 zI4h&$-ZR)+l(>YhyXO7YzM3OWJt-i`Rf5K&95r6aD#~ZR`@57lJdyk&O!W_>Kn(ec zm&VfEy5Cy(mxWff<(qw(*6PIH(VBSqpagLtK)tHmv6QH~0k0cZ9kg<6UR%Gu(Rrqh z$`IXU=6pRze-6O_Lq8B`!hru7lRJQl_$a}<_?fjm{6@G2{_?m^ zoSzCbj2M9(q<}bvsv4svRmvH608U6tj=`z`7sodSGApMLR#U_J)Sv$!QIU`#>?$oN^v_#9@c*t^Ib@g^pO*(vG6 z7McwQDVN+HvoHvI<49(OdI8`|RlyI;SBC8Z6%rd0TeX`F<-|Sl&O%T~42BvxN5;)B zg~6LX0}tK8Uw#tH37(={91fh{&8e9a}G2G40WV2YbexhyteqJY-CGO)jcC-^Za8u?A-hXCSB& zysAI>e2dGRE5av37GKhb5?W?FJ6k?bh6J39I4B|_Tr_%U%#ox*r9zpn#JiYE`W1)B znY;@XO{GI5_Sh@Z~DQ<5X4S5ibld--E zsO_?3e9!_uEOkxQ7GgdP+gwAwn&{;B+qSdw>l>t+PL{jq{26bxR+!I3*ys5Qc8yL$ znBL!@%v$|j^Mcxm@dz*3=#$50z+oupsM5AmOx&dImELC-u-P&a)gZAyIcDcKbs>ox z1!&h{5PSdM%hCgC(0=I3{LS?v42-C6{!XV zwb>EBQp!TA#ann62OFR|pN@0Kv#5HC{;0{cZ5%6ViBTxTB|u{ru)JFtI;AdM@Q8ey z8m5tm9^mY|-SUES&qr}(=wo?f$3&DXD{e+Vp;$z#r)pK+0rL82wMNRN((nSDnB(DQ z%j6Q=cV?rm$${h2rA@gQOF{C1ghW9Bndk*Ay9=V5N*wnHA|q`^N-QmdJHPz(AJ2YA z4#Ox~b@?ul--NsU;wobn{cZ9zGSxw1%tGO4(qg-qkSNT4Ri>V&?@m}{0QgOjc=U8%q<{P3dOx1 zJ6LKf4hxB+&bu&2KJoUrh?#nnavoVtFKhKJ6D!27?-PV7O|{)e-KODeKfy=4EK9Lv z>Q8!e7zk36bn>t&4I3R~w~cB+iN8yC2dR8|Z{K-Q+Mv(~1U2XMCKhpfx*If1qLzqQ z7dLgA+y@jMtn21ewA5`jp16mEqZFk0+oc$7pr#;9a7gCG-xq3>FQY#k<1q@h580L= z5~%7Cab|i;qmH^1%|7}?L%J@~Q;#M2QFi|3*rg`;uzP=Z>e$mR>H*E z{$Lu4AUW)G8161Og;@UzN|7)w1uQ)69g9Ke%lp?IeqTdjpmBSciA2o5_B^PI5Eg{1Hy zm+V;{Fbh*E99X2+hoN0=`b!(LT!gH{6Egz=8Z@CvW>JdQY*h3V_{(0PyUdx7ap-|) ztB4XdNxx|&({!!WBMiWy;C3w~Dwo>#!jtcr4pK%VoG>1oD#S!W-E0sC9_UR3K@CY| z5~U22ep3dgvIeh^t}`O+qg3UH@!OM2pdG0Imf|%b&E$io36Kb$t4o@j1V?r&e5c0J z=?xM(^>XAsVa%2l zwC;xeu-~5Xz&XIUQNnL1q#%3(th!*+;DX+N0Wk4xwsZwFq~}Bb_AhENB;DY z8prkgjL#T7j*rZ12gEbZ#n%Jk!DBzp&lC>jZs71R^{Mo;grf*H4eJ4sep)?H9yBnv zn)ZXeb>r~Xe@mxesl6E^Kq(TkL-)O2m9*_UQ->~tUM|d#w2x!(bqjOUVy!GmB zFy-{I>L6}0iafBPnTj0lGK=VkPQ9d{K?HswVGn0hQkl?uk|h)O*Q_qDc0_UpGYjL) z_2e`^#CqOq))HpwH_sWA0uqw4Ml{aW#w5NR{pM=%Dz2vk776hu?x+!Id9f2tK7Oy-Gg&uW zauq$$*91jV&7bD5xnsfO^@Cx&atH`!J_yE32+obe_cw9rK2|(qkV`j-y+*(l8GWT z(i*`TNZsJ%DYrag|B8r<$(HS0v;CF(@lri{&{%E4aPRKwaS!;bJMI3iU-kwrSukZ$ zz6*zY$ev(xK4+Q)_8)e`fhF;PKNwruaRus{%n#8|eh?UXdfzLqkTcF<+Ym)2Epu?a&NJ zgXFiTcX#h-$)XNJrla)^wMl-BRjl`s#HHlT{+Mw{nE;=!P*80gW!b;TxR>I{HuB!A^d#p?`V5Y zni^Hr`35<0nFy(we&IK>MhR2Stle-^QpBO4!z%U^IJvdSE;Y@Vme>%n4mS&JEoMel zviMMfBk=@V3Z$YO(JWm8ld;++Tg6XdKbzIT_gdx?&6$Q-WcOt#m&3@C(^(k~!j5OGf#u~)@G&>iOj)#cphK55 zqswL+f*RGvr5T8s^8ykM$(8{tu(RJCw@V%M7dPi48rOT37@O_+F0ir~f2N`y8kA)6 zLmLAmc)SmY3iKW~qls~JuIl1OU@WTQM$Dv)ofV`OG@C}(2lVRjMmwQZ<3dkxxVOPx zlk1uPTu^r6^VF`4T!o{c@a7KM)?gTSwHJat(NHpweCTi^D1(V zP4MZl94k@~{te8RwC!u2;zJI<sT?+q`6|t`KC^qK6K*!D{*1H z))^JXd)zT9q9&z2>@)1tQ5yywI?O-(udOtU>Hy}7N>j(;8MWa? zS1LGI^~GIzcfk#1eq`K@upgPD)WkhV$i7W%m6ryJXqYo8`7U+-^{Wcn{;%2y#6* zI?Fkp3uS-LNcO#H#k%!jzcr)AhhJouI;3^_LWrs(FV`Rd;tAXp_km;(a~nz3R@+$l zoAyQp0t0T_DVvw%Ja@+;WM3{+TSZXmk1}a<8bcVAwfk577WCMv@QDKC?xJL01T}Bb z$5zWo-{z9Axu4}(<-4;ixj|UOPZ3&#$N?n!CF5?fG!J7j4fzUz^G|7>t0?}zCDvnRnf)HlUPbFvAm_9CFyw!3MvisMTG1xv0U4DDDQA4pS-8il&@P0r;}pHW&wGEs)$5La7solkN$C3c|H5PfJDr!4`S~2 zp}9dUB$@ih*Nnt8FSQM+m;Ie471$JN9EBUXQVL(0%2F7(jN;$2_{X;UvE_$~I$Gbh zD4xCfyffUo71&b%hbUU==a;iTqqtI4>Yu*BS8qLii%ZvFZC~gek+qKMC5gbU$!0eN zqF``6B}A#DfC(UpQCCS*Jr}C9J5+lfdCo#!!L@CPQxu3eQYW_Zp8(+ zkkVG}I7^+|hY>CR<;oS2`2-J}k^oc12o?9VXsYxd#(^M7&$NQ`s!73CA#a^1P z=VH3S&2$z_%VEy7Y8^6}?66%>1mBq~(~a2-SgGx-8^a40iW%wIzS41EU|PA86cRDk zy=E{_J&;$aT-X#pVM$O#B+Ipj)_HkAMb=5W-&TpsPl2iDgs?Zgf9DHYTrmv?d!XNp zb{fB(5n_PLSSxW;S3t82QPQx==98}GK{Xv|3Cx*OLFQtH-~7L`Pp0;j z=4u~=>+@Bplx$%OPN-=H3In65t~l%g8?q_Hkjr1w2qDgTd+2Zs^Q+pBOCe~x`n5AmJvHvyJ$#i7;U6wjGdR8n(19?vy{&qJSL&3zEkh4C4 z@wMfm@S)60WBWqFqUb#?!4fg6PW}hC{-mrL*pfd7|HeW27Q~TKfUmT`_hbeAmcQq7 zbXJ0np}Ax6yZUbglu!=_v7S-Ei8Lneq=MY)TrTBIVbCzNbFi`kbfu(%2#O75Gnp`lztzyX z3Ql}(LEc79XvIPxt;>t5`mpc+N>Fi;F;a?uz{WLAX~~D zLJ0ILyI(*{zVnM3*S;0%-!i0LuR|HK)^5(r++V>8lDQ1acEYCCa$o8npUqzs%YX@- ze43WzDu^$jtN_X7A%cfds-`*xfdggTlGy3#>F#WN`qR&&qo*%<8~yikwV>Xz2l z_QFq_#+J_R=F(4_dtxLec#+BPjiUvh-F|D!`QF)s*tt5Cd4i;E%VKTQMzMnllyEn+ z0i83M6CxXHIgq{O*hZRlgMt-q_JFap>HA+(NV2tBOq3!f0W{1*Fq()lhcP9~P{No< zPYL!0Pw3B%(il`piiJ>O)p0*}Y`;YV`3yiOY0B#i<*d~Mh4nmXk!}}GlMXf>idVqU z!M;`@KO7DeAj0*Y2}czzI-ajdX=1910t&9mv?M$W1){(-CYQ0}yOH`9Iv~?PCjESAd#!qeq`S0R&-kwZIQCl0&!6 zK-ZJewQ^6ymu_>-_*J4|QYS{!qFVb%%fN4vll7tJ1zanR`&MAzVBo+?tF@rM%WoM) zAOSfpVW3rqce=yJs6gh$%@cBW77w2-DCBz&QugSc-(v-Xt0*i$4WHtc5d8+ z{)VxfFyMvuHTn*pR5;M!cN_!#sWDoDn0FpH)LlUy@fj-osS*ZgcHJELypF9X(ryr) z)r_tTD5MtFb0LyF2qK^2#E`2LTB1RojcgMP*cgs%6MXKFG_(}U08JOc1_PcC;IZ~^ zDMy3w@sZ8LQ4$-GEJ@MNz^$Ete9k!z2yO6hqevjeKphC`k0_90BywB=AhMDDc=frV zyIY{man1YE8j3(rds=;x%`I?Z96KQ#TDS*Xn+tdbdYhlpb_G}MV&&lP8y!DIZ0|rZ z)tXk|{&PG?ZZviy-lo&`b+T#z&Acl?0rZfLGh_?Wd2mf;bbPSG!?!DKv$V}1p{k|P z@VSK1)_1?5Wks8@ZfA?uTGe7f8utV5h3AKdRi(0*O1Ta74(JB?!`-)yun&RbF}zii z`dZ8~caZUVp9l5$%0$TxGa2JEO=fZ#W*6SgdG>^vsfK5_!!GFsF&wGJx%G=V*ekQB z6`Is?91G$nXD z=>|GwpyBKHm$Fx2H`qp~v@b`K-`rQubxF0ztr4xPk zXTSTs&Mm%a>B3Ldz{ifUi((&tgmE%@yz#OIZ-XJd1L>EW$`} zwS|RDbk3gqwWuo@{dc2jZvjTdLn#5t0eskX7V=fgRWXV6=y>WB%$oM)#O9Gy6AT>!d8lg6;RNlAS-4V zxA>ic@6G~Y_jm9~nc5RT4SyN{~KF)sD;2QTtUIJXlqMjfIOrT2ESm^H$qBKW^ z*9VtV+&2M=INEz<+YNavwCTajw;oVO=>Z=7x+W-Gx=f&atI<5*7n6>aenE~=RE+Y+ zLZ&^w_l400GEw&hdy#%J!)cmiI|Jw;!jMF82RSihkZxI&|T(@deW+5s6&^ zxzrUzBLz`sb?n-L$>R7D2 zrweKpn1pfRFf!R}j6caM=&70Aylq;~(JC(Zo@ZfpHieI#ZFOV^?Qd-p5OmmTMO}>F zA6w(Ahv+Cf4Kr!XbP2Y;HnyUjP2<>qejlI9;~3gluT zP;oLO2;sWQaZ4WSIyDg&tlieC{ufu@7@S$ubel|)Niwk~p4hf++qP}nwr$%spV+o- zetF+pb?dwLU7cAZ`4Pp|IXt9xl{Oe60Gw{vxwJOR`<73NKGn5TqKFOAy@F}sdL zkYpZhrjl2!oZm}~j|*2Xnb)hl2P}8}H4f)a)jnHSy>cF$IyBFo*o(dAY??ei2cFa_ z{B8{!H8vZN8VI_#hzM6?O%Y4lnmN*fL$Z0A`NM94Pm;T+Qz|XCBXA&S7G5cWI;$;$ za%8|&NHvG6Zge(3-Gy9a#dpuQ znCLUGwu2SSxvDZ4jTm!JkE84LQz!#KrPt|3cxLF$sL}QH-teZ+FD$`B*HO~0N4`L2 zu8hbyUUa3_W#O3a3ba?!WnX6Cyl#R$aDnTzW>T^@;?+J-P%!-F^38@PJ4OSupBV1+7V@y@#q1ByzvOS_ZY0&V}0wLyX_~Lh~JnzwS7Q??l7(*BtuW zUIUwOLRcdw+VjV<_U>o*&5W8QSswg@E z;YXc&XW_%tIlW7Uu8}!itCtVNWsCOQMC7mA)RG?N{;5mXym@mpgv^EGT2?5cAO=8S z!a4PXeBuJ_AcC+qB3(e8Vb1&yAf9$|d%~QljC)bA&Sl*0p99GfPLdhk_VWkn@Zq?b z2G-`-n|kyl%8A0h*6H3mY<(@+w|&3+9ln?XGKo_c{-gCT{e*4_t!pYjU86D*vX_MR z4V|EI7k!^bt`U5egjT!9$_SY@`Db%T`x3?q>~^9XrVTJ|CI|fl`5{s5%S`-NIWF&a zM35HE`n>|m`Hr@i_ghO=6#c}iLyZ^t;Q{rEWF}z>p7Dg@nAixIZ7-Ut!c?RacxB&g)*0m(9r?_y zZUgVhpay%)-$+5PI~&cy|HN0p--zMq`+9?}T9aoj>EV zEL2H$&ZIBMri0OVPc9c0@zD-J;#t<~m1msi+!0uM<3F(4mf8Y>$FyPZ+W+Q<#r$45 z_7{drEy&5kHgs$ZJoF;;C}!-nHn!g!NmMAmD+Th}6Jy-yWfA{;z?fbDzps_g$0eje zTe&hlQ|&&PC(KDw;fqR#X;=)<=z(<#VHJU`b`H977hk7HA{i#@=B95+;-Mik(2NS$ zp3y?(S=X9;pgH!!?Y8g006+V~@X;Z5;x{u)ln0vOHN<7AcG!Tj))y4zKYz`4x1^yw zw84j$O5kd3fYE^|Yv!S7NakeEHa~Zu3n_ubu^tiflzezD&~kKCZn$U})ABc@V3VfP zh2Me^PObEkGk#I0!O76M4o2J1Nu&y?xs>fU@m+sayDqwAP=3hft5#_8Q%HUPObeg{ z&s{V>U9VQK@(2%cAoJ*)BNyv71Oj7%Rp*L&x@K_&W^RL1jUmc|jaY(uCrz|&V;0!O zU0;mb{EQNZAG39G&V+)fee6Cp%T&TJK_ZQ`5>{z}PorO{QDphL!IMVlTQrjm^=MD- z2o_54;(f)w3gK=sjnl}EwbtJvu>Hw}u)?IJC3%@7Mi$V)e^nmS_vb4iSzwf)p^z#_ zXe{W$!OwbNUTuFvy^j@1Acqsp{I*g>)gBprb%7DJ$Jpz^WcB5j{y}7jR-ZX&n*JmA z;8_&dew<1*^4sxgwR&>g0iLoYKWFwa0b|KXw^)&?4EaZxWcHkJVr^nwUPY|sXOQ6Y zWV9opR}>hFd^a`5okA2%WB6!}5u&dxJq-0bp{e^ShUQ}kBb5dZF9-npcLgMTI<4>P ze&A7XYOwrdHfs^Dxo5dsu`GmsGK->O^lCim5I@4AJxGEDwV|u)#ge7x$V4URp?t0) zLj8C3d~0;@}d1!Xbc5hLmO|c2-%vkeE7_P zY+zgS*dKgEZtf&?_-rspC4OfGr(gO)$`Ri|{gA^6#nti7z(`FYeRCH+N(37IwMKAY z%D#yh%2^(}`$(xybjueQM;@CB6ahUSh4udqqZ5$xHtgv869z_@hLMNJoK@Ha49=T- z3=A8%Uxgo)VFv2(M?22gIjMjTQpLwTmBzWv z(OwqGyMi>Sho+0SfsySr!hw!y!T&h;;~#adsraI8p|tOZ*DGW!GDxGmQISJvRw7l&oVs12?fVo?}w?!tDr?_$KSA=TW&%11mo; zyfR(bQw_OmGQ+%bVqQaK6Ow)Fn6JcsM~>B0R*{ngT+#^_L{m-QN(5SpTZ}la|Es;DQwDV$uPOWKU9AS`Pa5HMf zrp?3T1UCy9{^ROPSXmIZC#Jh=d3N;`bg+ivgd!JHE1xnfM07s!lw0huJ3#kHUALR8 z@pC_t)^mNh+@J0)(7zOR|5n$${(;9=b&1&j6SKu6GXX>yRtq}3Rqn+83Rdll2Ak4$n)^sVU9aoJz%h{&a zTBDaO55Px}=+&xc$e#>K#u9+856!5(-~H>x*qaUT@C#_eyupi~d8c>hB8a+tc=?{`q>N?Rc)=+mBT^r55bAkODifx`YYvfP!i3&pQmOh~-Rx8GjEXXVbw zbJ2pW+M_!cV%;0DgWz9{({aLtsyVAjt+#p>kJ{rnQgsdmceAiL^x^k$9k8k^sRmn; zdALBHqQb*6qy^n{fkUL$e~ao{*q3_X;cy*DF>Ga!xPKR}a?N@SdvHcfDfcYTYHS+U z_-rsc9k_KgToz|~r5q1cA0e7$MWA#Zb$R|!a`AM|)lQKj| z@wDC0+(R5zj4sY4B%4u&@gs(4aP&9*OUx#BAel6Nz=?CL_Qr$O$Wx+bE77JZ(v;x0jtX!9Y8cN3 z;w|p@2%-x+e7RKIOHImXB{m{<-SR_Q0~y;yL~&Nl%Sdy#8(AHQ7V(W_r)HSJhLl)Pb51G@~N@rm|Az#5G_gi)9mUPC@25(4D;3mTdIe| zEe3|1U~Ae&$#h$=eq_4R6hiP%kgOcARv5!KFK9BX!PRKFH2WKv%+a_x3+*-gW$r#U z=S)=@-(OPWckC(X9h;47Cl_V>i^)~}0`1yXc&Bbhgux{AM*?SJ1z_>?j;n9k&!ILx$FN$U zjM3O}2FhOnJ=7XJ5u~$t%u}EDr8IHjrp2v1iX~~nCvN~=5?CNl}RwDRx zy|{xpbh%itsa=JCc8`d)OJ`k~{W^^>fIb>_Pw5kgoWc6f+lZT-3GK{5P9gXn;dUrW z+C=jEX+N0pcs>VpIsJ%q;7Fc^q|wRnIq|PFgpU;54IeoGVa-7QbyUe8e^=PQk`)K| z+{Ad0aKke#vE=*Va@Svvm)H9jj4d#7Z%&)Z)AoGjR>?W zpankT$llM?2&iB@nApbs{mFglK!mh2FVx05G68=2>;9h~F{ouisF3*zbJ;>X5`l>L z#9vynzkSV1Y^unmC{n$YgEchjTLR;FZ64VPg+75AxzKXzU)kYOO)DRE_j5)8Ez6C! zMyHX4{neV4sC}6+qolTB^Y|~cga8TTOq1b3!NVnbh7Cf!!(Hg(GcKG7TJf4)`E=A1(-u>;V-ma zmgzks7**$+#eNy=oE+T6yOHq^sP$(VSiU&Q1T3wMS$aHxr`~k>MKr24b_vb-I^zaJ z)9ncN&||yZsXAvVw3tAK&is|;u9U~$GA3@6u5|PsgA6n>&G#Dt7lU*uu6cN+2J$rw zgGrhbUNm_?@biM5nN023=n)kLIF3j03m5>S@g@GqYlE}U#aPNITo;Px`;}!L@@RHl*NcOsf=U47NF}17s9^$ZPv06KlL#3Y@YJy*a)~BrRdsnrn-vcb9X%E zb=WP)9*O_w(lw-(4VWP4C4mJdZX1_X89sK5%IU;1i(jM?40fRxQ{`pDzx(K8-IsAD zXGWF3h~TqPEq=N&R{-JWn;V)0J2t#jV0vk(@9Jv_v(^tPjzf~wA|W(gQpiDPSc+7e zLct`sB7BZYR1-~Mq|GANk0lUN&QUb<3& z7^9GWK0VpYJH_7Yr%-5v#o)pRixH^p&UycCZn4_pHbcH&KlHIJZ#g0 z*`Lv+`rXu&UmxV-*NuyKosd@XRa!nJk>VEDGX4_7_@eH{l5HrHSh7M(UBi+mRDrPI z#oxj?_m28ay`=@o${Tu(U=sCZYK8XcU7fl%jSQ0p+4r<(^m(oI4YpC!__Y%VEB*I$ zYUUa-8wVGMYUZjiY!}aj<&C8);*Z56b2M0qY!Az}05(gHj5Eh9$o#c}lH={rjCD z#&0IzI)PZ!OWY|*?&*$B5jnQ2<$BsCc6bQaI1UT@%^?VhqP}N=3Wb{-jMo06iaHa^ zQ(OAvJ97G}#UB*?l5S)P9K1t>%zd|zZ=?F6H3CarMoTcLMG`1xN=k6oqnP+pYqCz~ zqZLxqFlz|5qfd>FlL$+i3@K51NnxGAw+& zFeHFW#{d+vB&EWVQn($}2CgIj-}W%W85TZeCaC>Z_RFzoEyAHULlIuwF|}36nkdI!ijP{aCE2U)7#3T*r!9{QiOt!3CY-)fgISf zLWb+PlBQKT8)_Cl+d1sE>>5SDX%+M_CIB}VZ>tW;!q;)6+23sq$lSxMO(0Yk9iJsW z``A=JhBN|YxP9XT$4y4hx=zO>(hcBJ=*a1^kk(#ZNzaD5b(dr)C2+lvA&K4ll;?;H z*yW;{4>xGjfn{v|Q=6#(u)`RwyE+nm@B_3qu0hHLtjL!KLya`>>-{wRIQw}w*O};v z>Vh@^$*{WsO1lO!3lxNa#O4jLSf-SJV!}$7hv^dU4u`^)^lv;r5v9WfyA5s&_<3Jp zG>TK{?G}$qYRH=(5m#e4%wMrP#nTpajWzk?4a_O=TcaY?U~-z zWBv_#&K^_B^r<3KTkj3*VHWn~m_4T=#@~WAry{z`wM}9lqH}QkRrPkW^Sa*t44numQ>goR_J=(d(;G$RbYV@Y937xtUyvS5%=~le~ zrfdTJPj@1tvbOg2OY`R=#M(n9Rn8@P&XdC5t*e)Mfh}uQ-EQ`40Vr;zIoQv%dqD>! zHrufs#QmH2=q%kiz&=^3br2yPZg!*(OR<)@capj!%vrM3T99b zGcEh3T(bJjmGVw=*&~w=4mj`k2+pV;5rb;1J)?dZ+QVzAe-&QSx1m`W**cV1wm8m! z9oebUigv27RS8H0aE~>vhExbpw9okY#av#O`T%E?FK{vKMk{Et*B-N(YS}ya1}AR8 zQ~FCm=is%{jcbhh7Tpu%hHqra$H)TXSC73zoAl*G6q5yh(;XVxrA!Q$I{g7#3VGZJ>|yLG@DiiHOa7ywyPIXLx;nM4*#-U zb`BaWO{6SZlH5W$;CE-wR>O8Y8k4%PKU85x!ZV7;Tt#9zj>L}6)Uzjee~y14i3O#` zsjuMbhk&*TO%!a_dIg#424=e2m}#HtJQ5IC)Xt1UP9{jhxT|#5(4oVx)Na?~@fY(NGxaO_>q|`33N1L(5Q4Ydya^{`#1;2UW9y1 zh1kMxlkcF5w0Ei8&&!&_newQ`T$xt!`6zc_1cXafB82~3Kf0{M%y6E)$l6@|;< z${(QLTW_Y$q0l*e(|`J z7$iji2>$SW655%X=-HXNNSm3;AO!0JRjGrD3EZoXIlo=#sm6oWB|2=?>qZw~Juz7N z9H|9|n`PU=mELJ3C+0p7wa;ljLRh)b|J+PR7^U|#u?RefvU`Uzr+PNTB16c*e{rgL z60}jZtMrxLnK0I;tU@TDA0}1t&8H2JgNHZq;hNhzncAPSG%|K23;m4vkdFjSas;>Y zWM~R@~FH1eog5 z{#)W_SIQ(w|6Yj4)T01FzIU}V!F;ze*mtRXu(8YX5m$rv3BY{E&zwC1t}~sQ{hTHy zV{f?5!XO*9@0+f!6^N2IsT|7Mbc1cK;A#hOH;7*tS9CT!f*IuT;6pXx)+VWcb$%9i zehPCRi+8AW6Aomc45}7v0=+)-5OafKv3MBwI4qqp$w->(D=RB0Hi*(L{sh1;9hV~x z+9kxlLa#xV&-oECC(vBWx&P+=iw#v2mTq%vIjYQJYbGwnd?Q1@d@90;o*l*5_{4Cf z=3e4k`!j+QXr^e?+~=LGq`vNcq4bA;_IUH|D&_9D>u&4k$#Te|GoAxC4z4POhizv< zRpe*?z!KQtLlp%VCve2og*Hy#_JK-z`Mrk1E~>{_q|@=K+~I%-M*8jDlIj=;!+i;b z2@|8RUV2&W#y0@7_-js*ZK&YDll?3=j|l?J@W?-2CZ4YsGSe&U0ow>8gKa%JT=9B0 ze(#QL2aN&dmxwb*u_80#to@b51tLF`b4fxN3HCeeA)LR#=)TS2T86#UE`_jW+n^$c z?&R_n{1X4xqfADzp1cQ4dtYI>Cl3P8f~b_@fJ{|G0(*1KKsmAzl_-o|Rjn%sU|ZO; zN;%phcIYW+2;XAnVLER0e4bUL6YBO;FQIHXFy*Mn!x*Z>>H4IKpx=DxI&RNG!)lV# z8vZfkrg@WoJwyo&WXtPSVfn(-vcGq`wDw`E1v7W}pcu|_cEZfZ zc*EQ}!aU!RV`pHcIMiv@QD7TW8XPfBp;~rmGm{tba8BdbVI$YG%Y@2gr~!$|nlpG* z*Lh@cT2y6WM21;cd`JxsD^+fLQD?w^x;pxl?@m9Q)r^};Et^^pXU)Ik#^^>Bbp)ey zw#w3ip49YRslSp#K5dTAN&R^K@EZ`tsa}W$>)Olu9LYlN;lOu#?>+d@T#e@!wA6v9Dh<5Jp!KlqoiQJ z+Pp)K*F8K7u&$;iE5(ES)uo+lVa(MM69 zV#s+!sLf$rQM7L(3r`GPf)~A#jcf80-sB8lYJJR(NeR&VuVO@k7cC@pa ztaC#}XQm2IApGwX$iv-K5TW%`mV|AOr^#^Sp1KX<@~2IPU+)jCW{e($-)Xwh#2X%A za{4(RzGYE%!?Ein#u2|62r~WxD$!%)7Q{ZX2d{HT@OuFfMas}LTQesTcWuX#U$MyB z&u*|dm=Iow4mHG;zDS1>@lWSuusP`mCeYt2me`M5&oUgu&3JvTKoi-iKcjlS=uZc4 zIZ1SQxUIjX#c-a2t#>sxMh}Vcz3XDcUe6h(p66tFoe=H`^hj8Cx5xN_pNRT{uG)fB zCvOC3Z6meiwbjiE7xL_T??}~clPV$jj(TL)v$T7bxi4`uaHsYe1ttRmKxT+=u&^%r zuR&%g^0Vw=E=x-^Z*cv7=@`cR6WWl)W|ZMDUbaN9SEtrrR~_WigR`9qYU$Q3YnqZY z+Y{%hbA%zoxwOdR8_7(~pqNgbI=FsAwS ztrF%MPQK$@;R7MQlf6KU$G5T;J*kSV88taD;9Me-!HD!DitZJ18LjuE@dn8|*$Lu? z>luTT#pG$SrQRB{Qk*P6RqiU;#3oIIlOIOy{CMfYleMru@)BB#B%~x*C9S&&b1+ zBP}`N*wnBCeGB-MxRzsO(AKgoFOi~aLYqiFq*~SwNxL7}4>OeuV8$IEI_hkqNOd+lY=zil@@hh9BZWa$ z%8d~_#3~Y@Ght8CPIIRjo_YREmL*kInc#-F68^9#0yv`_Pqzcj08OQrzf1MT0SMBE zMZSxEW?3?;yq-xWHg15T+wb>)qU6wVNIkX!jIwh=?lw-Q+3;o7*LRKEmJM8|%9?B$ zD-%_i4`4!+j9Al5)@0DXVb9>%9(pn4x#()S|C>R6^fm1)_5U--dzzrWxj}yw@8sUL zOclN32h8UCzzgI8$(T6L(c~eIIy+ts7ZX6vc%Z^EmjRH z+$yPdvRZ}3f|%>b=~(nTgpJ+L)$=*iZrg%6QLD@|=qQb`28V!|t;IDW;cZD-LJmyp zcDj1KsgWA+eRSY6IiVWh$vU(>>Yo|8cZ@lt?W zV~YxzjQ-1E+MHP3I1&$2_;kvP&1_$i5;x>sYK?8y$hlvn-N(+bpWDnFf)C`~VBOBr zw6?h|?N_6sW~g}SBKbO*((sa%J&gzN^Eg9q2J{g>uW` z@(mKo)~T=y;ZA&N*E-eTx%+VdS(&CoYMiPTOLFilThf3i6K5g6vOkr+p^K{f?Hu zFRraF(T;ogzZE{XroTwkKkre{fsC)d*OsoPoh`qwEv-=Azs1gc@{4ZulXzq%9WVMK zkr(3tCQhwbf0V6(TZP}pkBxEFPVk}D2l}6GicaEj$9MJ+Dh+rCKKw&OD5-O*h9uM9 zUWqgc?ZEKl0`w)$#Z+PA8gZsBJ+w0O3v6U6u1t7Fd1nck9>Kd34V2qW{3pHpDuk=k*G z%;#Dfk7jKSu|c$D9d#CgaghG(k-zwab~C88ys%h7q!d-5cNn`(%sf(k>|h*bv{&aO zhSy30*1rsfD0PEBT3RqmzTY*1zPImlzZ1a(D~^cl{IC_4T_nYiEftonK5nKI+jtblowPzQTAVaLVW{_5#yMIch^i}Rth+pyXCBF@9d#4GdxJ<9gZR&L zE86yYsKoxzKYx2$;dYaK^)zkve_!7|`SgDPME>Z*d>oecmr9TI!vr5T`yCc?k(ym) zTyJ%GxD>L)?99L4W&9?B83s-|SZm)Rw#WJkI&3x5S}qZcCisrv=F8a5(=dHtSvv`< z)<}iuvN#J?p!u#o?@1u`nSb0C?JBmGJe$2Qg{Ap$cWbCV&uA@S&>SSqIekOtjIqn| zD)``A=1C0OSzdr?K>)tT+Prz z5f}!%pix-U_D)^@E(38G1TrzeTHN-UiMnoF6s-fZ-4v0Rb9dnj9^L*d#ymz? zf-UHN#<=;IqSWxU5m^2X^IK)YNA}F`t^1|m|1A9QYkw4a40QU#;@r;;l&bURNEjrb zTitIM=^YYsLvVpj%#h41qeZ zj$S}CBu+(yYU1{MK$pJGw_+@$l&#QOuET7bu{Y~11g73m-m~J`*fEa~H2*qxZoX|9 zT$^nxK0tH?0NFi^PV_^d=Y2Gw;EVAo2@f z8_D_kx7}`Pc_Xj(-%G5mnRc2LO7}6O;_tFax&exPmk+rr|K$mUSaR)Ps@S|*Mq9m3 z&llGha7`GWp>G4j_?W8>vPfu^zMNN@XjE=PSRc@2Th`-yUJg17VpOc_8|&{aQB8XM zt;y@hyQ8>j8yvnMjL%TN9n93_6b@u(jPG7K=y#z&U%Ef-Juia7q(FbIUv)8zI`Yn$ zaVA=VCCj~2INpfunY!av`w!Rk=HSyyD8E3AZ#&&MUBbv#%-X*&-H}v5naE2UKb_^6qZF?S5o$Ble|ixE6dLL1fwQx z;>a&Rl!M5sc659eoIYdRe?cq@yTQE>1-osFRzi=LQZ&^Ih5`lCk#^HUTN@0|B_&Iw zZjhNokVV{U2Lx~}6f?;D8|F*eVdboWfW?GBh|j3!uc(qCQAFc8 zGNfAKwy6tFfbVm`RNMFo%<$L!<=q#~2ht;Lnyg4ToH5T)H0~GwJZ?z)*9abGV2GeP z3d#HY_cE$digS>JImJ(pgk&GjHDba(|&* z_rM6EYw0X1Z=Fv(SX*%3+_orIRCLE%k zV#jHTL+SDEhI3o<;3rt0J`e)Tc~`+GyL(;f2_7AWyD7y zOM{~L;f>Vstxcp$87)r5$p|YN<-Q63H1wE$FHt7_!Sah?>wzfcOoxSHUFX%_A?N)6ie1zpCQK1z-!?LTVL!m zeQLwIomvNjR1&_nq=9C8U+q#X4npbpErTvfUaXj%{6?#Lj)Ly~M*#ydwL%>J_r;C+ z1AHsP2pVeBIX~P$l9p+69;mQlUOc(=u>T`^;p_ zjD!Tc4dj`HrY8Key+i=E@W5^kdPzU>{!O{~1PB)QN)^Ukr8vCWTCl7!+Wl zfrg2CsdLv0#rNp@<=ZO+Y%EnsLw5tbS|P8zw_xf^OIa7rLcb!WplFKR5s7YN?uAw6Zm5; zDIHRxkP{`btKgBj`1-bL82q;U5n@^0df_htw&`f|P}wQk;}J!Ov&0YEnloCU4PzUq z40g(M+9LQK5_=%oEX9bQ6cQ^aXNdsbs$4pJ_32?fKhRxiZx{B7 zP^JxttFt5xCAmo5!EetZtjMKq41E4uJa7?8Pp9AiBStE=t|%8J9-qD*I&I^#;MNhH z=ijToT-Oa@K?wvRPKIRBSNb3g_)UAGv-qxRjdX+8{*73(uC`gsZB6QV1V`Hdbg0&6 z@`rnX2zl$oW_Fiu+Ri%4e;*mEWQP@OMC_QgK$wwfnC_#VZsb+jHq(DUR8V@4wP(!J z_?;}H^zl7| zULzH5()8cbA_DP>WcGnPq!C>UD zJG_?f=M(&oD8(K0`Tiz+&?dSv`cIB+HU-5-{pt$0$yy&)h%Ft0K?u2}Z|-Wq)&sR! zK=wiM!~^bU%p%!mEO*3dnP9)-T$p z|LLYUyU*Xgt;@rL85hD}2W1g3LZ#Tr$QS(y4|zrsl&ihL%~`h&E+_kaQ|tehly|No zT%MbqKktUcm-RbV6i@J7&EH)R^DgwPX?P&?4F76B|Lw~l^lSsSn|OYPf5BC@K0#t3 zcR5~OY1?zFKe&}-kM`;ak$G@xx-dAv&<-Sg?KfJ93UO`1%`0mmUtL^y)WZ#?nYMA; zf$$#bVEnri0iXS`_tU$RoGqYz;#1aiB_c`(;_6n1G1(@4$NMu8^f@hM4bDBKqjQIP zkDI#H#|OHPE5B#Kg)l!asPp#WAd0j*iaLnYXX)!eVbDht(Z{{Q;rHTL22?}>y@ zHMTnOb@(H};G{0uz=_vuZ#W=L=*1MXD4;-|pgS~705HRo7waLBHx z5I5U|p2QKd9QcHt)SZ`moh0zFlw9qk_aE~5=|24`{CB0ai{()Ef05?0+VxFE0z&Sh zVhl{2jqGrQ9V(}_GBk&)Dpwl?gBnNXPP~Jo`!X!JS4z4GuiUvybw@nzb(L ztKz^V2*FU{FuYV`c*2MK_DvC$_)w$MGhJ%JE0P3kyM93wa;knyhw#>G3(T%M@*<@a z_T$yVo8@OFhV7|?V-3|$ARD+5haX?`)2}LJ1zS&n{qRAt@>Q}6uhA#e2Hh6CtX8ks zmj0Qk3O~nd`r-c;zVp2__Qew)p2L#5qZ_4eE}Z5Nn{C2F2pqJWc0u#BtA{QySFw5tLkb64F zNFx*pj3E%0JTlS)rlXlfDzJ2ba8?2GLmpWcJDy8bx-m$dGn(_G%+4XR*e4S!N)+^B zRClSa{aw$`66sf1h@W4LStolBZT;e%?MfI6HO+d)kLARIYJ-IlgYC>yH&mK^nIsWi zD9d6lXnb*)f8LQ7X0Ur5SR9wd#7y^XLE9>5P=WjJdkrVID52N**k^NNeN*MW=W5xx zIpU)xCi$Dm>g!nISH^~T93(RVQYB+$5q;ksvmL&wy(_Rd0&1CVjyAcfH!I$lu0>1| z^pkY`1!;UA>X>eXVXYAT3O>4J9CWkjZw<)d6`Z1T?u3T^U# zEIcy_oM)) zePc+dQC3OyWNMG5?MAPV?jG+4-mE5hB`0FCOi?+HYu6Q(hw=8m98M@j^ou+D>ndjt zU#!A0xbBY_l}K-xt_xsqh_4G@kZsMCk{Tx0-e3SZ`^3k#h>L!NEHpqV(@0Qg!N;?R zi)|7eeVc()d&YoSHDvA$F4aRosHuHs0gbBbUn27O{w(=>q`?U`LUp|<64fO>w9vRx z@ud*fm2L$=<94paEqkyCy#V=pU+7@*XJ;~OP%IG%j6I`4m&X2v1xqF8}CJOK|Pdd%;gIRu_#jF72`q*Kn|A&KU!;1Y116c^dkpBM?}J^xp}6lCUM5@d z(p}k7-MjlLk8&Z(RBO{srp!%Of{~RQHdP7n_sdnKgjsFOhaVVKqfS1!6IM64;TzOQ zQQiA2ak5q~P{td6uxY%3-%Xhm@Q1tMNFx1bd6R}_;`krKe~>#{vE7Dj^$7cjVH=A3 z2V702Oa%Rrj~R9g?$Wy0UCPCG7+Pe40D_r@%sF&No3xT)lV*&l(e?5W z2MJy7eKgPFpa0JUQ1+54Cq0NW)=7!FJG~~xYlnR;+XbH+5_QGnkD1)3mEY2m)u7T_ zYYU81>_xRHsT52hu}p@BqK>)aBwiheFAcn-@Sk&@D{}1>hYq|@sg&b!Ds*$Z$f9>qKujumFV8BEx z1r!pm4XhjX(3X=weIWImc@J_n>9co$#(h4KgxvF_IT%VHvNDU zzsDtT&{MOwiVDLS?<7lHIBNfJ0AjXgzc3}r7&wmkSxu&{0v25YW;15l>7uRv#tCn2 z<_cnqjM4)45SJ>!9lL32}6+8lhp z8uHG+2Zzd|4()yUD@gQFWzz}r!iuu+p-vPgevN-Hh{DdCkBkFjh=#Y|gPX>IG>!tR z9{^F=`=YY(MquR%!Or~G{P21NRJ1^ly!9bk^ht!pJPr%QlBxRkbh4>T;b z)Wc*PigIE5v?<%vh98AY)39gfD;htZbSxgV!P3XtGMdzGS*^%E|BIqEYI9Sh51-br zs^n0N=(+vnS7r55b{dhBOOTp;fd<`vZuc2w86|dZPc~(le`w?)LL97bsiG;pfrgZUds#|3v*oUM{!pTCE;dA|})Q{XD_ z@=}(y5`vq87+sC4!ts3Bi@`wW2X!SWH3t!7KMNr(dWiz3$(eLk2Ab&03FK3JS)^}W z?q@q8ECloT%wx^jB}%6!4Jj)=qt?>vwQyXnvZyS@D!_!ebg0Yl_APL)8qcKh6CfdN zI*}%uz>tTZWfeEwENb#Tb81;5jX`Iz=%Y_B#}uxM6{OPZ0ISb2zj%lcz#Y~N0?C)t zoFhI{qQ-m@Z=&5 z8e6bBTSvoPVD2efk*4=`?*T$zTe#>y!fH zA5upXuoAH&#&KmO{b5?^`>L5Nl=cRGmmeny&ApE;Tqhj$-5a=}%k7}?e-aNK>2zq~ zAizt^xQQSj2bA04Q}G2Fu7y4UzzXM>J;u99l0B36;|ikzjDP;)PZ_xf7?#A>TQY|2 zU?cx`UgY!N6p2PI;O8iR0J7)N*i9NmLoGMOi=>{HvT6>>k_lLj8g7o5B;oeb2&ES% z3BN9tY)lcXD8|bEwfv%l!W1k? z@}3}t-8Uz=g`rUl36U~9OGhj(h1g_m+7Vb~k?R|@@;N6?`=+Jg;m)QZCRyn`a@fBc zRLrs!Q5kB&VRIHl5!e$>UWc{fki7fSGgPz<7lJ;ohS|`&_zz5Ssaxqb>cJ=dbu@jC z>;NbKl`Br7x-4S>i9Eps$~rB1OGBv3Z5&ZkozXS7E`AR|4?L$BQ9dZO{nIgw@0>0d zE1MsRu;4p`k5H87k>DMw*jS6>fwS>M{hsYeaw8F2TI7BR=oo$wDnzbb+@!0g_q*Ft z6*Z7(TzsZz`-n&olHJo}qQ`$UB`OA>YsJtgcJyrIpk_8cF@&)#7t>{jyfd3@2i6+tO(3%Mv0gc2 zWmbS+zg+Og;nhn!`v3NwQl!*z0qp9ke-OI%eA+8te7sX_2tv@R+ zL~Erl5zM2P6}KiA)3v7_hz2$LToE2-^QO9X$NO)2nx^0|jh4M{uU4B##dXN)BJ34g z8?#=J(Cwbpe82nX&fS|m0lkcW^VzT3J;Ou#-N$$C-riK3v>=#kZo3$`imizF9I3 zQ!TzqkzW^_X{$$Jq`;XRja8@=9_;Uj2iCAPf5|xHD-F+*$u<83SXO=2v+C|vJA$iw z7=aBX=mEoBI07rW*@b$`HB~<@St$1k@fIptuu#_0Aoai}D=(C(o=yVU_e}O)Bc6OdUd7_%W-`UyS-Pzqye|h}$+0O3nvu8U` z)L(XXcb-1pQGeO_EeKHNMUeevXXhR!xw8X<=70Yn|Gn>aKkTUoYUBJO%$3;%Y7$0T zg}DmKB56-`th1od<82j0ks4hD@l@xkNK^rD;j`Ca6se(BQIZ#(jh54{R-+a4sPj>&; z)r-gfZ~o$&XB#SriWeKNlVlocbr2=xSe-;cF-fwSijrxvp^C7G^nyp=^>7-$*vP`^ zMX{kSH2nKw0~)>#$HfJH?0(y7Jy7rY)pFQ9D~D?Tq_?MzlCl1Kt`4G5$Hj;D7s*Vg z!Bl@}wZ2vF|3~lb$?@s={?Yk|*0<{6!(LqIEDj=gm0x-Ia8KddMd2_DvbowE{O1%0 z+8#k~-LxF$<**&3;b03_G_Eab1Vg^Yfvea1C%pp|1#_LLvChM3tj8+IRiMT?)$v%z zqq&+S8Lmt+nS`S-h}1<8kFT?^D0HkwI4&7aM;*pvSmrEO`9)GjV-?1E0sAP3$10qq zNmi(b58pS9`opFy>-F_@Cr)R7&v6xnYc;*I_3$C~po4LzW%psGBOT=WjlR;+MyvJy zf4q;=nYz+h9wxEvC!9??`9-Lsao!1&Zk*1#SKUPf?c`U}t)?+1*>vd`;pMGXtF|44 zc0ga)7@fc8&J^HKgh7;d!nnwiaXBi&B;IJX_Thk~nZD3*9$sk`g?RyIN6u*&D;L@M zt%6}v7Pxi2T^i~fX-*yPpY-x=6~?2e9Eb6gc6v0{S&KOUJRoy^BMrbCFl7H*b@(xj zf-u(O5AU`42piM>wWk)&BS=H06OFfR#@jaUw^|P$o(IE7ZCTdmfE z2g=T__29t+Rh>?&wcAnZ{h5yRs8C6!Mwy0tB&f3aG)w-jN5zNt{2~9)p;r%MBBImbUuFoCt_{tP68$A}@s(4H0t=4gwHL-*U(3}e+NZ4L^-OsAStWNG8j%j7!~1_?&EdY zp9LWt@E{)PzA$tUlv+H#POCS;9YewuP$r0#j>qj}(vHH3Hn%`B5i)G6YppU(QrcJ* z7eRqdl<7DqbSubJo+L2{0cn!wILabHIRZx(%~ftF`{w*idg!#6Uw)O>Ny~4jNKb>& z+?|P8oUDwCaHewweYb`>FWP!CNkA|h26>nhsbFzvonWrlK?b`a-vf^GrqVW$Bu)wi z_lt&`54mL+mq`g5tI*SokIqANmdv!u^{C9kVy@Dl7+t_x#bY(mK~ZKphcgMS4Ye8u zqf44Uy!uMyq|kflQm1gv+eOj_vUcG5uMnjOvZ)51r*i1NVbweW!F+tU6LvN5s%=u8mz)({*znz>p&i@@0}JLdqa=v(GlYOwS#Bg zUOKIoCnnQma$vu+0NAc_?BVqm;6~X~@0-po3~FNpJNopql*`sVSIZ@zgz@=2Q;Xu0yr3ImwHnd;IzK^p$A zAPvLu3p(E&OF4M9MH0@E&5v@gFBWz6N78`1xh~pe+78B}Hp)J&x>Vs%d+p_8?ae&I z3I#XaYSNLuKzBwd>&(Ws&o9tZ>rYGQzqkE&SccIU_(ze*)(|E7YL`EC@aOxr|2}^F z^x5N@{rBr9JJ0^K|Na*Lb-U^yN#|(1RF8HZJyR^vym@ob>ULY*u3VR6RmNjYc0ay2 z`Il|?234Ezzy|-cvGp990Br)SP9O@GxpvIP`r`=XVwA;aX%vEDV+DI|r2}pJ%xxsY zA_!x++>>-JCSrb21qBZp{$n8y%yIz^7zH^tAmnmGx8d5Sm)^w@XxN$lM;T^%tcG(H zq-hk6P^piCYp@{%(@c}iI*b+AJi~apt@312TnCwkWYZ(9DxaAZ(`@%pl3Yuo{J+kaW975R@T^`8H4WD4c{N6$SCM45nI5lPirHluC6r z3v*VS;xRN6g|m>13weEBomMNK$3^f_y-*v-C?0P-Z?%}eD8AO2kzDOQZ?)L;yTRNh zNW(5FOVk4~n~mp9kC8^O?1>3jaQj1j5nP2yw(QAF=Si83^rC0*>tQ+Rj#*Z{@j*RH zi}{UD(FkWjetF}gWbwH1F;td|V3sa?((rRIM9c#7Tq{XY3LoVcL6-L8V5ajl7-?8a zVh0^ma5^XD@T?qme%#%7F7Hf}zO3;JwNaDdritnH5zyOQCh73Ge6WrEJ-7<`vob2e zG}3)i3SOupE4BYfQWiSvkD?&YVX)Bi2{v}ZGjbnxhnLJc)tzXcPA?kg{>v{o`Copa z+5hs3JN>L2&fOm9mAyTDWp9sO+1qnp+2j#`13`9Qf2=2A9K!Eg>V^8$QmUAzdXFi3 zIm;{3bN3*dr$zFEo^P}i*e5_N-oulJ+CujefBM`7@feR(_mh15+`ZKEQ!tctKV9m1 zKMUjO=k7?F%)6iHbN^D$KX0@?-*W6h97OXX9OV}^>A(9X%z<;>ZuH}z2o688f1~>e z{_Jc1`*SyXIJ5f6;-fe5sSz9l{xt}XF(jMB|068Bn?M7npfbL zToW^#={yhE3mVWvot89xQVydq2aXKXXrSF#Pl7Tk`WH!FY$3;NQjs>EH@}^LQq<2! zNviWL^#aYoN^Q7)s0y{=1yZouDH|!aH&%U*#s+*sDUcV?h>nJ6H4U$HOtZJQHhl>v zsbg&rvRm+bm6f2NQF|+Sal}RhmcLQ{!0bIduUnm#Qdv6Up`F8UHu3*kD$_-o#krEd zKjEw!hzg^S{R{u4WwEC=fLnfoPF|S3`LIh{qWkc(kPvL(durn${r&m*qCRH2xJbr* z@T#H_5tklX$Cduf1b&BhSM=2CkFkj1QJwO92S>-}{qK(79laW;aAKdJ*2am>k)XJe zLQCckoBVH`hUSMnO~Bi=1~rqs@QB$+$Gwy~xJP;lnLJ{?)&(&N-`r<6oKWPoE@*4X zhr92qsa}B)x1X>#Pq@u;HG`dOPHQf6gCBA5`KJ9?pP&2N+RN@tmZ#}V_cPD;R+Hss z8m7yR0Br(wf}#L5Ypn8en2)kBC0!w5v#z(`X0~VUvzyId3$b{zb&^${z6<#l@0G4M zt$W=$HB#nrkmeUjQKgd~+0}Kwi?;4c+S7Oz5^*|LW%LWuN>~TT6Plr)~90M_Pom zCF0qwE-|$~fgn5)8Ni@{y+L@OiuE;r&tXOsb1}yLsX5%=AO*r0p40B8z%(%QXW&q_ zt>Ca@ypJami9^j)u9VE@IvsV`w1I5YqLFu~HJF~6#*l)9!b}bDu>nb1FiPCTi5m3z z;Wj?dAIOFy!qZ*me6F*5(L-5%?;L{JV2yo6{r_e++$)W|9RdNp1BsqCmqG1Ekv+

q6tS=GtjIJvoawuaXqhvgg1}Rvs`_rf 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 A9{>OV literal 0 HcmV?d00001 From 34ab842951b5b8c2dbb250d4a643059ec99f1b0b Mon Sep 17 00:00:00 2001 From: feywind <57276408+feywind@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:53:26 -0400 Subject: [PATCH 2/6] feat: update pubsub handwritten library to use new api package --- handwritten/pubsub/protos/protos.js | 5842 ++++++++++------- handwritten/pubsub/protos/protos.json | 5589 +--------------- handwritten/pubsub/src/index.ts | 2 +- handwritten/pubsub/src/message-stream.ts | 3 +- handwritten/pubsub/src/pubsub.ts | 12 +- handwritten/pubsub/src/subscriber.ts | 6 +- handwritten/pubsub/src/v1/index.ts | 21 - handwritten/pubsub/src/v1/publisher_client.ts | 2319 ------- .../src/v1/publisher_client_config.json | 103 - .../pubsub/src/v1/publisher_proto_list.json | 4 - .../pubsub/src/v1/schema_service_client.ts | 2235 ------- .../src/v1/schema_service_client_config.json | 79 - .../src/v1/schema_service_proto_list.json | 4 - .../pubsub/src/v1/subscriber_client.ts | 3204 --------- .../src/v1/subscriber_client_config.json | 136 - .../pubsub/src/v1/subscriber_proto_list.json | 4 - handwritten/pubsub/test/schema.ts | 4 +- 17 files changed, 3664 insertions(+), 15903 deletions(-) delete mode 100644 handwritten/pubsub/src/v1/index.ts delete mode 100644 handwritten/pubsub/src/v1/publisher_client.ts delete mode 100644 handwritten/pubsub/src/v1/publisher_client_config.json delete mode 100644 handwritten/pubsub/src/v1/publisher_proto_list.json delete mode 100644 handwritten/pubsub/src/v1/schema_service_client.ts delete mode 100644 handwritten/pubsub/src/v1/schema_service_client_config.json delete mode 100644 handwritten/pubsub/src/v1/schema_service_proto_list.json delete mode 100644 handwritten/pubsub/src/v1/subscriber_client.ts delete mode 100644 handwritten/pubsub/src/v1/subscriber_client_config.json delete mode 100644 handwritten/pubsub/src/v1/subscriber_proto_list.json diff --git a/handwritten/pubsub/protos/protos.js b/handwritten/pubsub/protos/protos.js index 87591ea8cee6..45619bf22448 100644 --- a/handwritten/pubsub/protos/protos.js +++ b/handwritten/pubsub/protos/protos.js @@ -28,7 +28,7 @@ var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace - var $root = $protobuf.roots._google_cloud_pubsub_protos || ($protobuf.roots._google_cloud_pubsub_protos = {}); + var $root = $protobuf.roots["_google_cloud_pubsub_protos"] || ($protobuf.roots["_google_cloud_pubsub_protos"] = {}); $root.google = (function() { @@ -109,7 +109,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.createTopic = function createTopic(request, callback) { - return this.rpcCall(createTopic, $root.google.pubsub.v1.Topic, $root.google.pubsub.v1.Topic, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, createTopic, $root.google.pubsub.v1.Topic, $root.google.pubsub.v1.Topic, request, callback); }, "name", { value: "CreateTopic" }); /** @@ -142,7 +142,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.updateTopic = function updateTopic(request, callback) { - return this.rpcCall(updateTopic, $root.google.pubsub.v1.UpdateTopicRequest, $root.google.pubsub.v1.Topic, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, updateTopic, $root.google.pubsub.v1.UpdateTopicRequest, $root.google.pubsub.v1.Topic, request, callback); }, "name", { value: "UpdateTopic" }); /** @@ -175,7 +175,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.publish = function publish(request, callback) { - return this.rpcCall(publish, $root.google.pubsub.v1.PublishRequest, $root.google.pubsub.v1.PublishResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, publish, $root.google.pubsub.v1.PublishRequest, $root.google.pubsub.v1.PublishResponse, request, callback); }, "name", { value: "Publish" }); /** @@ -208,7 +208,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.getTopic = function getTopic(request, callback) { - return this.rpcCall(getTopic, $root.google.pubsub.v1.GetTopicRequest, $root.google.pubsub.v1.Topic, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, getTopic, $root.google.pubsub.v1.GetTopicRequest, $root.google.pubsub.v1.Topic, request, callback); }, "name", { value: "GetTopic" }); /** @@ -241,7 +241,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.listTopics = function listTopics(request, callback) { - return this.rpcCall(listTopics, $root.google.pubsub.v1.ListTopicsRequest, $root.google.pubsub.v1.ListTopicsResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, listTopics, $root.google.pubsub.v1.ListTopicsRequest, $root.google.pubsub.v1.ListTopicsResponse, request, callback); }, "name", { value: "ListTopics" }); /** @@ -274,7 +274,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.listTopicSubscriptions = function listTopicSubscriptions(request, callback) { - return this.rpcCall(listTopicSubscriptions, $root.google.pubsub.v1.ListTopicSubscriptionsRequest, $root.google.pubsub.v1.ListTopicSubscriptionsResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, listTopicSubscriptions, $root.google.pubsub.v1.ListTopicSubscriptionsRequest, $root.google.pubsub.v1.ListTopicSubscriptionsResponse, request, callback); }, "name", { value: "ListTopicSubscriptions" }); /** @@ -307,7 +307,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.listTopicSnapshots = function listTopicSnapshots(request, callback) { - return this.rpcCall(listTopicSnapshots, $root.google.pubsub.v1.ListTopicSnapshotsRequest, $root.google.pubsub.v1.ListTopicSnapshotsResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, listTopicSnapshots, $root.google.pubsub.v1.ListTopicSnapshotsRequest, $root.google.pubsub.v1.ListTopicSnapshotsResponse, request, callback); }, "name", { value: "ListTopicSnapshots" }); /** @@ -340,7 +340,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.deleteTopic = function deleteTopic(request, callback) { - return this.rpcCall(deleteTopic, $root.google.pubsub.v1.DeleteTopicRequest, $root.google.protobuf.Empty, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, deleteTopic, $root.google.pubsub.v1.DeleteTopicRequest, $root.google.protobuf.Empty, request, callback); }, "name", { value: "DeleteTopic" }); /** @@ -373,7 +373,7 @@ * @variation 1 */ Object.defineProperty(Publisher.prototype.detachSubscription = function detachSubscription(request, callback) { - return this.rpcCall(detachSubscription, $root.google.pubsub.v1.DetachSubscriptionRequest, $root.google.pubsub.v1.DetachSubscriptionResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, detachSubscription, $root.google.pubsub.v1.DetachSubscriptionRequest, $root.google.pubsub.v1.DetachSubscriptionResponse, request, callback); }, "name", { value: "DetachSubscription" }); /** @@ -452,9 +452,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MessageStoragePolicy.encode = function encode(message, writer) { + MessageStoragePolicy.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.allowedPersistenceRegions != null && message.allowedPersistenceRegions.length) for (var i = 0; i < message.allowedPersistenceRegions.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.allowedPersistenceRegions[i]); @@ -473,7 +477,7 @@ * @returns {$protobuf.Writer} Writer */ MessageStoragePolicy.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -549,14 +553,14 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.allowedPersistenceRegions != null && message.hasOwnProperty("allowedPersistenceRegions")) { + if (message.allowedPersistenceRegions != null && Object.hasOwnProperty.call(message, "allowedPersistenceRegions")) { if (!Array.isArray(message.allowedPersistenceRegions)) return "allowedPersistenceRegions: array expected"; for (var i = 0; i < message.allowedPersistenceRegions.length; ++i) if (!$util.isString(message.allowedPersistenceRegions[i])) return "allowedPersistenceRegions: string[] expected"; } - if (message.enforceInTransit != null && message.hasOwnProperty("enforceInTransit")) + if (message.enforceInTransit != null && Object.hasOwnProperty.call(message, "enforceInTransit")) if (typeof message.enforceInTransit !== "boolean") return "enforceInTransit: boolean expected"; return null; @@ -573,6 +577,8 @@ MessageStoragePolicy.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.MessageStoragePolicy) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.MessageStoragePolicy: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -599,9 +605,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MessageStoragePolicy.toObject = function toObject(message, options) { + MessageStoragePolicy.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.allowedPersistenceRegions = []; @@ -612,7 +622,7 @@ for (var j = 0; j < message.allowedPersistenceRegions.length; ++j) object.allowedPersistenceRegions[j] = message.allowedPersistenceRegions[j]; } - if (message.enforceInTransit != null && message.hasOwnProperty("enforceInTransit")) + if (message.enforceInTransit != null && Object.hasOwnProperty.call(message, "enforceInTransit")) object.enforceInTransit = message.enforceInTransit; return object; }; @@ -726,9 +736,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SchemaSettings.encode = function encode(message, writer) { + SchemaSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.schema); if (message.encoding != null && Object.hasOwnProperty.call(message, "encoding")) @@ -750,7 +764,7 @@ * @returns {$protobuf.Writer} Writer */ SchemaSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -832,10 +846,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.schema != null && message.hasOwnProperty("schema")) + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) if (!$util.isString(message.schema)) return "schema: string expected"; - if (message.encoding != null && message.hasOwnProperty("encoding")) + if (message.encoding != null && Object.hasOwnProperty.call(message, "encoding")) switch (message.encoding) { default: return "encoding: enum value expected"; @@ -844,10 +858,10 @@ case 2: break; } - if (message.firstRevisionId != null && message.hasOwnProperty("firstRevisionId")) + if (message.firstRevisionId != null && Object.hasOwnProperty.call(message, "firstRevisionId")) if (!$util.isString(message.firstRevisionId)) return "firstRevisionId: string expected"; - if (message.lastRevisionId != null && message.hasOwnProperty("lastRevisionId")) + if (message.lastRevisionId != null && Object.hasOwnProperty.call(message, "lastRevisionId")) if (!$util.isString(message.lastRevisionId)) return "lastRevisionId: string expected"; return null; @@ -864,6 +878,8 @@ SchemaSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.SchemaSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.SchemaSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -907,9 +923,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SchemaSettings.toObject = function toObject(message, options) { + SchemaSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.schema = ""; @@ -917,13 +937,13 @@ object.firstRevisionId = ""; object.lastRevisionId = ""; } - if (message.schema != null && message.hasOwnProperty("schema")) + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) object.schema = message.schema; - if (message.encoding != null && message.hasOwnProperty("encoding")) + if (message.encoding != null && Object.hasOwnProperty.call(message, "encoding")) object.encoding = options.enums === String ? $root.google.pubsub.v1.Encoding[message.encoding] === undefined ? message.encoding : $root.google.pubsub.v1.Encoding[message.encoding] : message.encoding; - if (message.firstRevisionId != null && message.hasOwnProperty("firstRevisionId")) + if (message.firstRevisionId != null && Object.hasOwnProperty.call(message, "firstRevisionId")) object.firstRevisionId = message.firstRevisionId; - if (message.lastRevisionId != null && message.hasOwnProperty("lastRevisionId")) + if (message.lastRevisionId != null && Object.hasOwnProperty.call(message, "lastRevisionId")) object.lastRevisionId = message.lastRevisionId; return object; }; @@ -1069,21 +1089,25 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - IngestionDataSourceSettings.encode = function encode(message, writer) { + IngestionDataSourceSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.awsKinesis != null && Object.hasOwnProperty.call(message, "awsKinesis")) - $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.encode(message.awsKinesis, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.encode(message.awsKinesis, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.cloudStorage != null && Object.hasOwnProperty.call(message, "cloudStorage")) - $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.encode(message.cloudStorage, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.encode(message.cloudStorage, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.azureEventHubs != null && Object.hasOwnProperty.call(message, "azureEventHubs")) - $root.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.encode(message.azureEventHubs, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.encode(message.azureEventHubs, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.platformLogsSettings != null && Object.hasOwnProperty.call(message, "platformLogsSettings")) - $root.google.pubsub.v1.PlatformLogsSettings.encode(message.platformLogsSettings, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.pubsub.v1.PlatformLogsSettings.encode(message.platformLogsSettings, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.awsMsk != null && Object.hasOwnProperty.call(message, "awsMsk")) - $root.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.encode(message.awsMsk, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.encode(message.awsMsk, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.confluentCloud != null && Object.hasOwnProperty.call(message, "confluentCloud")) - $root.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.encode(message.confluentCloud, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.encode(message.confluentCloud, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); return writer; }; @@ -1097,7 +1121,7 @@ * @returns {$protobuf.Writer} Writer */ IngestionDataSourceSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -1188,7 +1212,7 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.awsKinesis != null && message.hasOwnProperty("awsKinesis")) { + if (message.awsKinesis != null && Object.hasOwnProperty.call(message, "awsKinesis")) { properties.source = 1; { var error = $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.verify(message.awsKinesis, long + 1); @@ -1196,7 +1220,7 @@ return "awsKinesis." + error; } } - if (message.cloudStorage != null && message.hasOwnProperty("cloudStorage")) { + if (message.cloudStorage != null && Object.hasOwnProperty.call(message, "cloudStorage")) { if (properties.source === 1) return "source: multiple values"; properties.source = 1; @@ -1206,7 +1230,7 @@ return "cloudStorage." + error; } } - if (message.azureEventHubs != null && message.hasOwnProperty("azureEventHubs")) { + if (message.azureEventHubs != null && Object.hasOwnProperty.call(message, "azureEventHubs")) { if (properties.source === 1) return "source: multiple values"; properties.source = 1; @@ -1216,7 +1240,7 @@ return "azureEventHubs." + error; } } - if (message.awsMsk != null && message.hasOwnProperty("awsMsk")) { + if (message.awsMsk != null && Object.hasOwnProperty.call(message, "awsMsk")) { if (properties.source === 1) return "source: multiple values"; properties.source = 1; @@ -1226,7 +1250,7 @@ return "awsMsk." + error; } } - if (message.confluentCloud != null && message.hasOwnProperty("confluentCloud")) { + if (message.confluentCloud != null && Object.hasOwnProperty.call(message, "confluentCloud")) { if (properties.source === 1) return "source: multiple values"; properties.source = 1; @@ -1236,7 +1260,7 @@ return "confluentCloud." + error; } } - if (message.platformLogsSettings != null && message.hasOwnProperty("platformLogsSettings")) { + if (message.platformLogsSettings != null && Object.hasOwnProperty.call(message, "platformLogsSettings")) { var error = $root.google.pubsub.v1.PlatformLogsSettings.verify(message.platformLogsSettings, long + 1); if (error) return "platformLogsSettings." + error; @@ -1255,38 +1279,40 @@ IngestionDataSourceSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.pubsub.v1.IngestionDataSourceSettings(); if (object.awsKinesis != null) { - if (typeof object.awsKinesis !== "object") + if (!$util.isObject(object.awsKinesis)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.awsKinesis: object expected"); message.awsKinesis = $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.fromObject(object.awsKinesis, long + 1); } if (object.cloudStorage != null) { - if (typeof object.cloudStorage !== "object") + if (!$util.isObject(object.cloudStorage)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.cloudStorage: object expected"); message.cloudStorage = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.fromObject(object.cloudStorage, long + 1); } if (object.azureEventHubs != null) { - if (typeof object.azureEventHubs !== "object") + if (!$util.isObject(object.azureEventHubs)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.azureEventHubs: object expected"); message.azureEventHubs = $root.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.fromObject(object.azureEventHubs, long + 1); } if (object.awsMsk != null) { - if (typeof object.awsMsk !== "object") + if (!$util.isObject(object.awsMsk)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.awsMsk: object expected"); message.awsMsk = $root.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.fromObject(object.awsMsk, long + 1); } if (object.confluentCloud != null) { - if (typeof object.confluentCloud !== "object") + if (!$util.isObject(object.confluentCloud)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.confluentCloud: object expected"); message.confluentCloud = $root.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.fromObject(object.confluentCloud, long + 1); } if (object.platformLogsSettings != null) { - if (typeof object.platformLogsSettings !== "object") + if (!$util.isObject(object.platformLogsSettings)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.platformLogsSettings: object expected"); message.platformLogsSettings = $root.google.pubsub.v1.PlatformLogsSettings.fromObject(object.platformLogsSettings, long + 1); } @@ -1302,36 +1328,40 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - IngestionDataSourceSettings.toObject = function toObject(message, options) { + IngestionDataSourceSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.platformLogsSettings = null; - if (message.awsKinesis != null && message.hasOwnProperty("awsKinesis")) { - object.awsKinesis = $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.toObject(message.awsKinesis, options); + if (message.awsKinesis != null && Object.hasOwnProperty.call(message, "awsKinesis")) { + object.awsKinesis = $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.toObject(message.awsKinesis, options, q + 1); if (options.oneofs) object.source = "awsKinesis"; } - if (message.cloudStorage != null && message.hasOwnProperty("cloudStorage")) { - object.cloudStorage = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.toObject(message.cloudStorage, options); + if (message.cloudStorage != null && Object.hasOwnProperty.call(message, "cloudStorage")) { + object.cloudStorage = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.toObject(message.cloudStorage, options, q + 1); if (options.oneofs) object.source = "cloudStorage"; } - if (message.azureEventHubs != null && message.hasOwnProperty("azureEventHubs")) { - object.azureEventHubs = $root.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.toObject(message.azureEventHubs, options); + if (message.azureEventHubs != null && Object.hasOwnProperty.call(message, "azureEventHubs")) { + object.azureEventHubs = $root.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.toObject(message.azureEventHubs, options, q + 1); if (options.oneofs) object.source = "azureEventHubs"; } - if (message.platformLogsSettings != null && message.hasOwnProperty("platformLogsSettings")) - object.platformLogsSettings = $root.google.pubsub.v1.PlatformLogsSettings.toObject(message.platformLogsSettings, options); - if (message.awsMsk != null && message.hasOwnProperty("awsMsk")) { - object.awsMsk = $root.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.toObject(message.awsMsk, options); + if (message.platformLogsSettings != null && Object.hasOwnProperty.call(message, "platformLogsSettings")) + object.platformLogsSettings = $root.google.pubsub.v1.PlatformLogsSettings.toObject(message.platformLogsSettings, options, q + 1); + if (message.awsMsk != null && Object.hasOwnProperty.call(message, "awsMsk")) { + object.awsMsk = $root.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.toObject(message.awsMsk, options, q + 1); if (options.oneofs) object.source = "awsMsk"; } - if (message.confluentCloud != null && message.hasOwnProperty("confluentCloud")) { - object.confluentCloud = $root.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.toObject(message.confluentCloud, options); + if (message.confluentCloud != null && Object.hasOwnProperty.call(message, "confluentCloud")) { + object.confluentCloud = $root.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.toObject(message.confluentCloud, options, q + 1); if (options.oneofs) object.source = "confluentCloud"; } @@ -1453,9 +1483,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AwsKinesis.encode = function encode(message, writer) { + AwsKinesis.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.state != null && Object.hasOwnProperty.call(message, "state")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); if (message.streamArn != null && Object.hasOwnProperty.call(message, "streamArn")) @@ -1479,7 +1513,7 @@ * @returns {$protobuf.Writer} Writer */ AwsKinesis.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -1565,7 +1599,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -1577,16 +1611,16 @@ case 5: break; } - if (message.streamArn != null && message.hasOwnProperty("streamArn")) + if (message.streamArn != null && Object.hasOwnProperty.call(message, "streamArn")) if (!$util.isString(message.streamArn)) return "streamArn: string expected"; - if (message.consumerArn != null && message.hasOwnProperty("consumerArn")) + if (message.consumerArn != null && Object.hasOwnProperty.call(message, "consumerArn")) if (!$util.isString(message.consumerArn)) return "consumerArn: string expected"; - if (message.awsRoleArn != null && message.hasOwnProperty("awsRoleArn")) + if (message.awsRoleArn != null && Object.hasOwnProperty.call(message, "awsRoleArn")) if (!$util.isString(message.awsRoleArn)) return "awsRoleArn: string expected"; - if (message.gcpServiceAccount != null && message.hasOwnProperty("gcpServiceAccount")) + if (message.gcpServiceAccount != null && Object.hasOwnProperty.call(message, "gcpServiceAccount")) if (!$util.isString(message.gcpServiceAccount)) return "gcpServiceAccount: string expected"; return null; @@ -1603,6 +1637,8 @@ AwsKinesis.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -1660,9 +1696,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AwsKinesis.toObject = function toObject(message, options) { + AwsKinesis.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; @@ -1671,15 +1711,15 @@ object.awsRoleArn = ""; object.gcpServiceAccount = ""; } - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.IngestionDataSourceSettings.AwsKinesis.State[message.state] : message.state; - if (message.streamArn != null && message.hasOwnProperty("streamArn")) + if (message.streamArn != null && Object.hasOwnProperty.call(message, "streamArn")) object.streamArn = message.streamArn; - if (message.consumerArn != null && message.hasOwnProperty("consumerArn")) + if (message.consumerArn != null && Object.hasOwnProperty.call(message, "consumerArn")) object.consumerArn = message.consumerArn; - if (message.awsRoleArn != null && message.hasOwnProperty("awsRoleArn")) + if (message.awsRoleArn != null && Object.hasOwnProperty.call(message, "awsRoleArn")) object.awsRoleArn = message.awsRoleArn; - if (message.gcpServiceAccount != null && message.hasOwnProperty("gcpServiceAccount")) + if (message.gcpServiceAccount != null && Object.hasOwnProperty.call(message, "gcpServiceAccount")) object.gcpServiceAccount = message.gcpServiceAccount; return object; }; @@ -1856,21 +1896,25 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CloudStorage.encode = function encode(message, writer) { + CloudStorage.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.state != null && Object.hasOwnProperty.call(message, "state")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.bucket); if (message.textFormat != null && Object.hasOwnProperty.call(message, "textFormat")) - $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormat.encode(message.textFormat, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormat.encode(message.textFormat, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.avroFormat != null && Object.hasOwnProperty.call(message, "avroFormat")) - $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormat.encode(message.avroFormat, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormat.encode(message.avroFormat, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.pubsubAvroFormat != null && Object.hasOwnProperty.call(message, "pubsubAvroFormat")) - $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormat.encode(message.pubsubAvroFormat, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormat.encode(message.pubsubAvroFormat, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.minimumObjectCreateTime != null && Object.hasOwnProperty.call(message, "minimumObjectCreateTime")) - $root.google.protobuf.Timestamp.encode(message.minimumObjectCreateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.protobuf.Timestamp.encode(message.minimumObjectCreateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.matchGlob != null && Object.hasOwnProperty.call(message, "matchGlob")) writer.uint32(/* id 9, wireType 2 =*/74).string(message.matchGlob); return writer; @@ -1886,7 +1930,7 @@ * @returns {$protobuf.Writer} Writer */ CloudStorage.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -1981,7 +2025,7 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -1993,10 +2037,10 @@ case 5: break; } - if (message.bucket != null && message.hasOwnProperty("bucket")) + if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) if (!$util.isString(message.bucket)) return "bucket: string expected"; - if (message.textFormat != null && message.hasOwnProperty("textFormat")) { + if (message.textFormat != null && Object.hasOwnProperty.call(message, "textFormat")) { properties.inputFormat = 1; { var error = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormat.verify(message.textFormat, long + 1); @@ -2004,7 +2048,7 @@ return "textFormat." + error; } } - if (message.avroFormat != null && message.hasOwnProperty("avroFormat")) { + if (message.avroFormat != null && Object.hasOwnProperty.call(message, "avroFormat")) { if (properties.inputFormat === 1) return "inputFormat: multiple values"; properties.inputFormat = 1; @@ -2014,7 +2058,7 @@ return "avroFormat." + error; } } - if (message.pubsubAvroFormat != null && message.hasOwnProperty("pubsubAvroFormat")) { + if (message.pubsubAvroFormat != null && Object.hasOwnProperty.call(message, "pubsubAvroFormat")) { if (properties.inputFormat === 1) return "inputFormat: multiple values"; properties.inputFormat = 1; @@ -2024,12 +2068,12 @@ return "pubsubAvroFormat." + error; } } - if (message.minimumObjectCreateTime != null && message.hasOwnProperty("minimumObjectCreateTime")) { + if (message.minimumObjectCreateTime != null && Object.hasOwnProperty.call(message, "minimumObjectCreateTime")) { var error = $root.google.protobuf.Timestamp.verify(message.minimumObjectCreateTime, long + 1); if (error) return "minimumObjectCreateTime." + error; } - if (message.matchGlob != null && message.hasOwnProperty("matchGlob")) + if (message.matchGlob != null && Object.hasOwnProperty.call(message, "matchGlob")) if (!$util.isString(message.matchGlob)) return "matchGlob: string expected"; return null; @@ -2046,6 +2090,8 @@ CloudStorage.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.CloudStorage: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -2086,22 +2132,22 @@ if (object.bucket != null) message.bucket = String(object.bucket); if (object.textFormat != null) { - if (typeof object.textFormat !== "object") + if (!$util.isObject(object.textFormat)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.textFormat: object expected"); message.textFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormat.fromObject(object.textFormat, long + 1); } if (object.avroFormat != null) { - if (typeof object.avroFormat !== "object") + if (!$util.isObject(object.avroFormat)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.avroFormat: object expected"); message.avroFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormat.fromObject(object.avroFormat, long + 1); } if (object.pubsubAvroFormat != null) { - if (typeof object.pubsubAvroFormat !== "object") + if (!$util.isObject(object.pubsubAvroFormat)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.pubsubAvroFormat: object expected"); message.pubsubAvroFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormat.fromObject(object.pubsubAvroFormat, long + 1); } if (object.minimumObjectCreateTime != null) { - if (typeof object.minimumObjectCreateTime !== "object") + if (!$util.isObject(object.minimumObjectCreateTime)) throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.minimumObjectCreateTime: object expected"); message.minimumObjectCreateTime = $root.google.protobuf.Timestamp.fromObject(object.minimumObjectCreateTime, long + 1); } @@ -2119,9 +2165,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CloudStorage.toObject = function toObject(message, options) { + CloudStorage.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; @@ -2129,28 +2179,28 @@ object.minimumObjectCreateTime = null; object.matchGlob = ""; } - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.State[message.state] : message.state; - if (message.bucket != null && message.hasOwnProperty("bucket")) + if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) object.bucket = message.bucket; - if (message.textFormat != null && message.hasOwnProperty("textFormat")) { - object.textFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormat.toObject(message.textFormat, options); + if (message.textFormat != null && Object.hasOwnProperty.call(message, "textFormat")) { + object.textFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormat.toObject(message.textFormat, options, q + 1); if (options.oneofs) object.inputFormat = "textFormat"; } - if (message.avroFormat != null && message.hasOwnProperty("avroFormat")) { - object.avroFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormat.toObject(message.avroFormat, options); + if (message.avroFormat != null && Object.hasOwnProperty.call(message, "avroFormat")) { + object.avroFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormat.toObject(message.avroFormat, options, q + 1); if (options.oneofs) object.inputFormat = "avroFormat"; } - if (message.pubsubAvroFormat != null && message.hasOwnProperty("pubsubAvroFormat")) { - object.pubsubAvroFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormat.toObject(message.pubsubAvroFormat, options); + if (message.pubsubAvroFormat != null && Object.hasOwnProperty.call(message, "pubsubAvroFormat")) { + object.pubsubAvroFormat = $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormat.toObject(message.pubsubAvroFormat, options, q + 1); if (options.oneofs) object.inputFormat = "pubsubAvroFormat"; } - if (message.minimumObjectCreateTime != null && message.hasOwnProperty("minimumObjectCreateTime")) - object.minimumObjectCreateTime = $root.google.protobuf.Timestamp.toObject(message.minimumObjectCreateTime, options); - if (message.matchGlob != null && message.hasOwnProperty("matchGlob")) + if (message.minimumObjectCreateTime != null && Object.hasOwnProperty.call(message, "minimumObjectCreateTime")) + object.minimumObjectCreateTime = $root.google.protobuf.Timestamp.toObject(message.minimumObjectCreateTime, options, q + 1); + if (message.matchGlob != null && Object.hasOwnProperty.call(message, "matchGlob")) object.matchGlob = message.matchGlob; return object; }; @@ -2265,9 +2315,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TextFormat.encode = function encode(message, writer) { + TextFormat.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.delimiter != null && Object.hasOwnProperty.call(message, "delimiter")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.delimiter); return writer; @@ -2283,7 +2337,7 @@ * @returns {$protobuf.Writer} Writer */ TextFormat.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -2354,7 +2408,7 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.delimiter != null && message.hasOwnProperty("delimiter")) { + if (message.delimiter != null && Object.hasOwnProperty.call(message, "delimiter")) { properties._delimiter = 1; if (!$util.isString(message.delimiter)) return "delimiter: string expected"; @@ -2373,6 +2427,8 @@ TextFormat.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormat) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.TextFormat: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -2392,11 +2448,15 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - TextFormat.toObject = function toObject(message, options) { + TextFormat.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; - if (message.delimiter != null && message.hasOwnProperty("delimiter")) { + if (message.delimiter != null && Object.hasOwnProperty.call(message, "delimiter")) { object.delimiter = message.delimiter; if (options.oneofs) object._delimiter = "delimiter"; @@ -2477,9 +2537,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AvroFormat.encode = function encode(message, writer) { + AvroFormat.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -2493,7 +2557,7 @@ * @returns {$protobuf.Writer} Writer */ AvroFormat.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -2573,10 +2637,6 @@ AvroFormat.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormat) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.AvroFormat(); }; @@ -2666,9 +2726,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PubSubAvroFormat.encode = function encode(message, writer) { + PubSubAvroFormat.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -2682,7 +2746,7 @@ * @returns {$protobuf.Writer} Writer */ PubSubAvroFormat.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -2762,10 +2826,6 @@ PubSubAvroFormat.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormat) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.IngestionDataSourceSettings.CloudStorage.PubSubAvroFormat(); }; @@ -2930,9 +2990,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AzureEventHubs.encode = function encode(message, writer) { + AzureEventHubs.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.state != null && Object.hasOwnProperty.call(message, "state")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); if (message.resourceGroup != null && Object.hasOwnProperty.call(message, "resourceGroup")) @@ -2962,7 +3026,7 @@ * @returns {$protobuf.Writer} Writer */ AzureEventHubs.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -3060,7 +3124,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -3074,25 +3138,25 @@ case 7: break; } - if (message.resourceGroup != null && message.hasOwnProperty("resourceGroup")) + if (message.resourceGroup != null && Object.hasOwnProperty.call(message, "resourceGroup")) if (!$util.isString(message.resourceGroup)) return "resourceGroup: string expected"; - if (message.namespace != null && message.hasOwnProperty("namespace")) + if (message.namespace != null && Object.hasOwnProperty.call(message, "namespace")) if (!$util.isString(message.namespace)) return "namespace: string expected"; - if (message.eventHub != null && message.hasOwnProperty("eventHub")) + if (message.eventHub != null && Object.hasOwnProperty.call(message, "eventHub")) if (!$util.isString(message.eventHub)) return "eventHub: string expected"; - if (message.clientId != null && message.hasOwnProperty("clientId")) + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) if (!$util.isString(message.clientId)) return "clientId: string expected"; - if (message.tenantId != null && message.hasOwnProperty("tenantId")) + if (message.tenantId != null && Object.hasOwnProperty.call(message, "tenantId")) if (!$util.isString(message.tenantId)) return "tenantId: string expected"; - if (message.subscriptionId != null && message.hasOwnProperty("subscriptionId")) + if (message.subscriptionId != null && Object.hasOwnProperty.call(message, "subscriptionId")) if (!$util.isString(message.subscriptionId)) return "subscriptionId: string expected"; - if (message.gcpServiceAccount != null && message.hasOwnProperty("gcpServiceAccount")) + if (message.gcpServiceAccount != null && Object.hasOwnProperty.call(message, "gcpServiceAccount")) if (!$util.isString(message.gcpServiceAccount)) return "gcpServiceAccount: string expected"; return null; @@ -3109,6 +3173,8 @@ AzureEventHubs.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -3180,9 +3246,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AzureEventHubs.toObject = function toObject(message, options) { + AzureEventHubs.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; @@ -3194,21 +3264,21 @@ object.subscriptionId = ""; object.gcpServiceAccount = ""; } - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.IngestionDataSourceSettings.AzureEventHubs.State[message.state] : message.state; - if (message.resourceGroup != null && message.hasOwnProperty("resourceGroup")) + if (message.resourceGroup != null && Object.hasOwnProperty.call(message, "resourceGroup")) object.resourceGroup = message.resourceGroup; - if (message.namespace != null && message.hasOwnProperty("namespace")) + if (message.namespace != null && Object.hasOwnProperty.call(message, "namespace")) object.namespace = message.namespace; - if (message.eventHub != null && message.hasOwnProperty("eventHub")) + if (message.eventHub != null && Object.hasOwnProperty.call(message, "eventHub")) object.eventHub = message.eventHub; - if (message.clientId != null && message.hasOwnProperty("clientId")) + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) object.clientId = message.clientId; - if (message.tenantId != null && message.hasOwnProperty("tenantId")) + if (message.tenantId != null && Object.hasOwnProperty.call(message, "tenantId")) object.tenantId = message.tenantId; - if (message.subscriptionId != null && message.hasOwnProperty("subscriptionId")) + if (message.subscriptionId != null && Object.hasOwnProperty.call(message, "subscriptionId")) object.subscriptionId = message.subscriptionId; - if (message.gcpServiceAccount != null && message.hasOwnProperty("gcpServiceAccount")) + if (message.gcpServiceAccount != null && Object.hasOwnProperty.call(message, "gcpServiceAccount")) object.gcpServiceAccount = message.gcpServiceAccount; return object; }; @@ -3357,9 +3427,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AwsMsk.encode = function encode(message, writer) { + AwsMsk.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.state != null && Object.hasOwnProperty.call(message, "state")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); if (message.clusterArn != null && Object.hasOwnProperty.call(message, "clusterArn")) @@ -3383,7 +3457,7 @@ * @returns {$protobuf.Writer} Writer */ AwsMsk.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -3469,7 +3543,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -3481,16 +3555,16 @@ case 5: break; } - if (message.clusterArn != null && message.hasOwnProperty("clusterArn")) + if (message.clusterArn != null && Object.hasOwnProperty.call(message, "clusterArn")) if (!$util.isString(message.clusterArn)) return "clusterArn: string expected"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; - if (message.awsRoleArn != null && message.hasOwnProperty("awsRoleArn")) + if (message.awsRoleArn != null && Object.hasOwnProperty.call(message, "awsRoleArn")) if (!$util.isString(message.awsRoleArn)) return "awsRoleArn: string expected"; - if (message.gcpServiceAccount != null && message.hasOwnProperty("gcpServiceAccount")) + if (message.gcpServiceAccount != null && Object.hasOwnProperty.call(message, "gcpServiceAccount")) if (!$util.isString(message.gcpServiceAccount)) return "gcpServiceAccount: string expected"; return null; @@ -3507,6 +3581,8 @@ AwsMsk.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.AwsMsk: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -3564,9 +3640,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AwsMsk.toObject = function toObject(message, options) { + AwsMsk.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; @@ -3575,15 +3655,15 @@ object.awsRoleArn = ""; object.gcpServiceAccount = ""; } - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.IngestionDataSourceSettings.AwsMsk.State[message.state] : message.state; - if (message.clusterArn != null && message.hasOwnProperty("clusterArn")) + if (message.clusterArn != null && Object.hasOwnProperty.call(message, "clusterArn")) object.clusterArn = message.clusterArn; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; - if (message.awsRoleArn != null && message.hasOwnProperty("awsRoleArn")) + if (message.awsRoleArn != null && Object.hasOwnProperty.call(message, "awsRoleArn")) object.awsRoleArn = message.awsRoleArn; - if (message.gcpServiceAccount != null && message.hasOwnProperty("gcpServiceAccount")) + if (message.gcpServiceAccount != null && Object.hasOwnProperty.call(message, "gcpServiceAccount")) object.gcpServiceAccount = message.gcpServiceAccount; return object; }; @@ -3737,9 +3817,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ConfluentCloud.encode = function encode(message, writer) { + ConfluentCloud.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.state != null && Object.hasOwnProperty.call(message, "state")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.state); if (message.bootstrapServer != null && Object.hasOwnProperty.call(message, "bootstrapServer")) @@ -3765,7 +3849,7 @@ * @returns {$protobuf.Writer} Writer */ ConfluentCloud.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -3855,7 +3939,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -3868,19 +3952,19 @@ case 6: break; } - if (message.bootstrapServer != null && message.hasOwnProperty("bootstrapServer")) + if (message.bootstrapServer != null && Object.hasOwnProperty.call(message, "bootstrapServer")) if (!$util.isString(message.bootstrapServer)) return "bootstrapServer: string expected"; - if (message.clusterId != null && message.hasOwnProperty("clusterId")) + if (message.clusterId != null && Object.hasOwnProperty.call(message, "clusterId")) if (!$util.isString(message.clusterId)) return "clusterId: string expected"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; - if (message.identityPoolId != null && message.hasOwnProperty("identityPoolId")) + if (message.identityPoolId != null && Object.hasOwnProperty.call(message, "identityPoolId")) if (!$util.isString(message.identityPoolId)) return "identityPoolId: string expected"; - if (message.gcpServiceAccount != null && message.hasOwnProperty("gcpServiceAccount")) + if (message.gcpServiceAccount != null && Object.hasOwnProperty.call(message, "gcpServiceAccount")) if (!$util.isString(message.gcpServiceAccount)) return "gcpServiceAccount: string expected"; return null; @@ -3897,6 +3981,8 @@ ConfluentCloud.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -3960,9 +4046,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ConfluentCloud.toObject = function toObject(message, options) { + ConfluentCloud.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; @@ -3972,17 +4062,17 @@ object.identityPoolId = ""; object.gcpServiceAccount = ""; } - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.IngestionDataSourceSettings.ConfluentCloud.State[message.state] : message.state; - if (message.bootstrapServer != null && message.hasOwnProperty("bootstrapServer")) + if (message.bootstrapServer != null && Object.hasOwnProperty.call(message, "bootstrapServer")) object.bootstrapServer = message.bootstrapServer; - if (message.clusterId != null && message.hasOwnProperty("clusterId")) + if (message.clusterId != null && Object.hasOwnProperty.call(message, "clusterId")) object.clusterId = message.clusterId; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; - if (message.identityPoolId != null && message.hasOwnProperty("identityPoolId")) + if (message.identityPoolId != null && Object.hasOwnProperty.call(message, "identityPoolId")) object.identityPoolId = message.identityPoolId; - if (message.gcpServiceAccount != null && message.hasOwnProperty("gcpServiceAccount")) + if (message.gcpServiceAccount != null && Object.hasOwnProperty.call(message, "gcpServiceAccount")) object.gcpServiceAccount = message.gcpServiceAccount; return object; }; @@ -4096,9 +4186,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PlatformLogsSettings.encode = function encode(message, writer) { + PlatformLogsSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.severity != null && Object.hasOwnProperty.call(message, "severity")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.severity); return writer; @@ -4114,7 +4208,7 @@ * @returns {$protobuf.Writer} Writer */ PlatformLogsSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -4184,7 +4278,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.severity != null && message.hasOwnProperty("severity")) + if (message.severity != null && Object.hasOwnProperty.call(message, "severity")) switch (message.severity) { default: return "severity: enum value expected"; @@ -4210,6 +4304,8 @@ PlatformLogsSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PlatformLogsSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PlatformLogsSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -4259,13 +4355,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PlatformLogsSettings.toObject = function toObject(message, options) { + PlatformLogsSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.severity = options.enums === String ? "SEVERITY_UNSPECIFIED" : 0; - if (message.severity != null && message.hasOwnProperty("severity")) + if (message.severity != null && Object.hasOwnProperty.call(message, "severity")) object.severity = options.enums === String ? $root.google.pubsub.v1.PlatformLogsSettings.Severity[message.severity] === undefined ? message.severity : $root.google.pubsub.v1.PlatformLogsSettings.Severity[message.severity] : message.severity; return object; }; @@ -4442,23 +4542,27 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - IngestionFailureEvent.encode = function encode(message, writer) { + IngestionFailureEvent.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.topic); if (message.errorMessage != null && Object.hasOwnProperty.call(message, "errorMessage")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.errorMessage); if (message.cloudStorageFailure != null && Object.hasOwnProperty.call(message, "cloudStorageFailure")) - $root.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.encode(message.cloudStorageFailure, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.encode(message.cloudStorageFailure, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.awsMskFailure != null && Object.hasOwnProperty.call(message, "awsMskFailure")) - $root.google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason.encode(message.awsMskFailure, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason.encode(message.awsMskFailure, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.azureEventHubsFailure != null && Object.hasOwnProperty.call(message, "azureEventHubsFailure")) - $root.google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason.encode(message.azureEventHubsFailure, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason.encode(message.azureEventHubsFailure, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.confluentCloudFailure != null && Object.hasOwnProperty.call(message, "confluentCloudFailure")) - $root.google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason.encode(message.confluentCloudFailure, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason.encode(message.confluentCloudFailure, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.awsKinesisFailure != null && Object.hasOwnProperty.call(message, "awsKinesisFailure")) - $root.google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason.encode(message.awsKinesisFailure, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason.encode(message.awsKinesisFailure, writer.uint32(/* id 7, wireType 2 =*/58).fork(), q + 1).ldelim(); return writer; }; @@ -4472,7 +4576,7 @@ * @returns {$protobuf.Writer} Writer */ IngestionFailureEvent.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -4567,13 +4671,13 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; - if (message.errorMessage != null && message.hasOwnProperty("errorMessage")) + if (message.errorMessage != null && Object.hasOwnProperty.call(message, "errorMessage")) if (!$util.isString(message.errorMessage)) return "errorMessage: string expected"; - if (message.cloudStorageFailure != null && message.hasOwnProperty("cloudStorageFailure")) { + if (message.cloudStorageFailure != null && Object.hasOwnProperty.call(message, "cloudStorageFailure")) { properties.failure = 1; { var error = $root.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.verify(message.cloudStorageFailure, long + 1); @@ -4581,7 +4685,7 @@ return "cloudStorageFailure." + error; } } - if (message.awsMskFailure != null && message.hasOwnProperty("awsMskFailure")) { + if (message.awsMskFailure != null && Object.hasOwnProperty.call(message, "awsMskFailure")) { if (properties.failure === 1) return "failure: multiple values"; properties.failure = 1; @@ -4591,7 +4695,7 @@ return "awsMskFailure." + error; } } - if (message.azureEventHubsFailure != null && message.hasOwnProperty("azureEventHubsFailure")) { + if (message.azureEventHubsFailure != null && Object.hasOwnProperty.call(message, "azureEventHubsFailure")) { if (properties.failure === 1) return "failure: multiple values"; properties.failure = 1; @@ -4601,7 +4705,7 @@ return "azureEventHubsFailure." + error; } } - if (message.confluentCloudFailure != null && message.hasOwnProperty("confluentCloudFailure")) { + if (message.confluentCloudFailure != null && Object.hasOwnProperty.call(message, "confluentCloudFailure")) { if (properties.failure === 1) return "failure: multiple values"; properties.failure = 1; @@ -4611,7 +4715,7 @@ return "confluentCloudFailure." + error; } } - if (message.awsKinesisFailure != null && message.hasOwnProperty("awsKinesisFailure")) { + if (message.awsKinesisFailure != null && Object.hasOwnProperty.call(message, "awsKinesisFailure")) { if (properties.failure === 1) return "failure: multiple values"; properties.failure = 1; @@ -4635,6 +4739,8 @@ IngestionFailureEvent.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionFailureEvent: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -4645,27 +4751,27 @@ if (object.errorMessage != null) message.errorMessage = String(object.errorMessage); if (object.cloudStorageFailure != null) { - if (typeof object.cloudStorageFailure !== "object") + if (!$util.isObject(object.cloudStorageFailure)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.cloudStorageFailure: object expected"); message.cloudStorageFailure = $root.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.fromObject(object.cloudStorageFailure, long + 1); } if (object.awsMskFailure != null) { - if (typeof object.awsMskFailure !== "object") + if (!$util.isObject(object.awsMskFailure)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.awsMskFailure: object expected"); message.awsMskFailure = $root.google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason.fromObject(object.awsMskFailure, long + 1); } if (object.azureEventHubsFailure != null) { - if (typeof object.azureEventHubsFailure !== "object") + if (!$util.isObject(object.azureEventHubsFailure)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.azureEventHubsFailure: object expected"); message.azureEventHubsFailure = $root.google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason.fromObject(object.azureEventHubsFailure, long + 1); } if (object.confluentCloudFailure != null) { - if (typeof object.confluentCloudFailure !== "object") + if (!$util.isObject(object.confluentCloudFailure)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.confluentCloudFailure: object expected"); message.confluentCloudFailure = $root.google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason.fromObject(object.confluentCloudFailure, long + 1); } if (object.awsKinesisFailure != null) { - if (typeof object.awsKinesisFailure !== "object") + if (!$util.isObject(object.awsKinesisFailure)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.awsKinesisFailure: object expected"); message.awsKinesisFailure = $root.google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason.fromObject(object.awsKinesisFailure, long + 1); } @@ -4681,40 +4787,44 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - IngestionFailureEvent.toObject = function toObject(message, options) { + IngestionFailureEvent.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.topic = ""; object.errorMessage = ""; } - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; - if (message.errorMessage != null && message.hasOwnProperty("errorMessage")) + if (message.errorMessage != null && Object.hasOwnProperty.call(message, "errorMessage")) object.errorMessage = message.errorMessage; - if (message.cloudStorageFailure != null && message.hasOwnProperty("cloudStorageFailure")) { - object.cloudStorageFailure = $root.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.toObject(message.cloudStorageFailure, options); + if (message.cloudStorageFailure != null && Object.hasOwnProperty.call(message, "cloudStorageFailure")) { + object.cloudStorageFailure = $root.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.toObject(message.cloudStorageFailure, options, q + 1); if (options.oneofs) object.failure = "cloudStorageFailure"; } - if (message.awsMskFailure != null && message.hasOwnProperty("awsMskFailure")) { - object.awsMskFailure = $root.google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason.toObject(message.awsMskFailure, options); + if (message.awsMskFailure != null && Object.hasOwnProperty.call(message, "awsMskFailure")) { + object.awsMskFailure = $root.google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason.toObject(message.awsMskFailure, options, q + 1); if (options.oneofs) object.failure = "awsMskFailure"; } - if (message.azureEventHubsFailure != null && message.hasOwnProperty("azureEventHubsFailure")) { - object.azureEventHubsFailure = $root.google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason.toObject(message.azureEventHubsFailure, options); + if (message.azureEventHubsFailure != null && Object.hasOwnProperty.call(message, "azureEventHubsFailure")) { + object.azureEventHubsFailure = $root.google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason.toObject(message.azureEventHubsFailure, options, q + 1); if (options.oneofs) object.failure = "azureEventHubsFailure"; } - if (message.confluentCloudFailure != null && message.hasOwnProperty("confluentCloudFailure")) { - object.confluentCloudFailure = $root.google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason.toObject(message.confluentCloudFailure, options); + if (message.confluentCloudFailure != null && Object.hasOwnProperty.call(message, "confluentCloudFailure")) { + object.confluentCloudFailure = $root.google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason.toObject(message.confluentCloudFailure, options, q + 1); if (options.oneofs) object.failure = "confluentCloudFailure"; } - if (message.awsKinesisFailure != null && message.hasOwnProperty("awsKinesisFailure")) { - object.awsKinesisFailure = $root.google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason.toObject(message.awsKinesisFailure, options); + if (message.awsKinesisFailure != null && Object.hasOwnProperty.call(message, "awsKinesisFailure")) { + object.awsKinesisFailure = $root.google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason.toObject(message.awsKinesisFailure, options, q + 1); if (options.oneofs) object.failure = "awsKinesisFailure"; } @@ -4791,9 +4901,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ApiViolationReason.encode = function encode(message, writer) { + ApiViolationReason.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -4807,7 +4921,7 @@ * @returns {$protobuf.Writer} Writer */ ApiViolationReason.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -4887,10 +5001,6 @@ ApiViolationReason.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason(); }; @@ -4980,9 +5090,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AvroFailureReason.encode = function encode(message, writer) { + AvroFailureReason.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -4996,7 +5110,7 @@ * @returns {$protobuf.Writer} Writer */ AvroFailureReason.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -5076,10 +5190,6 @@ AvroFailureReason.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.AvroFailureReason) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.IngestionFailureEvent.AvroFailureReason(); }; @@ -5169,9 +5279,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SchemaViolationReason.encode = function encode(message, writer) { + SchemaViolationReason.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -5185,7 +5299,7 @@ * @returns {$protobuf.Writer} Writer */ SchemaViolationReason.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -5265,10 +5379,6 @@ SchemaViolationReason.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason(); }; @@ -5358,9 +5468,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MessageTransformationFailureReason.encode = function encode(message, writer) { + MessageTransformationFailureReason.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -5374,7 +5488,7 @@ * @returns {$protobuf.Writer} Writer */ MessageTransformationFailureReason.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -5454,10 +5568,6 @@ MessageTransformationFailureReason.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason(); }; @@ -5624,9 +5734,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CloudStorageFailure.encode = function encode(message, writer) { + CloudStorageFailure.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.bucket); if (message.objectName != null && Object.hasOwnProperty.call(message, "objectName")) @@ -5634,13 +5748,13 @@ if (message.objectGeneration != null && Object.hasOwnProperty.call(message, "objectGeneration")) writer.uint32(/* id 3, wireType 0 =*/24).int64(message.objectGeneration); if (message.avroFailureReason != null && Object.hasOwnProperty.call(message, "avroFailureReason")) - $root.google.pubsub.v1.IngestionFailureEvent.AvroFailureReason.encode(message.avroFailureReason, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.AvroFailureReason.encode(message.avroFailureReason, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 7, wireType 2 =*/58).fork(), q + 1).ldelim(); if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) - $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 8, wireType 2 =*/66).fork(), q + 1).ldelim(); return writer; }; @@ -5654,7 +5768,7 @@ * @returns {$protobuf.Writer} Writer */ CloudStorageFailure.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -5749,16 +5863,16 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.bucket != null && message.hasOwnProperty("bucket")) + if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) if (!$util.isString(message.bucket)) return "bucket: string expected"; - if (message.objectName != null && message.hasOwnProperty("objectName")) + if (message.objectName != null && Object.hasOwnProperty.call(message, "objectName")) if (!$util.isString(message.objectName)) return "objectName: string expected"; - if (message.objectGeneration != null && message.hasOwnProperty("objectGeneration")) + if (message.objectGeneration != null && Object.hasOwnProperty.call(message, "objectGeneration")) if (!$util.isInteger(message.objectGeneration) && !(message.objectGeneration && $util.isInteger(message.objectGeneration.low) && $util.isInteger(message.objectGeneration.high))) return "objectGeneration: integer|Long expected"; - if (message.avroFailureReason != null && message.hasOwnProperty("avroFailureReason")) { + if (message.avroFailureReason != null && Object.hasOwnProperty.call(message, "avroFailureReason")) { properties.reason = 1; { var error = $root.google.pubsub.v1.IngestionFailureEvent.AvroFailureReason.verify(message.avroFailureReason, long + 1); @@ -5766,7 +5880,7 @@ return "avroFailureReason." + error; } } - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -5776,7 +5890,7 @@ return "apiViolationReason." + error; } } - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -5786,7 +5900,7 @@ return "schemaViolationReason." + error; } } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -5810,6 +5924,8 @@ CloudStorageFailure.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -5821,7 +5937,7 @@ message.objectName = String(object.objectName); if (object.objectGeneration != null) if ($util.Long) - (message.objectGeneration = $util.Long.fromValue(object.objectGeneration)).unsigned = false; + message.objectGeneration = $util.Long.fromValue(object.objectGeneration, false); else if (typeof object.objectGeneration === "string") message.objectGeneration = parseInt(object.objectGeneration, 10); else if (typeof object.objectGeneration === "number") @@ -5829,22 +5945,22 @@ else if (typeof object.objectGeneration === "object") message.objectGeneration = new $util.LongBits(object.objectGeneration.low >>> 0, object.objectGeneration.high >>> 0).toNumber(); if (object.avroFailureReason != null) { - if (typeof object.avroFailureReason !== "object") + if (!$util.isObject(object.avroFailureReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.avroFailureReason: object expected"); message.avroFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.AvroFailureReason.fromObject(object.avroFailureReason, long + 1); } if (object.apiViolationReason != null) { - if (typeof object.apiViolationReason !== "object") + if (!$util.isObject(object.apiViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.apiViolationReason: object expected"); message.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.fromObject(object.apiViolationReason, long + 1); } if (object.schemaViolationReason != null) { - if (typeof object.schemaViolationReason !== "object") + if (!$util.isObject(object.schemaViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.schemaViolationReason: object expected"); message.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.fromObject(object.schemaViolationReason, long + 1); } if (object.messageTransformationFailureReason != null) { - if (typeof object.messageTransformationFailureReason !== "object") + if (!$util.isObject(object.messageTransformationFailureReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.CloudStorageFailure.messageTransformationFailureReason: object expected"); message.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.fromObject(object.messageTransformationFailureReason, long + 1); } @@ -5860,45 +5976,51 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CloudStorageFailure.toObject = function toObject(message, options) { + CloudStorageFailure.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.bucket = ""; object.objectName = ""; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.objectGeneration = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.objectGeneration = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.objectGeneration = options.longs === String ? "0" : 0; + object.objectGeneration = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.bucket != null && message.hasOwnProperty("bucket")) + if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) object.bucket = message.bucket; - if (message.objectName != null && message.hasOwnProperty("objectName")) + if (message.objectName != null && Object.hasOwnProperty.call(message, "objectName")) object.objectName = message.objectName; - if (message.objectGeneration != null && message.hasOwnProperty("objectGeneration")) - if (typeof message.objectGeneration === "number") + if (message.objectGeneration != null && Object.hasOwnProperty.call(message, "objectGeneration")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.objectGeneration = typeof message.objectGeneration === "number" ? BigInt(message.objectGeneration) : $util.Long.fromBits(message.objectGeneration.low >>> 0, message.objectGeneration.high >>> 0, false).toBigInt(); + else if (typeof message.objectGeneration === "number") object.objectGeneration = options.longs === String ? String(message.objectGeneration) : message.objectGeneration; else object.objectGeneration = options.longs === String ? $util.Long.prototype.toString.call(message.objectGeneration) : options.longs === Number ? new $util.LongBits(message.objectGeneration.low >>> 0, message.objectGeneration.high >>> 0).toNumber() : message.objectGeneration; - if (message.avroFailureReason != null && message.hasOwnProperty("avroFailureReason")) { - object.avroFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.AvroFailureReason.toObject(message.avroFailureReason, options); + if (message.avroFailureReason != null && Object.hasOwnProperty.call(message, "avroFailureReason")) { + object.avroFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.AvroFailureReason.toObject(message.avroFailureReason, options, q + 1); if (options.oneofs) object.reason = "avroFailureReason"; } - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { - object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options); + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { + object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options, q + 1); if (options.oneofs) object.reason = "apiViolationReason"; } - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { - object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options); + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { + object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options, q + 1); if (options.oneofs) object.reason = "schemaViolationReason"; } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { - object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options); + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { + object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options, q + 1); if (options.oneofs) object.reason = "messageTransformationFailureReason"; } @@ -6055,9 +6177,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AwsMskFailureReason.encode = function encode(message, writer) { + AwsMskFailureReason.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.clusterArn != null && Object.hasOwnProperty.call(message, "clusterArn")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.clusterArn); if (message.kafkaTopic != null && Object.hasOwnProperty.call(message, "kafkaTopic")) @@ -6067,11 +6193,11 @@ if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.offset); if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) - $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 7, wireType 2 =*/58).fork(), q + 1).ldelim(); return writer; }; @@ -6085,7 +6211,7 @@ * @returns {$protobuf.Writer} Writer */ AwsMskFailureReason.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -6180,19 +6306,19 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.clusterArn != null && message.hasOwnProperty("clusterArn")) + if (message.clusterArn != null && Object.hasOwnProperty.call(message, "clusterArn")) if (!$util.isString(message.clusterArn)) return "clusterArn: string expected"; - if (message.kafkaTopic != null && message.hasOwnProperty("kafkaTopic")) + if (message.kafkaTopic != null && Object.hasOwnProperty.call(message, "kafkaTopic")) if (!$util.isString(message.kafkaTopic)) return "kafkaTopic: string expected"; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) if (!$util.isInteger(message.partitionId) && !(message.partitionId && $util.isInteger(message.partitionId.low) && $util.isInteger(message.partitionId.high))) return "partitionId: integer|Long expected"; - if (message.offset != null && message.hasOwnProperty("offset")) + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) if (!$util.isInteger(message.offset) && !(message.offset && $util.isInteger(message.offset.low) && $util.isInteger(message.offset.high))) return "offset: integer|Long expected"; - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { properties.reason = 1; { var error = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.verify(message.apiViolationReason, long + 1); @@ -6200,7 +6326,7 @@ return "apiViolationReason." + error; } } - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -6210,7 +6336,7 @@ return "schemaViolationReason." + error; } } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -6234,6 +6360,8 @@ AwsMskFailureReason.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -6245,7 +6373,7 @@ message.kafkaTopic = String(object.kafkaTopic); if (object.partitionId != null) if ($util.Long) - (message.partitionId = $util.Long.fromValue(object.partitionId)).unsigned = false; + message.partitionId = $util.Long.fromValue(object.partitionId, false); else if (typeof object.partitionId === "string") message.partitionId = parseInt(object.partitionId, 10); else if (typeof object.partitionId === "number") @@ -6254,7 +6382,7 @@ message.partitionId = new $util.LongBits(object.partitionId.low >>> 0, object.partitionId.high >>> 0).toNumber(); if (object.offset != null) if ($util.Long) - (message.offset = $util.Long.fromValue(object.offset)).unsigned = false; + message.offset = $util.Long.fromValue(object.offset, false); else if (typeof object.offset === "string") message.offset = parseInt(object.offset, 10); else if (typeof object.offset === "number") @@ -6262,17 +6390,17 @@ else if (typeof object.offset === "object") message.offset = new $util.LongBits(object.offset.low >>> 0, object.offset.high >>> 0).toNumber(); if (object.apiViolationReason != null) { - if (typeof object.apiViolationReason !== "object") + if (!$util.isObject(object.apiViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason.apiViolationReason: object expected"); message.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.fromObject(object.apiViolationReason, long + 1); } if (object.schemaViolationReason != null) { - if (typeof object.schemaViolationReason !== "object") + if (!$util.isObject(object.schemaViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason.schemaViolationReason: object expected"); message.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.fromObject(object.schemaViolationReason, long + 1); } if (object.messageTransformationFailureReason != null) { - if (typeof object.messageTransformationFailureReason !== "object") + if (!$util.isObject(object.messageTransformationFailureReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AwsMskFailureReason.messageTransformationFailureReason: object expected"); message.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.fromObject(object.messageTransformationFailureReason, long + 1); } @@ -6288,50 +6416,58 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AwsMskFailureReason.toObject = function toObject(message, options) { + AwsMskFailureReason.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.clusterArn = ""; object.kafkaTopic = ""; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.partitionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.partitionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.partitionId = options.longs === String ? "0" : 0; + object.partitionId = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.offset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.offset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.offset = options.longs === String ? "0" : 0; + object.offset = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.clusterArn != null && message.hasOwnProperty("clusterArn")) + if (message.clusterArn != null && Object.hasOwnProperty.call(message, "clusterArn")) object.clusterArn = message.clusterArn; - if (message.kafkaTopic != null && message.hasOwnProperty("kafkaTopic")) + if (message.kafkaTopic != null && Object.hasOwnProperty.call(message, "kafkaTopic")) object.kafkaTopic = message.kafkaTopic; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) - if (typeof message.partitionId === "number") + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.partitionId = typeof message.partitionId === "number" ? BigInt(message.partitionId) : $util.Long.fromBits(message.partitionId.low >>> 0, message.partitionId.high >>> 0, false).toBigInt(); + else if (typeof message.partitionId === "number") object.partitionId = options.longs === String ? String(message.partitionId) : message.partitionId; else object.partitionId = options.longs === String ? $util.Long.prototype.toString.call(message.partitionId) : options.longs === Number ? new $util.LongBits(message.partitionId.low >>> 0, message.partitionId.high >>> 0).toNumber() : message.partitionId; - if (message.offset != null && message.hasOwnProperty("offset")) - if (typeof message.offset === "number") + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.offset = typeof message.offset === "number" ? BigInt(message.offset) : $util.Long.fromBits(message.offset.low >>> 0, message.offset.high >>> 0, false).toBigInt(); + else if (typeof message.offset === "number") object.offset = options.longs === String ? String(message.offset) : message.offset; else object.offset = options.longs === String ? $util.Long.prototype.toString.call(message.offset) : options.longs === Number ? new $util.LongBits(message.offset.low >>> 0, message.offset.high >>> 0).toNumber() : message.offset; - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { - object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options); + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { + object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options, q + 1); if (options.oneofs) object.reason = "apiViolationReason"; } - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { - object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options); + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { + object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options, q + 1); if (options.oneofs) object.reason = "schemaViolationReason"; } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { - object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options); + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { + object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options, q + 1); if (options.oneofs) object.reason = "messageTransformationFailureReason"; } @@ -6488,9 +6624,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AzureEventHubsFailureReason.encode = function encode(message, writer) { + AzureEventHubsFailureReason.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.namespace != null && Object.hasOwnProperty.call(message, "namespace")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.namespace); if (message.eventHub != null && Object.hasOwnProperty.call(message, "eventHub")) @@ -6500,11 +6640,11 @@ if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.offset); if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) - $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 7, wireType 2 =*/58).fork(), q + 1).ldelim(); return writer; }; @@ -6518,7 +6658,7 @@ * @returns {$protobuf.Writer} Writer */ AzureEventHubsFailureReason.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -6613,19 +6753,19 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.namespace != null && message.hasOwnProperty("namespace")) + if (message.namespace != null && Object.hasOwnProperty.call(message, "namespace")) if (!$util.isString(message.namespace)) return "namespace: string expected"; - if (message.eventHub != null && message.hasOwnProperty("eventHub")) + if (message.eventHub != null && Object.hasOwnProperty.call(message, "eventHub")) if (!$util.isString(message.eventHub)) return "eventHub: string expected"; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) if (!$util.isInteger(message.partitionId) && !(message.partitionId && $util.isInteger(message.partitionId.low) && $util.isInteger(message.partitionId.high))) return "partitionId: integer|Long expected"; - if (message.offset != null && message.hasOwnProperty("offset")) + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) if (!$util.isInteger(message.offset) && !(message.offset && $util.isInteger(message.offset.low) && $util.isInteger(message.offset.high))) return "offset: integer|Long expected"; - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { properties.reason = 1; { var error = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.verify(message.apiViolationReason, long + 1); @@ -6633,7 +6773,7 @@ return "apiViolationReason." + error; } } - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -6643,7 +6783,7 @@ return "schemaViolationReason." + error; } } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -6667,6 +6807,8 @@ AzureEventHubsFailureReason.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -6678,7 +6820,7 @@ message.eventHub = String(object.eventHub); if (object.partitionId != null) if ($util.Long) - (message.partitionId = $util.Long.fromValue(object.partitionId)).unsigned = false; + message.partitionId = $util.Long.fromValue(object.partitionId, false); else if (typeof object.partitionId === "string") message.partitionId = parseInt(object.partitionId, 10); else if (typeof object.partitionId === "number") @@ -6687,7 +6829,7 @@ message.partitionId = new $util.LongBits(object.partitionId.low >>> 0, object.partitionId.high >>> 0).toNumber(); if (object.offset != null) if ($util.Long) - (message.offset = $util.Long.fromValue(object.offset)).unsigned = false; + message.offset = $util.Long.fromValue(object.offset, false); else if (typeof object.offset === "string") message.offset = parseInt(object.offset, 10); else if (typeof object.offset === "number") @@ -6695,17 +6837,17 @@ else if (typeof object.offset === "object") message.offset = new $util.LongBits(object.offset.low >>> 0, object.offset.high >>> 0).toNumber(); if (object.apiViolationReason != null) { - if (typeof object.apiViolationReason !== "object") + if (!$util.isObject(object.apiViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason.apiViolationReason: object expected"); message.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.fromObject(object.apiViolationReason, long + 1); } if (object.schemaViolationReason != null) { - if (typeof object.schemaViolationReason !== "object") + if (!$util.isObject(object.schemaViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason.schemaViolationReason: object expected"); message.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.fromObject(object.schemaViolationReason, long + 1); } if (object.messageTransformationFailureReason != null) { - if (typeof object.messageTransformationFailureReason !== "object") + if (!$util.isObject(object.messageTransformationFailureReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AzureEventHubsFailureReason.messageTransformationFailureReason: object expected"); message.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.fromObject(object.messageTransformationFailureReason, long + 1); } @@ -6721,50 +6863,58 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AzureEventHubsFailureReason.toObject = function toObject(message, options) { + AzureEventHubsFailureReason.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.namespace = ""; object.eventHub = ""; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.partitionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.partitionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.partitionId = options.longs === String ? "0" : 0; + object.partitionId = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.offset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.offset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.offset = options.longs === String ? "0" : 0; + object.offset = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.namespace != null && message.hasOwnProperty("namespace")) + if (message.namespace != null && Object.hasOwnProperty.call(message, "namespace")) object.namespace = message.namespace; - if (message.eventHub != null && message.hasOwnProperty("eventHub")) + if (message.eventHub != null && Object.hasOwnProperty.call(message, "eventHub")) object.eventHub = message.eventHub; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) - if (typeof message.partitionId === "number") + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.partitionId = typeof message.partitionId === "number" ? BigInt(message.partitionId) : $util.Long.fromBits(message.partitionId.low >>> 0, message.partitionId.high >>> 0, false).toBigInt(); + else if (typeof message.partitionId === "number") object.partitionId = options.longs === String ? String(message.partitionId) : message.partitionId; else object.partitionId = options.longs === String ? $util.Long.prototype.toString.call(message.partitionId) : options.longs === Number ? new $util.LongBits(message.partitionId.low >>> 0, message.partitionId.high >>> 0).toNumber() : message.partitionId; - if (message.offset != null && message.hasOwnProperty("offset")) - if (typeof message.offset === "number") + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.offset = typeof message.offset === "number" ? BigInt(message.offset) : $util.Long.fromBits(message.offset.low >>> 0, message.offset.high >>> 0, false).toBigInt(); + else if (typeof message.offset === "number") object.offset = options.longs === String ? String(message.offset) : message.offset; else object.offset = options.longs === String ? $util.Long.prototype.toString.call(message.offset) : options.longs === Number ? new $util.LongBits(message.offset.low >>> 0, message.offset.high >>> 0).toNumber() : message.offset; - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { - object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options); + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { + object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options, q + 1); if (options.oneofs) object.reason = "apiViolationReason"; } - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { - object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options); + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { + object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options, q + 1); if (options.oneofs) object.reason = "schemaViolationReason"; } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { - object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options); + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { + object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options, q + 1); if (options.oneofs) object.reason = "messageTransformationFailureReason"; } @@ -6921,9 +7071,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ConfluentCloudFailureReason.encode = function encode(message, writer) { + ConfluentCloudFailureReason.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.clusterId != null && Object.hasOwnProperty.call(message, "clusterId")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.clusterId); if (message.kafkaTopic != null && Object.hasOwnProperty.call(message, "kafkaTopic")) @@ -6933,11 +7087,11 @@ if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) writer.uint32(/* id 4, wireType 0 =*/32).int64(message.offset); if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) - $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 7, wireType 2 =*/58).fork(), q + 1).ldelim(); return writer; }; @@ -6951,7 +7105,7 @@ * @returns {$protobuf.Writer} Writer */ ConfluentCloudFailureReason.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -7046,19 +7200,19 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.clusterId != null && message.hasOwnProperty("clusterId")) + if (message.clusterId != null && Object.hasOwnProperty.call(message, "clusterId")) if (!$util.isString(message.clusterId)) return "clusterId: string expected"; - if (message.kafkaTopic != null && message.hasOwnProperty("kafkaTopic")) + if (message.kafkaTopic != null && Object.hasOwnProperty.call(message, "kafkaTopic")) if (!$util.isString(message.kafkaTopic)) return "kafkaTopic: string expected"; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) if (!$util.isInteger(message.partitionId) && !(message.partitionId && $util.isInteger(message.partitionId.low) && $util.isInteger(message.partitionId.high))) return "partitionId: integer|Long expected"; - if (message.offset != null && message.hasOwnProperty("offset")) + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) if (!$util.isInteger(message.offset) && !(message.offset && $util.isInteger(message.offset.low) && $util.isInteger(message.offset.high))) return "offset: integer|Long expected"; - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { properties.reason = 1; { var error = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.verify(message.apiViolationReason, long + 1); @@ -7066,7 +7220,7 @@ return "apiViolationReason." + error; } } - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -7076,7 +7230,7 @@ return "schemaViolationReason." + error; } } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -7100,6 +7254,8 @@ ConfluentCloudFailureReason.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -7111,7 +7267,7 @@ message.kafkaTopic = String(object.kafkaTopic); if (object.partitionId != null) if ($util.Long) - (message.partitionId = $util.Long.fromValue(object.partitionId)).unsigned = false; + message.partitionId = $util.Long.fromValue(object.partitionId, false); else if (typeof object.partitionId === "string") message.partitionId = parseInt(object.partitionId, 10); else if (typeof object.partitionId === "number") @@ -7120,7 +7276,7 @@ message.partitionId = new $util.LongBits(object.partitionId.low >>> 0, object.partitionId.high >>> 0).toNumber(); if (object.offset != null) if ($util.Long) - (message.offset = $util.Long.fromValue(object.offset)).unsigned = false; + message.offset = $util.Long.fromValue(object.offset, false); else if (typeof object.offset === "string") message.offset = parseInt(object.offset, 10); else if (typeof object.offset === "number") @@ -7128,17 +7284,17 @@ else if (typeof object.offset === "object") message.offset = new $util.LongBits(object.offset.low >>> 0, object.offset.high >>> 0).toNumber(); if (object.apiViolationReason != null) { - if (typeof object.apiViolationReason !== "object") + if (!$util.isObject(object.apiViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason.apiViolationReason: object expected"); message.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.fromObject(object.apiViolationReason, long + 1); } if (object.schemaViolationReason != null) { - if (typeof object.schemaViolationReason !== "object") + if (!$util.isObject(object.schemaViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason.schemaViolationReason: object expected"); message.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.fromObject(object.schemaViolationReason, long + 1); } if (object.messageTransformationFailureReason != null) { - if (typeof object.messageTransformationFailureReason !== "object") + if (!$util.isObject(object.messageTransformationFailureReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.ConfluentCloudFailureReason.messageTransformationFailureReason: object expected"); message.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.fromObject(object.messageTransformationFailureReason, long + 1); } @@ -7154,50 +7310,58 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ConfluentCloudFailureReason.toObject = function toObject(message, options) { + ConfluentCloudFailureReason.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.clusterId = ""; object.kafkaTopic = ""; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.partitionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.partitionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.partitionId = options.longs === String ? "0" : 0; + object.partitionId = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.offset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.offset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.offset = options.longs === String ? "0" : 0; + object.offset = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.clusterId != null && message.hasOwnProperty("clusterId")) + if (message.clusterId != null && Object.hasOwnProperty.call(message, "clusterId")) object.clusterId = message.clusterId; - if (message.kafkaTopic != null && message.hasOwnProperty("kafkaTopic")) + if (message.kafkaTopic != null && Object.hasOwnProperty.call(message, "kafkaTopic")) object.kafkaTopic = message.kafkaTopic; - if (message.partitionId != null && message.hasOwnProperty("partitionId")) - if (typeof message.partitionId === "number") + if (message.partitionId != null && Object.hasOwnProperty.call(message, "partitionId")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.partitionId = typeof message.partitionId === "number" ? BigInt(message.partitionId) : $util.Long.fromBits(message.partitionId.low >>> 0, message.partitionId.high >>> 0, false).toBigInt(); + else if (typeof message.partitionId === "number") object.partitionId = options.longs === String ? String(message.partitionId) : message.partitionId; else object.partitionId = options.longs === String ? $util.Long.prototype.toString.call(message.partitionId) : options.longs === Number ? new $util.LongBits(message.partitionId.low >>> 0, message.partitionId.high >>> 0).toNumber() : message.partitionId; - if (message.offset != null && message.hasOwnProperty("offset")) - if (typeof message.offset === "number") + if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.offset = typeof message.offset === "number" ? BigInt(message.offset) : $util.Long.fromBits(message.offset.low >>> 0, message.offset.high >>> 0, false).toBigInt(); + else if (typeof message.offset === "number") object.offset = options.longs === String ? String(message.offset) : message.offset; else object.offset = options.longs === String ? $util.Long.prototype.toString.call(message.offset) : options.longs === Number ? new $util.LongBits(message.offset.low >>> 0, message.offset.high >>> 0).toNumber() : message.offset; - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { - object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options); + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { + object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options, q + 1); if (options.oneofs) object.reason = "apiViolationReason"; } - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { - object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options); + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { + object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options, q + 1); if (options.oneofs) object.reason = "schemaViolationReason"; } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { - object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options); + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { + object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options, q + 1); if (options.oneofs) object.reason = "messageTransformationFailureReason"; } @@ -7345,9 +7509,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AwsKinesisFailureReason.encode = function encode(message, writer) { + AwsKinesisFailureReason.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.streamArn != null && Object.hasOwnProperty.call(message, "streamArn")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.streamArn); if (message.partitionKey != null && Object.hasOwnProperty.call(message, "partitionKey")) @@ -7355,11 +7523,11 @@ if (message.sequenceNumber != null && Object.hasOwnProperty.call(message, "sequenceNumber")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.sequenceNumber); if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.encode(message.schemaViolationReason, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) - $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.encode(message.messageTransformationFailureReason, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) - $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.encode(message.apiViolationReason, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); return writer; }; @@ -7373,7 +7541,7 @@ * @returns {$protobuf.Writer} Writer */ AwsKinesisFailureReason.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -7464,16 +7632,16 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.streamArn != null && message.hasOwnProperty("streamArn")) + if (message.streamArn != null && Object.hasOwnProperty.call(message, "streamArn")) if (!$util.isString(message.streamArn)) return "streamArn: string expected"; - if (message.partitionKey != null && message.hasOwnProperty("partitionKey")) + if (message.partitionKey != null && Object.hasOwnProperty.call(message, "partitionKey")) if (!$util.isString(message.partitionKey)) return "partitionKey: string expected"; - if (message.sequenceNumber != null && message.hasOwnProperty("sequenceNumber")) + if (message.sequenceNumber != null && Object.hasOwnProperty.call(message, "sequenceNumber")) if (!$util.isString(message.sequenceNumber)) return "sequenceNumber: string expected"; - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { properties.reason = 1; { var error = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.verify(message.schemaViolationReason, long + 1); @@ -7481,7 +7649,7 @@ return "schemaViolationReason." + error; } } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -7491,7 +7659,7 @@ return "messageTransformationFailureReason." + error; } } - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { if (properties.reason === 1) return "reason: multiple values"; properties.reason = 1; @@ -7515,6 +7683,8 @@ AwsKinesisFailureReason.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -7527,17 +7697,17 @@ if (object.sequenceNumber != null) message.sequenceNumber = String(object.sequenceNumber); if (object.schemaViolationReason != null) { - if (typeof object.schemaViolationReason !== "object") + if (!$util.isObject(object.schemaViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason.schemaViolationReason: object expected"); message.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.fromObject(object.schemaViolationReason, long + 1); } if (object.messageTransformationFailureReason != null) { - if (typeof object.messageTransformationFailureReason !== "object") + if (!$util.isObject(object.messageTransformationFailureReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason.messageTransformationFailureReason: object expected"); message.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.fromObject(object.messageTransformationFailureReason, long + 1); } if (object.apiViolationReason != null) { - if (typeof object.apiViolationReason !== "object") + if (!$util.isObject(object.apiViolationReason)) throw TypeError(".google.pubsub.v1.IngestionFailureEvent.AwsKinesisFailureReason.apiViolationReason: object expected"); message.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.fromObject(object.apiViolationReason, long + 1); } @@ -7553,33 +7723,37 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AwsKinesisFailureReason.toObject = function toObject(message, options) { + AwsKinesisFailureReason.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.streamArn = ""; object.partitionKey = ""; object.sequenceNumber = ""; } - if (message.streamArn != null && message.hasOwnProperty("streamArn")) + if (message.streamArn != null && Object.hasOwnProperty.call(message, "streamArn")) object.streamArn = message.streamArn; - if (message.partitionKey != null && message.hasOwnProperty("partitionKey")) + if (message.partitionKey != null && Object.hasOwnProperty.call(message, "partitionKey")) object.partitionKey = message.partitionKey; - if (message.sequenceNumber != null && message.hasOwnProperty("sequenceNumber")) + if (message.sequenceNumber != null && Object.hasOwnProperty.call(message, "sequenceNumber")) object.sequenceNumber = message.sequenceNumber; - if (message.schemaViolationReason != null && message.hasOwnProperty("schemaViolationReason")) { - object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options); + if (message.schemaViolationReason != null && Object.hasOwnProperty.call(message, "schemaViolationReason")) { + object.schemaViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.SchemaViolationReason.toObject(message.schemaViolationReason, options, q + 1); if (options.oneofs) object.reason = "schemaViolationReason"; } - if (message.messageTransformationFailureReason != null && message.hasOwnProperty("messageTransformationFailureReason")) { - object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options); + if (message.messageTransformationFailureReason != null && Object.hasOwnProperty.call(message, "messageTransformationFailureReason")) { + object.messageTransformationFailureReason = $root.google.pubsub.v1.IngestionFailureEvent.MessageTransformationFailureReason.toObject(message.messageTransformationFailureReason, options, q + 1); if (options.oneofs) object.reason = "messageTransformationFailureReason"; } - if (message.apiViolationReason != null && message.hasOwnProperty("apiViolationReason")) { - object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options); + if (message.apiViolationReason != null && Object.hasOwnProperty.call(message, "apiViolationReason")) { + object.apiViolationReason = $root.google.pubsub.v1.IngestionFailureEvent.ApiViolationReason.toObject(message.apiViolationReason, options, q + 1); if (options.oneofs) object.reason = "apiViolationReason"; } @@ -7680,9 +7854,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - JavaScriptUDF.encode = function encode(message, writer) { + JavaScriptUDF.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.functionName != null && Object.hasOwnProperty.call(message, "functionName")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.functionName); if (message.code != null && Object.hasOwnProperty.call(message, "code")) @@ -7700,7 +7878,7 @@ * @returns {$protobuf.Writer} Writer */ JavaScriptUDF.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -7774,10 +7952,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.functionName != null && message.hasOwnProperty("functionName")) + if (message.functionName != null && Object.hasOwnProperty.call(message, "functionName")) if (!$util.isString(message.functionName)) return "functionName: string expected"; - if (message.code != null && message.hasOwnProperty("code")) + if (message.code != null && Object.hasOwnProperty.call(message, "code")) if (!$util.isString(message.code)) return "code: string expected"; return null; @@ -7794,6 +7972,8 @@ JavaScriptUDF.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.JavaScriptUDF) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.JavaScriptUDF: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -7815,17 +7995,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - JavaScriptUDF.toObject = function toObject(message, options) { + JavaScriptUDF.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.functionName = ""; object.code = ""; } - if (message.functionName != null && message.hasOwnProperty("functionName")) + if (message.functionName != null && Object.hasOwnProperty.call(message, "functionName")) object.functionName = message.functionName; - if (message.code != null && message.hasOwnProperty("code")) + if (message.code != null && Object.hasOwnProperty.call(message, "code")) object.code = message.code; return object; }; @@ -7944,13 +8128,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AIInference.encode = function encode(message, writer) { + AIInference.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.endpoint != null && Object.hasOwnProperty.call(message, "endpoint")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.endpoint); if (message.unstructuredInference != null && Object.hasOwnProperty.call(message, "unstructuredInference")) - $root.google.pubsub.v1.AIInference.UnstructuredInference.encode(message.unstructuredInference, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.AIInference.UnstructuredInference.encode(message.unstructuredInference, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.serviceAccountEmail); return writer; @@ -7966,7 +8154,7 @@ * @returns {$protobuf.Writer} Writer */ AIInference.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -8045,10 +8233,10 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.endpoint != null && message.hasOwnProperty("endpoint")) + if (message.endpoint != null && Object.hasOwnProperty.call(message, "endpoint")) if (!$util.isString(message.endpoint)) return "endpoint: string expected"; - if (message.unstructuredInference != null && message.hasOwnProperty("unstructuredInference")) { + if (message.unstructuredInference != null && Object.hasOwnProperty.call(message, "unstructuredInference")) { properties.inferenceMode = 1; { var error = $root.google.pubsub.v1.AIInference.UnstructuredInference.verify(message.unstructuredInference, long + 1); @@ -8056,7 +8244,7 @@ return "unstructuredInference." + error; } } - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) if (!$util.isString(message.serviceAccountEmail)) return "serviceAccountEmail: string expected"; return null; @@ -8073,6 +8261,8 @@ AIInference.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.AIInference) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.AIInference: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -8081,7 +8271,7 @@ if (object.endpoint != null) message.endpoint = String(object.endpoint); if (object.unstructuredInference != null) { - if (typeof object.unstructuredInference !== "object") + if (!$util.isObject(object.unstructuredInference)) throw TypeError(".google.pubsub.v1.AIInference.unstructuredInference: object expected"); message.unstructuredInference = $root.google.pubsub.v1.AIInference.UnstructuredInference.fromObject(object.unstructuredInference, long + 1); } @@ -8099,22 +8289,26 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AIInference.toObject = function toObject(message, options) { + AIInference.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.endpoint = ""; object.serviceAccountEmail = ""; } - if (message.endpoint != null && message.hasOwnProperty("endpoint")) + if (message.endpoint != null && Object.hasOwnProperty.call(message, "endpoint")) object.endpoint = message.endpoint; - if (message.unstructuredInference != null && message.hasOwnProperty("unstructuredInference")) { - object.unstructuredInference = $root.google.pubsub.v1.AIInference.UnstructuredInference.toObject(message.unstructuredInference, options); + if (message.unstructuredInference != null && Object.hasOwnProperty.call(message, "unstructuredInference")) { + object.unstructuredInference = $root.google.pubsub.v1.AIInference.UnstructuredInference.toObject(message.unstructuredInference, options, q + 1); if (options.oneofs) object.inferenceMode = "unstructuredInference"; } - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) object.serviceAccountEmail = message.serviceAccountEmail; return object; }; @@ -8198,11 +8392,15 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UnstructuredInference.encode = function encode(message, writer) { + UnstructuredInference.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.parameters != null && Object.hasOwnProperty.call(message, "parameters")) - $root.google.protobuf.Struct.encode(message.parameters, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.Struct.encode(message.parameters, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -8216,7 +8414,7 @@ * @returns {$protobuf.Writer} Writer */ UnstructuredInference.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -8286,7 +8484,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.parameters != null && message.hasOwnProperty("parameters")) { + if (message.parameters != null && Object.hasOwnProperty.call(message, "parameters")) { var error = $root.google.protobuf.Struct.verify(message.parameters, long + 1); if (error) return "parameters." + error; @@ -8305,13 +8503,15 @@ UnstructuredInference.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.AIInference.UnstructuredInference) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.AIInference.UnstructuredInference: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.pubsub.v1.AIInference.UnstructuredInference(); if (object.parameters != null) { - if (typeof object.parameters !== "object") + if (!$util.isObject(object.parameters)) throw TypeError(".google.pubsub.v1.AIInference.UnstructuredInference.parameters: object expected"); message.parameters = $root.google.protobuf.Struct.fromObject(object.parameters, long + 1); } @@ -8327,14 +8527,18 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - UnstructuredInference.toObject = function toObject(message, options) { + UnstructuredInference.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.parameters = null; - if (message.parameters != null && message.hasOwnProperty("parameters")) - object.parameters = $root.google.protobuf.Struct.toObject(message.parameters, options); + if (message.parameters != null && Object.hasOwnProperty.call(message, "parameters")) + object.parameters = $root.google.protobuf.Struct.toObject(message.parameters, options, q + 1); return object; }; @@ -8464,17 +8668,21 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MessageTransform.encode = function encode(message, writer) { + MessageTransform.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.javascriptUdf != null && Object.hasOwnProperty.call(message, "javascriptUdf")) - $root.google.pubsub.v1.JavaScriptUDF.encode(message.javascriptUdf, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.JavaScriptUDF.encode(message.javascriptUdf, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.enabled != null && Object.hasOwnProperty.call(message, "enabled")) writer.uint32(/* id 3, wireType 0 =*/24).bool(message.enabled); if (message.disabled != null && Object.hasOwnProperty.call(message, "disabled")) writer.uint32(/* id 4, wireType 0 =*/32).bool(message.disabled); if (message.aiInference != null && Object.hasOwnProperty.call(message, "aiInference")) - $root.google.pubsub.v1.AIInference.encode(message.aiInference, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.AIInference.encode(message.aiInference, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); return writer; }; @@ -8488,7 +8696,7 @@ * @returns {$protobuf.Writer} Writer */ MessageTransform.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -8571,7 +8779,7 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.javascriptUdf != null && message.hasOwnProperty("javascriptUdf")) { + if (message.javascriptUdf != null && Object.hasOwnProperty.call(message, "javascriptUdf")) { properties.transform = 1; { var error = $root.google.pubsub.v1.JavaScriptUDF.verify(message.javascriptUdf, long + 1); @@ -8579,7 +8787,7 @@ return "javascriptUdf." + error; } } - if (message.aiInference != null && message.hasOwnProperty("aiInference")) { + if (message.aiInference != null && Object.hasOwnProperty.call(message, "aiInference")) { if (properties.transform === 1) return "transform: multiple values"; properties.transform = 1; @@ -8589,10 +8797,10 @@ return "aiInference." + error; } } - if (message.enabled != null && message.hasOwnProperty("enabled")) + if (message.enabled != null && Object.hasOwnProperty.call(message, "enabled")) if (typeof message.enabled !== "boolean") return "enabled: boolean expected"; - if (message.disabled != null && message.hasOwnProperty("disabled")) + if (message.disabled != null && Object.hasOwnProperty.call(message, "disabled")) if (typeof message.disabled !== "boolean") return "disabled: boolean expected"; return null; @@ -8609,18 +8817,20 @@ MessageTransform.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.MessageTransform) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.MessageTransform: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.pubsub.v1.MessageTransform(); if (object.javascriptUdf != null) { - if (typeof object.javascriptUdf !== "object") + if (!$util.isObject(object.javascriptUdf)) throw TypeError(".google.pubsub.v1.MessageTransform.javascriptUdf: object expected"); message.javascriptUdf = $root.google.pubsub.v1.JavaScriptUDF.fromObject(object.javascriptUdf, long + 1); } if (object.aiInference != null) { - if (typeof object.aiInference !== "object") + if (!$util.isObject(object.aiInference)) throw TypeError(".google.pubsub.v1.MessageTransform.aiInference: object expected"); message.aiInference = $root.google.pubsub.v1.AIInference.fromObject(object.aiInference, long + 1); } @@ -8640,25 +8850,29 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MessageTransform.toObject = function toObject(message, options) { + MessageTransform.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.enabled = false; object.disabled = false; } - if (message.javascriptUdf != null && message.hasOwnProperty("javascriptUdf")) { - object.javascriptUdf = $root.google.pubsub.v1.JavaScriptUDF.toObject(message.javascriptUdf, options); + if (message.javascriptUdf != null && Object.hasOwnProperty.call(message, "javascriptUdf")) { + object.javascriptUdf = $root.google.pubsub.v1.JavaScriptUDF.toObject(message.javascriptUdf, options, q + 1); if (options.oneofs) object.transform = "javascriptUdf"; } - if (message.enabled != null && message.hasOwnProperty("enabled")) + if (message.enabled != null && Object.hasOwnProperty.call(message, "enabled")) object.enabled = message.enabled; - if (message.disabled != null && message.hasOwnProperty("disabled")) + if (message.disabled != null && Object.hasOwnProperty.call(message, "disabled")) object.disabled = message.disabled; - if (message.aiInference != null && message.hasOwnProperty("aiInference")) { - object.aiInference = $root.google.pubsub.v1.AIInference.toObject(message.aiInference, options); + if (message.aiInference != null && Object.hasOwnProperty.call(message, "aiInference")) { + object.aiInference = $root.google.pubsub.v1.AIInference.toObject(message.aiInference, options, q + 1); if (options.oneofs) object.transform = "aiInference"; } @@ -8840,31 +9054,35 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Topic.encode = function encode(message, writer) { + Topic.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) for (var keys = Object.keys(message.labels), i = 0; i < keys.length; ++i) writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.labels[keys[i]]).ldelim(); if (message.messageStoragePolicy != null && Object.hasOwnProperty.call(message, "messageStoragePolicy")) - $root.google.pubsub.v1.MessageStoragePolicy.encode(message.messageStoragePolicy, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.pubsub.v1.MessageStoragePolicy.encode(message.messageStoragePolicy, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.kmsKeyName != null && Object.hasOwnProperty.call(message, "kmsKeyName")) writer.uint32(/* id 5, wireType 2 =*/42).string(message.kmsKeyName); if (message.schemaSettings != null && Object.hasOwnProperty.call(message, "schemaSettings")) - $root.google.pubsub.v1.SchemaSettings.encode(message.schemaSettings, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.pubsub.v1.SchemaSettings.encode(message.schemaSettings, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.satisfiesPzs != null && Object.hasOwnProperty.call(message, "satisfiesPzs")) writer.uint32(/* id 7, wireType 0 =*/56).bool(message.satisfiesPzs); if (message.messageRetentionDuration != null && Object.hasOwnProperty.call(message, "messageRetentionDuration")) - $root.google.protobuf.Duration.encode(message.messageRetentionDuration, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.messageRetentionDuration, writer.uint32(/* id 8, wireType 2 =*/66).fork(), q + 1).ldelim(); if (message.state != null && Object.hasOwnProperty.call(message, "state")) writer.uint32(/* id 9, wireType 0 =*/72).int32(message.state); if (message.ingestionDataSourceSettings != null && Object.hasOwnProperty.call(message, "ingestionDataSourceSettings")) - $root.google.pubsub.v1.IngestionDataSourceSettings.encode(message.ingestionDataSourceSettings, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + $root.google.pubsub.v1.IngestionDataSourceSettings.encode(message.ingestionDataSourceSettings, writer.uint32(/* id 10, wireType 2 =*/82).fork(), q + 1).ldelim(); if (message.messageTransforms != null && message.messageTransforms.length) for (var i = 0; i < message.messageTransforms.length; ++i) - $root.google.pubsub.v1.MessageTransform.encode(message.messageTransforms[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); + $root.google.pubsub.v1.MessageTransform.encode(message.messageTransforms[i], writer.uint32(/* id 13, wireType 2 =*/106).fork(), q + 1).ldelim(); if (message.tags != null && Object.hasOwnProperty.call(message, "tags")) for (var keys = Object.keys(message.tags), i = 0; i < keys.length; ++i) writer.uint32(/* id 14, wireType 2 =*/114).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.tags[keys[i]]).ldelim(); @@ -8881,7 +9099,7 @@ * @returns {$protobuf.Writer} Writer */ Topic.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -9035,10 +9253,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.labels != null && message.hasOwnProperty("labels")) { + if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) { if (!$util.isObject(message.labels)) return "labels: object expected"; var key = Object.keys(message.labels); @@ -9046,28 +9264,28 @@ if (!$util.isString(message.labels[key[i]])) return "labels: string{k:string} expected"; } - if (message.messageStoragePolicy != null && message.hasOwnProperty("messageStoragePolicy")) { + if (message.messageStoragePolicy != null && Object.hasOwnProperty.call(message, "messageStoragePolicy")) { var error = $root.google.pubsub.v1.MessageStoragePolicy.verify(message.messageStoragePolicy, long + 1); if (error) return "messageStoragePolicy." + error; } - if (message.kmsKeyName != null && message.hasOwnProperty("kmsKeyName")) + if (message.kmsKeyName != null && Object.hasOwnProperty.call(message, "kmsKeyName")) if (!$util.isString(message.kmsKeyName)) return "kmsKeyName: string expected"; - if (message.schemaSettings != null && message.hasOwnProperty("schemaSettings")) { + if (message.schemaSettings != null && Object.hasOwnProperty.call(message, "schemaSettings")) { var error = $root.google.pubsub.v1.SchemaSettings.verify(message.schemaSettings, long + 1); if (error) return "schemaSettings." + error; } - if (message.satisfiesPzs != null && message.hasOwnProperty("satisfiesPzs")) + if (message.satisfiesPzs != null && Object.hasOwnProperty.call(message, "satisfiesPzs")) if (typeof message.satisfiesPzs !== "boolean") return "satisfiesPzs: boolean expected"; - if (message.messageRetentionDuration != null && message.hasOwnProperty("messageRetentionDuration")) { + if (message.messageRetentionDuration != null && Object.hasOwnProperty.call(message, "messageRetentionDuration")) { var error = $root.google.protobuf.Duration.verify(message.messageRetentionDuration, long + 1); if (error) return "messageRetentionDuration." + error; } - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -9076,12 +9294,12 @@ case 2: break; } - if (message.ingestionDataSourceSettings != null && message.hasOwnProperty("ingestionDataSourceSettings")) { + if (message.ingestionDataSourceSettings != null && Object.hasOwnProperty.call(message, "ingestionDataSourceSettings")) { var error = $root.google.pubsub.v1.IngestionDataSourceSettings.verify(message.ingestionDataSourceSettings, long + 1); if (error) return "ingestionDataSourceSettings." + error; } - if (message.messageTransforms != null && message.hasOwnProperty("messageTransforms")) { + if (message.messageTransforms != null && Object.hasOwnProperty.call(message, "messageTransforms")) { if (!Array.isArray(message.messageTransforms)) return "messageTransforms: array expected"; for (var i = 0; i < message.messageTransforms.length; ++i) { @@ -9090,7 +9308,7 @@ return "messageTransforms." + error; } } - if (message.tags != null && message.hasOwnProperty("tags")) { + if (message.tags != null && Object.hasOwnProperty.call(message, "tags")) { if (!$util.isObject(message.tags)) return "tags: object expected"; var key = Object.keys(message.tags); @@ -9112,6 +9330,8 @@ Topic.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.Topic) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.Topic: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -9120,7 +9340,7 @@ if (object.name != null) message.name = String(object.name); if (object.labels) { - if (typeof object.labels !== "object") + if (!$util.isObject(object.labels)) throw TypeError(".google.pubsub.v1.Topic.labels: object expected"); message.labels = {}; for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) { @@ -9130,21 +9350,21 @@ } } if (object.messageStoragePolicy != null) { - if (typeof object.messageStoragePolicy !== "object") + if (!$util.isObject(object.messageStoragePolicy)) throw TypeError(".google.pubsub.v1.Topic.messageStoragePolicy: object expected"); message.messageStoragePolicy = $root.google.pubsub.v1.MessageStoragePolicy.fromObject(object.messageStoragePolicy, long + 1); } if (object.kmsKeyName != null) message.kmsKeyName = String(object.kmsKeyName); if (object.schemaSettings != null) { - if (typeof object.schemaSettings !== "object") + if (!$util.isObject(object.schemaSettings)) throw TypeError(".google.pubsub.v1.Topic.schemaSettings: object expected"); message.schemaSettings = $root.google.pubsub.v1.SchemaSettings.fromObject(object.schemaSettings, long + 1); } if (object.satisfiesPzs != null) message.satisfiesPzs = Boolean(object.satisfiesPzs); if (object.messageRetentionDuration != null) { - if (typeof object.messageRetentionDuration !== "object") + if (!$util.isObject(object.messageRetentionDuration)) throw TypeError(".google.pubsub.v1.Topic.messageRetentionDuration: object expected"); message.messageRetentionDuration = $root.google.protobuf.Duration.fromObject(object.messageRetentionDuration, long + 1); } @@ -9169,7 +9389,7 @@ break; } if (object.ingestionDataSourceSettings != null) { - if (typeof object.ingestionDataSourceSettings !== "object") + if (!$util.isObject(object.ingestionDataSourceSettings)) throw TypeError(".google.pubsub.v1.Topic.ingestionDataSourceSettings: object expected"); message.ingestionDataSourceSettings = $root.google.pubsub.v1.IngestionDataSourceSettings.fromObject(object.ingestionDataSourceSettings, long + 1); } @@ -9178,13 +9398,13 @@ throw TypeError(".google.pubsub.v1.Topic.messageTransforms: array expected"); message.messageTransforms = []; for (var i = 0; i < object.messageTransforms.length; ++i) { - if (typeof object.messageTransforms[i] !== "object") + if (!$util.isObject(object.messageTransforms[i])) throw TypeError(".google.pubsub.v1.Topic.messageTransforms: object expected"); message.messageTransforms[i] = $root.google.pubsub.v1.MessageTransform.fromObject(object.messageTransforms[i], long + 1); } } if (object.tags) { - if (typeof object.tags !== "object") + if (!$util.isObject(object.tags)) throw TypeError(".google.pubsub.v1.Topic.tags: object expected"); message.tags = {}; for (var keys = Object.keys(object.tags), i = 0; i < keys.length; ++i) { @@ -9205,9 +9425,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Topic.toObject = function toObject(message, options) { + Topic.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.messageTransforms = []; @@ -9225,7 +9449,7 @@ object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; object.ingestionDataSourceSettings = null; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; var keys2; if (message.labels && (keys2 = Object.keys(message.labels)).length) { @@ -9236,24 +9460,24 @@ object.labels[keys2[j]] = message.labels[keys2[j]]; } } - if (message.messageStoragePolicy != null && message.hasOwnProperty("messageStoragePolicy")) - object.messageStoragePolicy = $root.google.pubsub.v1.MessageStoragePolicy.toObject(message.messageStoragePolicy, options); - if (message.kmsKeyName != null && message.hasOwnProperty("kmsKeyName")) + if (message.messageStoragePolicy != null && Object.hasOwnProperty.call(message, "messageStoragePolicy")) + object.messageStoragePolicy = $root.google.pubsub.v1.MessageStoragePolicy.toObject(message.messageStoragePolicy, options, q + 1); + if (message.kmsKeyName != null && Object.hasOwnProperty.call(message, "kmsKeyName")) object.kmsKeyName = message.kmsKeyName; - if (message.schemaSettings != null && message.hasOwnProperty("schemaSettings")) - object.schemaSettings = $root.google.pubsub.v1.SchemaSettings.toObject(message.schemaSettings, options); - if (message.satisfiesPzs != null && message.hasOwnProperty("satisfiesPzs")) + if (message.schemaSettings != null && Object.hasOwnProperty.call(message, "schemaSettings")) + object.schemaSettings = $root.google.pubsub.v1.SchemaSettings.toObject(message.schemaSettings, options, q + 1); + if (message.satisfiesPzs != null && Object.hasOwnProperty.call(message, "satisfiesPzs")) object.satisfiesPzs = message.satisfiesPzs; - if (message.messageRetentionDuration != null && message.hasOwnProperty("messageRetentionDuration")) - object.messageRetentionDuration = $root.google.protobuf.Duration.toObject(message.messageRetentionDuration, options); - if (message.state != null && message.hasOwnProperty("state")) + if (message.messageRetentionDuration != null && Object.hasOwnProperty.call(message, "messageRetentionDuration")) + object.messageRetentionDuration = $root.google.protobuf.Duration.toObject(message.messageRetentionDuration, options, q + 1); + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.Topic.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.Topic.State[message.state] : message.state; - if (message.ingestionDataSourceSettings != null && message.hasOwnProperty("ingestionDataSourceSettings")) - object.ingestionDataSourceSettings = $root.google.pubsub.v1.IngestionDataSourceSettings.toObject(message.ingestionDataSourceSettings, options); + if (message.ingestionDataSourceSettings != null && Object.hasOwnProperty.call(message, "ingestionDataSourceSettings")) + object.ingestionDataSourceSettings = $root.google.pubsub.v1.IngestionDataSourceSettings.toObject(message.ingestionDataSourceSettings, options, q + 1); if (message.messageTransforms && message.messageTransforms.length) { object.messageTransforms = []; for (var j = 0; j < message.messageTransforms.length; ++j) - object.messageTransforms[j] = $root.google.pubsub.v1.MessageTransform.toObject(message.messageTransforms[j], options); + object.messageTransforms[j] = $root.google.pubsub.v1.MessageTransform.toObject(message.messageTransforms[j], options, q + 1); } if (message.tags && (keys2 = Object.keys(message.tags)).length) { object.tags = {}; @@ -9401,9 +9625,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PubsubMessage.encode = function encode(message, writer) { + PubsubMessage.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.data != null && Object.hasOwnProperty.call(message, "data")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.data); if (message.attributes != null && Object.hasOwnProperty.call(message, "attributes")) @@ -9412,7 +9640,7 @@ if (message.messageId != null && Object.hasOwnProperty.call(message, "messageId")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.messageId); if (message.publishTime != null && Object.hasOwnProperty.call(message, "publishTime")) - $root.google.protobuf.Timestamp.encode(message.publishTime, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.protobuf.Timestamp.encode(message.publishTime, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.orderingKey != null && Object.hasOwnProperty.call(message, "orderingKey")) writer.uint32(/* id 5, wireType 2 =*/42).string(message.orderingKey); return writer; @@ -9428,7 +9656,7 @@ * @returns {$protobuf.Writer} Writer */ PubsubMessage.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -9535,10 +9763,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.data != null && message.hasOwnProperty("data")) + if (message.data != null && Object.hasOwnProperty.call(message, "data")) if (!(message.data && typeof message.data.length === "number" || $util.isString(message.data))) return "data: buffer expected"; - if (message.attributes != null && message.hasOwnProperty("attributes")) { + if (message.attributes != null && Object.hasOwnProperty.call(message, "attributes")) { if (!$util.isObject(message.attributes)) return "attributes: object expected"; var key = Object.keys(message.attributes); @@ -9546,15 +9774,15 @@ if (!$util.isString(message.attributes[key[i]])) return "attributes: string{k:string} expected"; } - if (message.messageId != null && message.hasOwnProperty("messageId")) + if (message.messageId != null && Object.hasOwnProperty.call(message, "messageId")) if (!$util.isString(message.messageId)) return "messageId: string expected"; - if (message.publishTime != null && message.hasOwnProperty("publishTime")) { + if (message.publishTime != null && Object.hasOwnProperty.call(message, "publishTime")) { var error = $root.google.protobuf.Timestamp.verify(message.publishTime, long + 1); if (error) return "publishTime." + error; } - if (message.orderingKey != null && message.hasOwnProperty("orderingKey")) + if (message.orderingKey != null && Object.hasOwnProperty.call(message, "orderingKey")) if (!$util.isString(message.orderingKey)) return "orderingKey: string expected"; return null; @@ -9571,6 +9799,8 @@ PubsubMessage.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PubsubMessage) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PubsubMessage: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -9582,7 +9812,7 @@ else if (object.data.length >= 0) message.data = object.data; if (object.attributes) { - if (typeof object.attributes !== "object") + if (!$util.isObject(object.attributes)) throw TypeError(".google.pubsub.v1.PubsubMessage.attributes: object expected"); message.attributes = {}; for (var keys = Object.keys(object.attributes), i = 0; i < keys.length; ++i) { @@ -9594,7 +9824,7 @@ if (object.messageId != null) message.messageId = String(object.messageId); if (object.publishTime != null) { - if (typeof object.publishTime !== "object") + if (!$util.isObject(object.publishTime)) throw TypeError(".google.pubsub.v1.PubsubMessage.publishTime: object expected"); message.publishTime = $root.google.protobuf.Timestamp.fromObject(object.publishTime, long + 1); } @@ -9612,9 +9842,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PubsubMessage.toObject = function toObject(message, options) { + PubsubMessage.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.objects || options.defaults) object.attributes = {}; @@ -9630,7 +9864,7 @@ object.publishTime = null; object.orderingKey = ""; } - if (message.data != null && message.hasOwnProperty("data")) + if (message.data != null && Object.hasOwnProperty.call(message, "data")) object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data; var keys2; if (message.attributes && (keys2 = Object.keys(message.attributes)).length) { @@ -9641,11 +9875,11 @@ object.attributes[keys2[j]] = message.attributes[keys2[j]]; } } - if (message.messageId != null && message.hasOwnProperty("messageId")) + if (message.messageId != null && Object.hasOwnProperty.call(message, "messageId")) object.messageId = message.messageId; - if (message.publishTime != null && message.hasOwnProperty("publishTime")) - object.publishTime = $root.google.protobuf.Timestamp.toObject(message.publishTime, options); - if (message.orderingKey != null && message.hasOwnProperty("orderingKey")) + if (message.publishTime != null && Object.hasOwnProperty.call(message, "publishTime")) + object.publishTime = $root.google.protobuf.Timestamp.toObject(message.publishTime, options, q + 1); + if (message.orderingKey != null && Object.hasOwnProperty.call(message, "orderingKey")) object.orderingKey = message.orderingKey; return object; }; @@ -9732,9 +9966,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GetTopicRequest.encode = function encode(message, writer) { + GetTopicRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.topic); return writer; @@ -9750,7 +9988,7 @@ * @returns {$protobuf.Writer} Writer */ GetTopicRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -9820,7 +10058,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; return null; @@ -9837,6 +10075,8 @@ GetTopicRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.GetTopicRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.GetTopicRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -9856,13 +10096,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GetTopicRequest.toObject = function toObject(message, options) { + GetTopicRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.topic = ""; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; return object; }; @@ -9958,13 +10202,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UpdateTopicRequest.encode = function encode(message, writer) { + UpdateTopicRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) - $root.google.pubsub.v1.Topic.encode(message.topic, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.Topic.encode(message.topic, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) - $root.google.protobuf.FieldMask.encode(message.updateMask, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.FieldMask.encode(message.updateMask, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -9978,7 +10226,7 @@ * @returns {$protobuf.Writer} Writer */ UpdateTopicRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -10052,12 +10300,12 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.topic != null && message.hasOwnProperty("topic")) { + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) { var error = $root.google.pubsub.v1.Topic.verify(message.topic, long + 1); if (error) return "topic." + error; } - if (message.updateMask != null && message.hasOwnProperty("updateMask")) { + if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) { var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; @@ -10076,18 +10324,20 @@ UpdateTopicRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.UpdateTopicRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.UpdateTopicRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.pubsub.v1.UpdateTopicRequest(); if (object.topic != null) { - if (typeof object.topic !== "object") + if (!$util.isObject(object.topic)) throw TypeError(".google.pubsub.v1.UpdateTopicRequest.topic: object expected"); message.topic = $root.google.pubsub.v1.Topic.fromObject(object.topic, long + 1); } if (object.updateMask != null) { - if (typeof object.updateMask !== "object") + if (!$util.isObject(object.updateMask)) throw TypeError(".google.pubsub.v1.UpdateTopicRequest.updateMask: object expected"); message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } @@ -10103,18 +10353,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - UpdateTopicRequest.toObject = function toObject(message, options) { + UpdateTopicRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.topic = null; object.updateMask = null; } - if (message.topic != null && message.hasOwnProperty("topic")) - object.topic = $root.google.pubsub.v1.Topic.toObject(message.topic, options); - if (message.updateMask != null && message.hasOwnProperty("updateMask")) - object.updateMask = $root.google.protobuf.FieldMask.toObject(message.updateMask, options); + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) + object.topic = $root.google.pubsub.v1.Topic.toObject(message.topic, options, q + 1); + if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) + object.updateMask = $root.google.protobuf.FieldMask.toObject(message.updateMask, options, q + 1); return object; }; @@ -10210,14 +10464,18 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PublishRequest.encode = function encode(message, writer) { + PublishRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.topic); if (message.messages != null && message.messages.length) for (var i = 0; i < message.messages.length; ++i) - $root.google.pubsub.v1.PubsubMessage.encode(message.messages[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.PubsubMessage.encode(message.messages[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -10231,7 +10489,7 @@ * @returns {$protobuf.Writer} Writer */ PublishRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -10307,10 +10565,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; - if (message.messages != null && message.hasOwnProperty("messages")) { + if (message.messages != null && Object.hasOwnProperty.call(message, "messages")) { if (!Array.isArray(message.messages)) return "messages: array expected"; for (var i = 0; i < message.messages.length; ++i) { @@ -10333,6 +10591,8 @@ PublishRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PublishRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PublishRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -10345,7 +10605,7 @@ throw TypeError(".google.pubsub.v1.PublishRequest.messages: array expected"); message.messages = []; for (var i = 0; i < object.messages.length; ++i) { - if (typeof object.messages[i] !== "object") + if (!$util.isObject(object.messages[i])) throw TypeError(".google.pubsub.v1.PublishRequest.messages: object expected"); message.messages[i] = $root.google.pubsub.v1.PubsubMessage.fromObject(object.messages[i], long + 1); } @@ -10362,20 +10622,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PublishRequest.toObject = function toObject(message, options) { + PublishRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.messages = []; if (options.defaults) object.topic = ""; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; if (message.messages && message.messages.length) { object.messages = []; for (var j = 0; j < message.messages.length; ++j) - object.messages[j] = $root.google.pubsub.v1.PubsubMessage.toObject(message.messages[j], options); + object.messages[j] = $root.google.pubsub.v1.PubsubMessage.toObject(message.messages[j], options, q + 1); } return object; }; @@ -10463,9 +10727,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PublishResponse.encode = function encode(message, writer) { + PublishResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.messageIds != null && message.messageIds.length) for (var i = 0; i < message.messageIds.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.messageIds[i]); @@ -10482,7 +10750,7 @@ * @returns {$protobuf.Writer} Writer */ PublishResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -10554,7 +10822,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.messageIds != null && message.hasOwnProperty("messageIds")) { + if (message.messageIds != null && Object.hasOwnProperty.call(message, "messageIds")) { if (!Array.isArray(message.messageIds)) return "messageIds: array expected"; for (var i = 0; i < message.messageIds.length; ++i) @@ -10575,6 +10843,8 @@ PublishResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PublishResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PublishResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -10599,9 +10869,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PublishResponse.toObject = function toObject(message, options) { + PublishResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.messageIds = []; @@ -10713,9 +10987,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListTopicsRequest.encode = function encode(message, writer) { + ListTopicsRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.project != null && Object.hasOwnProperty.call(message, "project")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.project); if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) @@ -10735,7 +11013,7 @@ * @returns {$protobuf.Writer} Writer */ ListTopicsRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -10813,13 +11091,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.project != null && message.hasOwnProperty("project")) + if (message.project != null && Object.hasOwnProperty.call(message, "project")) if (!$util.isString(message.project)) return "project: string expected"; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) if (!$util.isInteger(message.pageSize)) return "pageSize: integer expected"; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) if (!$util.isString(message.pageToken)) return "pageToken: string expected"; return null; @@ -10836,6 +11114,8 @@ ListTopicsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListTopicsRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListTopicsRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -10859,20 +11139,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListTopicsRequest.toObject = function toObject(message, options) { + ListTopicsRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.project = ""; object.pageSize = 0; object.pageToken = ""; } - if (message.project != null && message.hasOwnProperty("project")) + if (message.project != null && Object.hasOwnProperty.call(message, "project")) object.project = message.project; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) object.pageSize = message.pageSize; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) object.pageToken = message.pageToken; return object; }; @@ -10969,12 +11253,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListTopicsResponse.encode = function encode(message, writer) { + ListTopicsResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.topics != null && message.topics.length) for (var i = 0; i < message.topics.length; ++i) - $root.google.pubsub.v1.Topic.encode(message.topics[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.Topic.encode(message.topics[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken); return writer; @@ -10990,7 +11278,7 @@ * @returns {$protobuf.Writer} Writer */ ListTopicsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -11066,7 +11354,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.topics != null && message.hasOwnProperty("topics")) { + if (message.topics != null && Object.hasOwnProperty.call(message, "topics")) { if (!Array.isArray(message.topics)) return "topics: array expected"; for (var i = 0; i < message.topics.length; ++i) { @@ -11075,7 +11363,7 @@ return "topics." + error; } } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; return null; @@ -11092,6 +11380,8 @@ ListTopicsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListTopicsResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListTopicsResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -11102,7 +11392,7 @@ throw TypeError(".google.pubsub.v1.ListTopicsResponse.topics: array expected"); message.topics = []; for (var i = 0; i < object.topics.length; ++i) { - if (typeof object.topics[i] !== "object") + if (!$util.isObject(object.topics[i])) throw TypeError(".google.pubsub.v1.ListTopicsResponse.topics: object expected"); message.topics[i] = $root.google.pubsub.v1.Topic.fromObject(object.topics[i], long + 1); } @@ -11121,9 +11411,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListTopicsResponse.toObject = function toObject(message, options) { + ListTopicsResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.topics = []; @@ -11132,9 +11426,9 @@ if (message.topics && message.topics.length) { object.topics = []; for (var j = 0; j < message.topics.length; ++j) - object.topics[j] = $root.google.pubsub.v1.Topic.toObject(message.topics[j], options); + object.topics[j] = $root.google.pubsub.v1.Topic.toObject(message.topics[j], options, q + 1); } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) object.nextPageToken = message.nextPageToken; return object; }; @@ -11239,9 +11533,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListTopicSubscriptionsRequest.encode = function encode(message, writer) { + ListTopicSubscriptionsRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.topic); if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) @@ -11261,7 +11559,7 @@ * @returns {$protobuf.Writer} Writer */ ListTopicSubscriptionsRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -11339,13 +11637,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) if (!$util.isInteger(message.pageSize)) return "pageSize: integer expected"; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) if (!$util.isString(message.pageToken)) return "pageToken: string expected"; return null; @@ -11362,6 +11660,8 @@ ListTopicSubscriptionsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListTopicSubscriptionsRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListTopicSubscriptionsRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -11385,20 +11685,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListTopicSubscriptionsRequest.toObject = function toObject(message, options) { + ListTopicSubscriptionsRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.topic = ""; object.pageSize = 0; object.pageToken = ""; } - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) object.pageSize = message.pageSize; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) object.pageToken = message.pageToken; return object; }; @@ -11495,9 +11799,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListTopicSubscriptionsResponse.encode = function encode(message, writer) { + ListTopicSubscriptionsResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscriptions != null && message.subscriptions.length) for (var i = 0; i < message.subscriptions.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscriptions[i]); @@ -11516,7 +11824,7 @@ * @returns {$protobuf.Writer} Writer */ ListTopicSubscriptionsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -11592,14 +11900,14 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscriptions != null && message.hasOwnProperty("subscriptions")) { + if (message.subscriptions != null && Object.hasOwnProperty.call(message, "subscriptions")) { if (!Array.isArray(message.subscriptions)) return "subscriptions: array expected"; for (var i = 0; i < message.subscriptions.length; ++i) if (!$util.isString(message.subscriptions[i])) return "subscriptions: string[] expected"; } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; return null; @@ -11616,6 +11924,8 @@ ListTopicSubscriptionsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListTopicSubscriptionsResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListTopicSubscriptionsResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -11642,9 +11952,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListTopicSubscriptionsResponse.toObject = function toObject(message, options) { + ListTopicSubscriptionsResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.subscriptions = []; @@ -11655,7 +11969,7 @@ for (var j = 0; j < message.subscriptions.length; ++j) object.subscriptions[j] = message.subscriptions[j]; } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) object.nextPageToken = message.nextPageToken; return object; }; @@ -11760,9 +12074,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListTopicSnapshotsRequest.encode = function encode(message, writer) { + ListTopicSnapshotsRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.topic); if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) @@ -11782,7 +12100,7 @@ * @returns {$protobuf.Writer} Writer */ ListTopicSnapshotsRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -11860,13 +12178,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) if (!$util.isInteger(message.pageSize)) return "pageSize: integer expected"; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) if (!$util.isString(message.pageToken)) return "pageToken: string expected"; return null; @@ -11883,6 +12201,8 @@ ListTopicSnapshotsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListTopicSnapshotsRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListTopicSnapshotsRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -11906,20 +12226,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListTopicSnapshotsRequest.toObject = function toObject(message, options) { + ListTopicSnapshotsRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.topic = ""; object.pageSize = 0; object.pageToken = ""; } - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) object.pageSize = message.pageSize; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) object.pageToken = message.pageToken; return object; }; @@ -12016,9 +12340,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListTopicSnapshotsResponse.encode = function encode(message, writer) { + ListTopicSnapshotsResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.snapshots != null && message.snapshots.length) for (var i = 0; i < message.snapshots.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.snapshots[i]); @@ -12037,7 +12365,7 @@ * @returns {$protobuf.Writer} Writer */ ListTopicSnapshotsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -12113,14 +12441,14 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.snapshots != null && message.hasOwnProperty("snapshots")) { + if (message.snapshots != null && Object.hasOwnProperty.call(message, "snapshots")) { if (!Array.isArray(message.snapshots)) return "snapshots: array expected"; for (var i = 0; i < message.snapshots.length; ++i) if (!$util.isString(message.snapshots[i])) return "snapshots: string[] expected"; } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; return null; @@ -12137,6 +12465,8 @@ ListTopicSnapshotsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListTopicSnapshotsResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListTopicSnapshotsResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -12163,9 +12493,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListTopicSnapshotsResponse.toObject = function toObject(message, options) { + ListTopicSnapshotsResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.snapshots = []; @@ -12176,7 +12510,7 @@ for (var j = 0; j < message.snapshots.length; ++j) object.snapshots[j] = message.snapshots[j]; } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) object.nextPageToken = message.nextPageToken; return object; }; @@ -12263,9 +12597,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DeleteTopicRequest.encode = function encode(message, writer) { + DeleteTopicRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.topic); return writer; @@ -12281,7 +12619,7 @@ * @returns {$protobuf.Writer} Writer */ DeleteTopicRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -12351,7 +12689,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; return null; @@ -12368,6 +12706,8 @@ DeleteTopicRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.DeleteTopicRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.DeleteTopicRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -12387,13 +12727,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DeleteTopicRequest.toObject = function toObject(message, options) { + DeleteTopicRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.topic = ""; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; return object; }; @@ -12480,9 +12824,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DetachSubscriptionRequest.encode = function encode(message, writer) { + DetachSubscriptionRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); return writer; @@ -12498,7 +12846,7 @@ * @returns {$protobuf.Writer} Writer */ DetachSubscriptionRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -12568,7 +12916,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; return null; @@ -12585,6 +12933,8 @@ DetachSubscriptionRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.DetachSubscriptionRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.DetachSubscriptionRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -12604,13 +12954,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DetachSubscriptionRequest.toObject = function toObject(message, options) { + DetachSubscriptionRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.subscription = ""; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; return object; }; @@ -12688,9 +13042,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DetachSubscriptionResponse.encode = function encode(message, writer) { + DetachSubscriptionResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -12704,7 +13062,7 @@ * @returns {$protobuf.Writer} Writer */ DetachSubscriptionResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -12784,10 +13142,6 @@ DetachSubscriptionResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.DetachSubscriptionResponse) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.DetachSubscriptionResponse(); }; @@ -12885,7 +13239,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.createSubscription = function createSubscription(request, callback) { - return this.rpcCall(createSubscription, $root.google.pubsub.v1.Subscription, $root.google.pubsub.v1.Subscription, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, createSubscription, $root.google.pubsub.v1.Subscription, $root.google.pubsub.v1.Subscription, request, callback); }, "name", { value: "CreateSubscription" }); /** @@ -12918,7 +13272,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.getSubscription = function getSubscription(request, callback) { - return this.rpcCall(getSubscription, $root.google.pubsub.v1.GetSubscriptionRequest, $root.google.pubsub.v1.Subscription, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, getSubscription, $root.google.pubsub.v1.GetSubscriptionRequest, $root.google.pubsub.v1.Subscription, request, callback); }, "name", { value: "GetSubscription" }); /** @@ -12951,7 +13305,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.updateSubscription = function updateSubscription(request, callback) { - return this.rpcCall(updateSubscription, $root.google.pubsub.v1.UpdateSubscriptionRequest, $root.google.pubsub.v1.Subscription, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, updateSubscription, $root.google.pubsub.v1.UpdateSubscriptionRequest, $root.google.pubsub.v1.Subscription, request, callback); }, "name", { value: "UpdateSubscription" }); /** @@ -12984,7 +13338,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.listSubscriptions = function listSubscriptions(request, callback) { - return this.rpcCall(listSubscriptions, $root.google.pubsub.v1.ListSubscriptionsRequest, $root.google.pubsub.v1.ListSubscriptionsResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, listSubscriptions, $root.google.pubsub.v1.ListSubscriptionsRequest, $root.google.pubsub.v1.ListSubscriptionsResponse, request, callback); }, "name", { value: "ListSubscriptions" }); /** @@ -13017,7 +13371,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.deleteSubscription = function deleteSubscription(request, callback) { - return this.rpcCall(deleteSubscription, $root.google.pubsub.v1.DeleteSubscriptionRequest, $root.google.protobuf.Empty, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, deleteSubscription, $root.google.pubsub.v1.DeleteSubscriptionRequest, $root.google.protobuf.Empty, request, callback); }, "name", { value: "DeleteSubscription" }); /** @@ -13050,7 +13404,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.modifyAckDeadline = function modifyAckDeadline(request, callback) { - return this.rpcCall(modifyAckDeadline, $root.google.pubsub.v1.ModifyAckDeadlineRequest, $root.google.protobuf.Empty, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, modifyAckDeadline, $root.google.pubsub.v1.ModifyAckDeadlineRequest, $root.google.protobuf.Empty, request, callback); }, "name", { value: "ModifyAckDeadline" }); /** @@ -13083,7 +13437,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.acknowledge = function acknowledge(request, callback) { - return this.rpcCall(acknowledge, $root.google.pubsub.v1.AcknowledgeRequest, $root.google.protobuf.Empty, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, acknowledge, $root.google.pubsub.v1.AcknowledgeRequest, $root.google.protobuf.Empty, request, callback); }, "name", { value: "Acknowledge" }); /** @@ -13116,7 +13470,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.pull = function pull(request, callback) { - return this.rpcCall(pull, $root.google.pubsub.v1.PullRequest, $root.google.pubsub.v1.PullResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, pull, $root.google.pubsub.v1.PullRequest, $root.google.pubsub.v1.PullResponse, request, callback); }, "name", { value: "Pull" }); /** @@ -13149,7 +13503,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.streamingPull = function streamingPull(request, callback) { - return this.rpcCall(streamingPull, $root.google.pubsub.v1.StreamingPullRequest, $root.google.pubsub.v1.StreamingPullResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, streamingPull, $root.google.pubsub.v1.StreamingPullRequest, $root.google.pubsub.v1.StreamingPullResponse, request, callback); }, "name", { value: "StreamingPull" }); /** @@ -13182,7 +13536,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.modifyPushConfig = function modifyPushConfig(request, callback) { - return this.rpcCall(modifyPushConfig, $root.google.pubsub.v1.ModifyPushConfigRequest, $root.google.protobuf.Empty, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, modifyPushConfig, $root.google.pubsub.v1.ModifyPushConfigRequest, $root.google.protobuf.Empty, request, callback); }, "name", { value: "ModifyPushConfig" }); /** @@ -13215,7 +13569,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.getSnapshot = function getSnapshot(request, callback) { - return this.rpcCall(getSnapshot, $root.google.pubsub.v1.GetSnapshotRequest, $root.google.pubsub.v1.Snapshot, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, getSnapshot, $root.google.pubsub.v1.GetSnapshotRequest, $root.google.pubsub.v1.Snapshot, request, callback); }, "name", { value: "GetSnapshot" }); /** @@ -13248,7 +13602,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.listSnapshots = function listSnapshots(request, callback) { - return this.rpcCall(listSnapshots, $root.google.pubsub.v1.ListSnapshotsRequest, $root.google.pubsub.v1.ListSnapshotsResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, listSnapshots, $root.google.pubsub.v1.ListSnapshotsRequest, $root.google.pubsub.v1.ListSnapshotsResponse, request, callback); }, "name", { value: "ListSnapshots" }); /** @@ -13281,7 +13635,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.createSnapshot = function createSnapshot(request, callback) { - return this.rpcCall(createSnapshot, $root.google.pubsub.v1.CreateSnapshotRequest, $root.google.pubsub.v1.Snapshot, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, createSnapshot, $root.google.pubsub.v1.CreateSnapshotRequest, $root.google.pubsub.v1.Snapshot, request, callback); }, "name", { value: "CreateSnapshot" }); /** @@ -13314,7 +13668,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.updateSnapshot = function updateSnapshot(request, callback) { - return this.rpcCall(updateSnapshot, $root.google.pubsub.v1.UpdateSnapshotRequest, $root.google.pubsub.v1.Snapshot, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, updateSnapshot, $root.google.pubsub.v1.UpdateSnapshotRequest, $root.google.pubsub.v1.Snapshot, request, callback); }, "name", { value: "UpdateSnapshot" }); /** @@ -13347,7 +13701,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.deleteSnapshot = function deleteSnapshot(request, callback) { - return this.rpcCall(deleteSnapshot, $root.google.pubsub.v1.DeleteSnapshotRequest, $root.google.protobuf.Empty, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, deleteSnapshot, $root.google.pubsub.v1.DeleteSnapshotRequest, $root.google.protobuf.Empty, request, callback); }, "name", { value: "DeleteSnapshot" }); /** @@ -13380,7 +13734,7 @@ * @variation 1 */ Object.defineProperty(Subscriber.prototype.seek = function seek(request, callback) { - return this.rpcCall(seek, $root.google.pubsub.v1.SeekRequest, $root.google.pubsub.v1.SeekResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, seek, $root.google.pubsub.v1.SeekRequest, $root.google.pubsub.v1.SeekResponse, request, callback); }, "name", { value: "Seek" }); /** @@ -13641,56 +13995,60 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Subscription.encode = function encode(message, writer) { + Subscription.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.topic); if (message.pushConfig != null && Object.hasOwnProperty.call(message, "pushConfig")) - $root.google.pubsub.v1.PushConfig.encode(message.pushConfig, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.pubsub.v1.PushConfig.encode(message.pushConfig, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.ackDeadlineSeconds != null && Object.hasOwnProperty.call(message, "ackDeadlineSeconds")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.ackDeadlineSeconds); if (message.retainAckedMessages != null && Object.hasOwnProperty.call(message, "retainAckedMessages")) writer.uint32(/* id 7, wireType 0 =*/56).bool(message.retainAckedMessages); if (message.messageRetentionDuration != null && Object.hasOwnProperty.call(message, "messageRetentionDuration")) - $root.google.protobuf.Duration.encode(message.messageRetentionDuration, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.messageRetentionDuration, writer.uint32(/* id 8, wireType 2 =*/66).fork(), q + 1).ldelim(); if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) for (var keys = Object.keys(message.labels), i = 0; i < keys.length; ++i) writer.uint32(/* id 9, wireType 2 =*/74).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.labels[keys[i]]).ldelim(); if (message.enableMessageOrdering != null && Object.hasOwnProperty.call(message, "enableMessageOrdering")) writer.uint32(/* id 10, wireType 0 =*/80).bool(message.enableMessageOrdering); if (message.expirationPolicy != null && Object.hasOwnProperty.call(message, "expirationPolicy")) - $root.google.pubsub.v1.ExpirationPolicy.encode(message.expirationPolicy, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + $root.google.pubsub.v1.ExpirationPolicy.encode(message.expirationPolicy, writer.uint32(/* id 11, wireType 2 =*/90).fork(), q + 1).ldelim(); if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) writer.uint32(/* id 12, wireType 2 =*/98).string(message.filter); if (message.deadLetterPolicy != null && Object.hasOwnProperty.call(message, "deadLetterPolicy")) - $root.google.pubsub.v1.DeadLetterPolicy.encode(message.deadLetterPolicy, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); + $root.google.pubsub.v1.DeadLetterPolicy.encode(message.deadLetterPolicy, writer.uint32(/* id 13, wireType 2 =*/106).fork(), q + 1).ldelim(); if (message.retryPolicy != null && Object.hasOwnProperty.call(message, "retryPolicy")) - $root.google.pubsub.v1.RetryPolicy.encode(message.retryPolicy, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim(); + $root.google.pubsub.v1.RetryPolicy.encode(message.retryPolicy, writer.uint32(/* id 14, wireType 2 =*/114).fork(), q + 1).ldelim(); if (message.detached != null && Object.hasOwnProperty.call(message, "detached")) writer.uint32(/* id 15, wireType 0 =*/120).bool(message.detached); if (message.enableExactlyOnceDelivery != null && Object.hasOwnProperty.call(message, "enableExactlyOnceDelivery")) writer.uint32(/* id 16, wireType 0 =*/128).bool(message.enableExactlyOnceDelivery); if (message.topicMessageRetentionDuration != null && Object.hasOwnProperty.call(message, "topicMessageRetentionDuration")) - $root.google.protobuf.Duration.encode(message.topicMessageRetentionDuration, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.topicMessageRetentionDuration, writer.uint32(/* id 17, wireType 2 =*/138).fork(), q + 1).ldelim(); if (message.bigqueryConfig != null && Object.hasOwnProperty.call(message, "bigqueryConfig")) - $root.google.pubsub.v1.BigQueryConfig.encode(message.bigqueryConfig, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim(); + $root.google.pubsub.v1.BigQueryConfig.encode(message.bigqueryConfig, writer.uint32(/* id 18, wireType 2 =*/146).fork(), q + 1).ldelim(); if (message.state != null && Object.hasOwnProperty.call(message, "state")) writer.uint32(/* id 19, wireType 0 =*/152).int32(message.state); if (message.cloudStorageConfig != null && Object.hasOwnProperty.call(message, "cloudStorageConfig")) - $root.google.pubsub.v1.CloudStorageConfig.encode(message.cloudStorageConfig, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim(); + $root.google.pubsub.v1.CloudStorageConfig.encode(message.cloudStorageConfig, writer.uint32(/* id 22, wireType 2 =*/178).fork(), q + 1).ldelim(); if (message.analyticsHubSubscriptionInfo != null && Object.hasOwnProperty.call(message, "analyticsHubSubscriptionInfo")) - $root.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo.encode(message.analyticsHubSubscriptionInfo, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim(); + $root.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo.encode(message.analyticsHubSubscriptionInfo, writer.uint32(/* id 23, wireType 2 =*/186).fork(), q + 1).ldelim(); if (message.messageTransforms != null && message.messageTransforms.length) for (var i = 0; i < message.messageTransforms.length; ++i) - $root.google.pubsub.v1.MessageTransform.encode(message.messageTransforms[i], writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim(); + $root.google.pubsub.v1.MessageTransform.encode(message.messageTransforms[i], writer.uint32(/* id 25, wireType 2 =*/202).fork(), q + 1).ldelim(); if (message.tags != null && Object.hasOwnProperty.call(message, "tags")) for (var keys = Object.keys(message.tags), i = 0; i < keys.length; ++i) writer.uint32(/* id 26, wireType 2 =*/210).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.tags[keys[i]]).ldelim(); if (message.bigtableConfig != null && Object.hasOwnProperty.call(message, "bigtableConfig")) - $root.google.pubsub.v1.BigtableConfig.encode(message.bigtableConfig, writer.uint32(/* id 27, wireType 2 =*/218).fork()).ldelim(); + $root.google.pubsub.v1.BigtableConfig.encode(message.bigtableConfig, writer.uint32(/* id 27, wireType 2 =*/218).fork(), q + 1).ldelim(); return writer; }; @@ -13704,7 +14062,7 @@ * @returns {$protobuf.Writer} Writer */ Subscription.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -13902,44 +14260,44 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; - if (message.pushConfig != null && message.hasOwnProperty("pushConfig")) { + if (message.pushConfig != null && Object.hasOwnProperty.call(message, "pushConfig")) { var error = $root.google.pubsub.v1.PushConfig.verify(message.pushConfig, long + 1); if (error) return "pushConfig." + error; } - if (message.bigqueryConfig != null && message.hasOwnProperty("bigqueryConfig")) { + if (message.bigqueryConfig != null && Object.hasOwnProperty.call(message, "bigqueryConfig")) { var error = $root.google.pubsub.v1.BigQueryConfig.verify(message.bigqueryConfig, long + 1); if (error) return "bigqueryConfig." + error; } - if (message.cloudStorageConfig != null && message.hasOwnProperty("cloudStorageConfig")) { + if (message.cloudStorageConfig != null && Object.hasOwnProperty.call(message, "cloudStorageConfig")) { var error = $root.google.pubsub.v1.CloudStorageConfig.verify(message.cloudStorageConfig, long + 1); if (error) return "cloudStorageConfig." + error; } - if (message.bigtableConfig != null && message.hasOwnProperty("bigtableConfig")) { + if (message.bigtableConfig != null && Object.hasOwnProperty.call(message, "bigtableConfig")) { var error = $root.google.pubsub.v1.BigtableConfig.verify(message.bigtableConfig, long + 1); if (error) return "bigtableConfig." + error; } - if (message.ackDeadlineSeconds != null && message.hasOwnProperty("ackDeadlineSeconds")) + if (message.ackDeadlineSeconds != null && Object.hasOwnProperty.call(message, "ackDeadlineSeconds")) if (!$util.isInteger(message.ackDeadlineSeconds)) return "ackDeadlineSeconds: integer expected"; - if (message.retainAckedMessages != null && message.hasOwnProperty("retainAckedMessages")) + if (message.retainAckedMessages != null && Object.hasOwnProperty.call(message, "retainAckedMessages")) if (typeof message.retainAckedMessages !== "boolean") return "retainAckedMessages: boolean expected"; - if (message.messageRetentionDuration != null && message.hasOwnProperty("messageRetentionDuration")) { + if (message.messageRetentionDuration != null && Object.hasOwnProperty.call(message, "messageRetentionDuration")) { var error = $root.google.protobuf.Duration.verify(message.messageRetentionDuration, long + 1); if (error) return "messageRetentionDuration." + error; } - if (message.labels != null && message.hasOwnProperty("labels")) { + if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) { if (!$util.isObject(message.labels)) return "labels: object expected"; var key = Object.keys(message.labels); @@ -13947,39 +14305,39 @@ if (!$util.isString(message.labels[key[i]])) return "labels: string{k:string} expected"; } - if (message.enableMessageOrdering != null && message.hasOwnProperty("enableMessageOrdering")) + if (message.enableMessageOrdering != null && Object.hasOwnProperty.call(message, "enableMessageOrdering")) if (typeof message.enableMessageOrdering !== "boolean") return "enableMessageOrdering: boolean expected"; - if (message.expirationPolicy != null && message.hasOwnProperty("expirationPolicy")) { + if (message.expirationPolicy != null && Object.hasOwnProperty.call(message, "expirationPolicy")) { var error = $root.google.pubsub.v1.ExpirationPolicy.verify(message.expirationPolicy, long + 1); if (error) return "expirationPolicy." + error; } - if (message.filter != null && message.hasOwnProperty("filter")) + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) if (!$util.isString(message.filter)) return "filter: string expected"; - if (message.deadLetterPolicy != null && message.hasOwnProperty("deadLetterPolicy")) { + if (message.deadLetterPolicy != null && Object.hasOwnProperty.call(message, "deadLetterPolicy")) { var error = $root.google.pubsub.v1.DeadLetterPolicy.verify(message.deadLetterPolicy, long + 1); if (error) return "deadLetterPolicy." + error; } - if (message.retryPolicy != null && message.hasOwnProperty("retryPolicy")) { + if (message.retryPolicy != null && Object.hasOwnProperty.call(message, "retryPolicy")) { var error = $root.google.pubsub.v1.RetryPolicy.verify(message.retryPolicy, long + 1); if (error) return "retryPolicy." + error; } - if (message.detached != null && message.hasOwnProperty("detached")) + if (message.detached != null && Object.hasOwnProperty.call(message, "detached")) if (typeof message.detached !== "boolean") return "detached: boolean expected"; - if (message.enableExactlyOnceDelivery != null && message.hasOwnProperty("enableExactlyOnceDelivery")) + if (message.enableExactlyOnceDelivery != null && Object.hasOwnProperty.call(message, "enableExactlyOnceDelivery")) if (typeof message.enableExactlyOnceDelivery !== "boolean") return "enableExactlyOnceDelivery: boolean expected"; - if (message.topicMessageRetentionDuration != null && message.hasOwnProperty("topicMessageRetentionDuration")) { + if (message.topicMessageRetentionDuration != null && Object.hasOwnProperty.call(message, "topicMessageRetentionDuration")) { var error = $root.google.protobuf.Duration.verify(message.topicMessageRetentionDuration, long + 1); if (error) return "topicMessageRetentionDuration." + error; } - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -13988,12 +14346,12 @@ case 2: break; } - if (message.analyticsHubSubscriptionInfo != null && message.hasOwnProperty("analyticsHubSubscriptionInfo")) { + if (message.analyticsHubSubscriptionInfo != null && Object.hasOwnProperty.call(message, "analyticsHubSubscriptionInfo")) { var error = $root.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo.verify(message.analyticsHubSubscriptionInfo, long + 1); if (error) return "analyticsHubSubscriptionInfo." + error; } - if (message.messageTransforms != null && message.hasOwnProperty("messageTransforms")) { + if (message.messageTransforms != null && Object.hasOwnProperty.call(message, "messageTransforms")) { if (!Array.isArray(message.messageTransforms)) return "messageTransforms: array expected"; for (var i = 0; i < message.messageTransforms.length; ++i) { @@ -14002,7 +14360,7 @@ return "messageTransforms." + error; } } - if (message.tags != null && message.hasOwnProperty("tags")) { + if (message.tags != null && Object.hasOwnProperty.call(message, "tags")) { if (!$util.isObject(message.tags)) return "tags: object expected"; var key = Object.keys(message.tags); @@ -14024,6 +14382,8 @@ Subscription.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.Subscription) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.Subscription: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -14034,22 +14394,22 @@ if (object.topic != null) message.topic = String(object.topic); if (object.pushConfig != null) { - if (typeof object.pushConfig !== "object") + if (!$util.isObject(object.pushConfig)) throw TypeError(".google.pubsub.v1.Subscription.pushConfig: object expected"); message.pushConfig = $root.google.pubsub.v1.PushConfig.fromObject(object.pushConfig, long + 1); } if (object.bigqueryConfig != null) { - if (typeof object.bigqueryConfig !== "object") + if (!$util.isObject(object.bigqueryConfig)) throw TypeError(".google.pubsub.v1.Subscription.bigqueryConfig: object expected"); message.bigqueryConfig = $root.google.pubsub.v1.BigQueryConfig.fromObject(object.bigqueryConfig, long + 1); } if (object.cloudStorageConfig != null) { - if (typeof object.cloudStorageConfig !== "object") + if (!$util.isObject(object.cloudStorageConfig)) throw TypeError(".google.pubsub.v1.Subscription.cloudStorageConfig: object expected"); message.cloudStorageConfig = $root.google.pubsub.v1.CloudStorageConfig.fromObject(object.cloudStorageConfig, long + 1); } if (object.bigtableConfig != null) { - if (typeof object.bigtableConfig !== "object") + if (!$util.isObject(object.bigtableConfig)) throw TypeError(".google.pubsub.v1.Subscription.bigtableConfig: object expected"); message.bigtableConfig = $root.google.pubsub.v1.BigtableConfig.fromObject(object.bigtableConfig, long + 1); } @@ -14058,12 +14418,12 @@ if (object.retainAckedMessages != null) message.retainAckedMessages = Boolean(object.retainAckedMessages); if (object.messageRetentionDuration != null) { - if (typeof object.messageRetentionDuration !== "object") + if (!$util.isObject(object.messageRetentionDuration)) throw TypeError(".google.pubsub.v1.Subscription.messageRetentionDuration: object expected"); message.messageRetentionDuration = $root.google.protobuf.Duration.fromObject(object.messageRetentionDuration, long + 1); } if (object.labels) { - if (typeof object.labels !== "object") + if (!$util.isObject(object.labels)) throw TypeError(".google.pubsub.v1.Subscription.labels: object expected"); message.labels = {}; for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) { @@ -14075,19 +14435,19 @@ if (object.enableMessageOrdering != null) message.enableMessageOrdering = Boolean(object.enableMessageOrdering); if (object.expirationPolicy != null) { - if (typeof object.expirationPolicy !== "object") + if (!$util.isObject(object.expirationPolicy)) throw TypeError(".google.pubsub.v1.Subscription.expirationPolicy: object expected"); message.expirationPolicy = $root.google.pubsub.v1.ExpirationPolicy.fromObject(object.expirationPolicy, long + 1); } if (object.filter != null) message.filter = String(object.filter); if (object.deadLetterPolicy != null) { - if (typeof object.deadLetterPolicy !== "object") + if (!$util.isObject(object.deadLetterPolicy)) throw TypeError(".google.pubsub.v1.Subscription.deadLetterPolicy: object expected"); message.deadLetterPolicy = $root.google.pubsub.v1.DeadLetterPolicy.fromObject(object.deadLetterPolicy, long + 1); } if (object.retryPolicy != null) { - if (typeof object.retryPolicy !== "object") + if (!$util.isObject(object.retryPolicy)) throw TypeError(".google.pubsub.v1.Subscription.retryPolicy: object expected"); message.retryPolicy = $root.google.pubsub.v1.RetryPolicy.fromObject(object.retryPolicy, long + 1); } @@ -14096,7 +14456,7 @@ if (object.enableExactlyOnceDelivery != null) message.enableExactlyOnceDelivery = Boolean(object.enableExactlyOnceDelivery); if (object.topicMessageRetentionDuration != null) { - if (typeof object.topicMessageRetentionDuration !== "object") + if (!$util.isObject(object.topicMessageRetentionDuration)) throw TypeError(".google.pubsub.v1.Subscription.topicMessageRetentionDuration: object expected"); message.topicMessageRetentionDuration = $root.google.protobuf.Duration.fromObject(object.topicMessageRetentionDuration, long + 1); } @@ -14121,7 +14481,7 @@ break; } if (object.analyticsHubSubscriptionInfo != null) { - if (typeof object.analyticsHubSubscriptionInfo !== "object") + if (!$util.isObject(object.analyticsHubSubscriptionInfo)) throw TypeError(".google.pubsub.v1.Subscription.analyticsHubSubscriptionInfo: object expected"); message.analyticsHubSubscriptionInfo = $root.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo.fromObject(object.analyticsHubSubscriptionInfo, long + 1); } @@ -14130,13 +14490,13 @@ throw TypeError(".google.pubsub.v1.Subscription.messageTransforms: array expected"); message.messageTransforms = []; for (var i = 0; i < object.messageTransforms.length; ++i) { - if (typeof object.messageTransforms[i] !== "object") + if (!$util.isObject(object.messageTransforms[i])) throw TypeError(".google.pubsub.v1.Subscription.messageTransforms: object expected"); message.messageTransforms[i] = $root.google.pubsub.v1.MessageTransform.fromObject(object.messageTransforms[i], long + 1); } } if (object.tags) { - if (typeof object.tags !== "object") + if (!$util.isObject(object.tags)) throw TypeError(".google.pubsub.v1.Subscription.tags: object expected"); message.tags = {}; for (var keys = Object.keys(object.tags), i = 0; i < keys.length; ++i) { @@ -14157,9 +14517,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Subscription.toObject = function toObject(message, options) { + Subscription.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.messageTransforms = []; @@ -14188,18 +14552,18 @@ object.analyticsHubSubscriptionInfo = null; object.bigtableConfig = null; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; - if (message.pushConfig != null && message.hasOwnProperty("pushConfig")) - object.pushConfig = $root.google.pubsub.v1.PushConfig.toObject(message.pushConfig, options); - if (message.ackDeadlineSeconds != null && message.hasOwnProperty("ackDeadlineSeconds")) + if (message.pushConfig != null && Object.hasOwnProperty.call(message, "pushConfig")) + object.pushConfig = $root.google.pubsub.v1.PushConfig.toObject(message.pushConfig, options, q + 1); + if (message.ackDeadlineSeconds != null && Object.hasOwnProperty.call(message, "ackDeadlineSeconds")) object.ackDeadlineSeconds = message.ackDeadlineSeconds; - if (message.retainAckedMessages != null && message.hasOwnProperty("retainAckedMessages")) + if (message.retainAckedMessages != null && Object.hasOwnProperty.call(message, "retainAckedMessages")) object.retainAckedMessages = message.retainAckedMessages; - if (message.messageRetentionDuration != null && message.hasOwnProperty("messageRetentionDuration")) - object.messageRetentionDuration = $root.google.protobuf.Duration.toObject(message.messageRetentionDuration, options); + if (message.messageRetentionDuration != null && Object.hasOwnProperty.call(message, "messageRetentionDuration")) + object.messageRetentionDuration = $root.google.protobuf.Duration.toObject(message.messageRetentionDuration, options, q + 1); var keys2; if (message.labels && (keys2 = Object.keys(message.labels)).length) { object.labels = {}; @@ -14209,34 +14573,34 @@ object.labels[keys2[j]] = message.labels[keys2[j]]; } } - if (message.enableMessageOrdering != null && message.hasOwnProperty("enableMessageOrdering")) + if (message.enableMessageOrdering != null && Object.hasOwnProperty.call(message, "enableMessageOrdering")) object.enableMessageOrdering = message.enableMessageOrdering; - if (message.expirationPolicy != null && message.hasOwnProperty("expirationPolicy")) - object.expirationPolicy = $root.google.pubsub.v1.ExpirationPolicy.toObject(message.expirationPolicy, options); - if (message.filter != null && message.hasOwnProperty("filter")) + if (message.expirationPolicy != null && Object.hasOwnProperty.call(message, "expirationPolicy")) + object.expirationPolicy = $root.google.pubsub.v1.ExpirationPolicy.toObject(message.expirationPolicy, options, q + 1); + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) object.filter = message.filter; - if (message.deadLetterPolicy != null && message.hasOwnProperty("deadLetterPolicy")) - object.deadLetterPolicy = $root.google.pubsub.v1.DeadLetterPolicy.toObject(message.deadLetterPolicy, options); - if (message.retryPolicy != null && message.hasOwnProperty("retryPolicy")) - object.retryPolicy = $root.google.pubsub.v1.RetryPolicy.toObject(message.retryPolicy, options); - if (message.detached != null && message.hasOwnProperty("detached")) + if (message.deadLetterPolicy != null && Object.hasOwnProperty.call(message, "deadLetterPolicy")) + object.deadLetterPolicy = $root.google.pubsub.v1.DeadLetterPolicy.toObject(message.deadLetterPolicy, options, q + 1); + if (message.retryPolicy != null && Object.hasOwnProperty.call(message, "retryPolicy")) + object.retryPolicy = $root.google.pubsub.v1.RetryPolicy.toObject(message.retryPolicy, options, q + 1); + if (message.detached != null && Object.hasOwnProperty.call(message, "detached")) object.detached = message.detached; - if (message.enableExactlyOnceDelivery != null && message.hasOwnProperty("enableExactlyOnceDelivery")) + if (message.enableExactlyOnceDelivery != null && Object.hasOwnProperty.call(message, "enableExactlyOnceDelivery")) object.enableExactlyOnceDelivery = message.enableExactlyOnceDelivery; - if (message.topicMessageRetentionDuration != null && message.hasOwnProperty("topicMessageRetentionDuration")) - object.topicMessageRetentionDuration = $root.google.protobuf.Duration.toObject(message.topicMessageRetentionDuration, options); - if (message.bigqueryConfig != null && message.hasOwnProperty("bigqueryConfig")) - object.bigqueryConfig = $root.google.pubsub.v1.BigQueryConfig.toObject(message.bigqueryConfig, options); - if (message.state != null && message.hasOwnProperty("state")) + if (message.topicMessageRetentionDuration != null && Object.hasOwnProperty.call(message, "topicMessageRetentionDuration")) + object.topicMessageRetentionDuration = $root.google.protobuf.Duration.toObject(message.topicMessageRetentionDuration, options, q + 1); + if (message.bigqueryConfig != null && Object.hasOwnProperty.call(message, "bigqueryConfig")) + object.bigqueryConfig = $root.google.pubsub.v1.BigQueryConfig.toObject(message.bigqueryConfig, options, q + 1); + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.Subscription.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.Subscription.State[message.state] : message.state; - if (message.cloudStorageConfig != null && message.hasOwnProperty("cloudStorageConfig")) - object.cloudStorageConfig = $root.google.pubsub.v1.CloudStorageConfig.toObject(message.cloudStorageConfig, options); - if (message.analyticsHubSubscriptionInfo != null && message.hasOwnProperty("analyticsHubSubscriptionInfo")) - object.analyticsHubSubscriptionInfo = $root.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo.toObject(message.analyticsHubSubscriptionInfo, options); + if (message.cloudStorageConfig != null && Object.hasOwnProperty.call(message, "cloudStorageConfig")) + object.cloudStorageConfig = $root.google.pubsub.v1.CloudStorageConfig.toObject(message.cloudStorageConfig, options, q + 1); + if (message.analyticsHubSubscriptionInfo != null && Object.hasOwnProperty.call(message, "analyticsHubSubscriptionInfo")) + object.analyticsHubSubscriptionInfo = $root.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo.toObject(message.analyticsHubSubscriptionInfo, options, q + 1); if (message.messageTransforms && message.messageTransforms.length) { object.messageTransforms = []; for (var j = 0; j < message.messageTransforms.length; ++j) - object.messageTransforms[j] = $root.google.pubsub.v1.MessageTransform.toObject(message.messageTransforms[j], options); + object.messageTransforms[j] = $root.google.pubsub.v1.MessageTransform.toObject(message.messageTransforms[j], options, q + 1); } if (message.tags && (keys2 = Object.keys(message.tags)).length) { object.tags = {}; @@ -14246,8 +14610,8 @@ object.tags[keys2[j]] = message.tags[keys2[j]]; } } - if (message.bigtableConfig != null && message.hasOwnProperty("bigtableConfig")) - object.bigtableConfig = $root.google.pubsub.v1.BigtableConfig.toObject(message.bigtableConfig, options); + if (message.bigtableConfig != null && Object.hasOwnProperty.call(message, "bigtableConfig")) + object.bigtableConfig = $root.google.pubsub.v1.BigtableConfig.toObject(message.bigtableConfig, options, q + 1); return object; }; @@ -14355,9 +14719,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AnalyticsHubSubscriptionInfo.encode = function encode(message, writer) { + AnalyticsHubSubscriptionInfo.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.listing != null && Object.hasOwnProperty.call(message, "listing")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.listing); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) @@ -14375,7 +14743,7 @@ * @returns {$protobuf.Writer} Writer */ AnalyticsHubSubscriptionInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -14449,10 +14817,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.listing != null && message.hasOwnProperty("listing")) + if (message.listing != null && Object.hasOwnProperty.call(message, "listing")) if (!$util.isString(message.listing)) return "listing: string expected"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; return null; @@ -14469,6 +14837,8 @@ AnalyticsHubSubscriptionInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -14490,17 +14860,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AnalyticsHubSubscriptionInfo.toObject = function toObject(message, options) { + AnalyticsHubSubscriptionInfo.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.listing = ""; object.subscription = ""; } - if (message.listing != null && message.hasOwnProperty("listing")) + if (message.listing != null && Object.hasOwnProperty.call(message, "listing")) object.listing = message.listing; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; return object; }; @@ -14599,13 +14973,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RetryPolicy.encode = function encode(message, writer) { + RetryPolicy.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.minimumBackoff != null && Object.hasOwnProperty.call(message, "minimumBackoff")) - $root.google.protobuf.Duration.encode(message.minimumBackoff, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.minimumBackoff, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.maximumBackoff != null && Object.hasOwnProperty.call(message, "maximumBackoff")) - $root.google.protobuf.Duration.encode(message.maximumBackoff, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.maximumBackoff, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -14619,7 +14997,7 @@ * @returns {$protobuf.Writer} Writer */ RetryPolicy.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -14693,12 +15071,12 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.minimumBackoff != null && message.hasOwnProperty("minimumBackoff")) { + if (message.minimumBackoff != null && Object.hasOwnProperty.call(message, "minimumBackoff")) { var error = $root.google.protobuf.Duration.verify(message.minimumBackoff, long + 1); if (error) return "minimumBackoff." + error; } - if (message.maximumBackoff != null && message.hasOwnProperty("maximumBackoff")) { + if (message.maximumBackoff != null && Object.hasOwnProperty.call(message, "maximumBackoff")) { var error = $root.google.protobuf.Duration.verify(message.maximumBackoff, long + 1); if (error) return "maximumBackoff." + error; @@ -14717,18 +15095,20 @@ RetryPolicy.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.RetryPolicy) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.RetryPolicy: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.pubsub.v1.RetryPolicy(); if (object.minimumBackoff != null) { - if (typeof object.minimumBackoff !== "object") + if (!$util.isObject(object.minimumBackoff)) throw TypeError(".google.pubsub.v1.RetryPolicy.minimumBackoff: object expected"); message.minimumBackoff = $root.google.protobuf.Duration.fromObject(object.minimumBackoff, long + 1); } if (object.maximumBackoff != null) { - if (typeof object.maximumBackoff !== "object") + if (!$util.isObject(object.maximumBackoff)) throw TypeError(".google.pubsub.v1.RetryPolicy.maximumBackoff: object expected"); message.maximumBackoff = $root.google.protobuf.Duration.fromObject(object.maximumBackoff, long + 1); } @@ -14744,18 +15124,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - RetryPolicy.toObject = function toObject(message, options) { + RetryPolicy.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.minimumBackoff = null; object.maximumBackoff = null; } - if (message.minimumBackoff != null && message.hasOwnProperty("minimumBackoff")) - object.minimumBackoff = $root.google.protobuf.Duration.toObject(message.minimumBackoff, options); - if (message.maximumBackoff != null && message.hasOwnProperty("maximumBackoff")) - object.maximumBackoff = $root.google.protobuf.Duration.toObject(message.maximumBackoff, options); + if (message.minimumBackoff != null && Object.hasOwnProperty.call(message, "minimumBackoff")) + object.minimumBackoff = $root.google.protobuf.Duration.toObject(message.minimumBackoff, options, q + 1); + if (message.maximumBackoff != null && Object.hasOwnProperty.call(message, "maximumBackoff")) + object.maximumBackoff = $root.google.protobuf.Duration.toObject(message.maximumBackoff, options, q + 1); return object; }; @@ -14850,9 +15234,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DeadLetterPolicy.encode = function encode(message, writer) { + DeadLetterPolicy.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.deadLetterTopic != null && Object.hasOwnProperty.call(message, "deadLetterTopic")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.deadLetterTopic); if (message.maxDeliveryAttempts != null && Object.hasOwnProperty.call(message, "maxDeliveryAttempts")) @@ -14870,7 +15258,7 @@ * @returns {$protobuf.Writer} Writer */ DeadLetterPolicy.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -14944,10 +15332,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.deadLetterTopic != null && message.hasOwnProperty("deadLetterTopic")) + if (message.deadLetterTopic != null && Object.hasOwnProperty.call(message, "deadLetterTopic")) if (!$util.isString(message.deadLetterTopic)) return "deadLetterTopic: string expected"; - if (message.maxDeliveryAttempts != null && message.hasOwnProperty("maxDeliveryAttempts")) + if (message.maxDeliveryAttempts != null && Object.hasOwnProperty.call(message, "maxDeliveryAttempts")) if (!$util.isInteger(message.maxDeliveryAttempts)) return "maxDeliveryAttempts: integer expected"; return null; @@ -14964,6 +15352,8 @@ DeadLetterPolicy.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.DeadLetterPolicy) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.DeadLetterPolicy: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -14985,17 +15375,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DeadLetterPolicy.toObject = function toObject(message, options) { + DeadLetterPolicy.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.deadLetterTopic = ""; object.maxDeliveryAttempts = 0; } - if (message.deadLetterTopic != null && message.hasOwnProperty("deadLetterTopic")) + if (message.deadLetterTopic != null && Object.hasOwnProperty.call(message, "deadLetterTopic")) object.deadLetterTopic = message.deadLetterTopic; - if (message.maxDeliveryAttempts != null && message.hasOwnProperty("maxDeliveryAttempts")) + if (message.maxDeliveryAttempts != null && Object.hasOwnProperty.call(message, "maxDeliveryAttempts")) object.maxDeliveryAttempts = message.maxDeliveryAttempts; return object; }; @@ -15082,11 +15476,15 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExpirationPolicy.encode = function encode(message, writer) { + ExpirationPolicy.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.ttl != null && Object.hasOwnProperty.call(message, "ttl")) - $root.google.protobuf.Duration.encode(message.ttl, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.ttl, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -15100,7 +15498,7 @@ * @returns {$protobuf.Writer} Writer */ ExpirationPolicy.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -15170,7 +15568,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.ttl != null && message.hasOwnProperty("ttl")) { + if (message.ttl != null && Object.hasOwnProperty.call(message, "ttl")) { var error = $root.google.protobuf.Duration.verify(message.ttl, long + 1); if (error) return "ttl." + error; @@ -15189,13 +15587,15 @@ ExpirationPolicy.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ExpirationPolicy) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ExpirationPolicy: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.pubsub.v1.ExpirationPolicy(); if (object.ttl != null) { - if (typeof object.ttl !== "object") + if (!$util.isObject(object.ttl)) throw TypeError(".google.pubsub.v1.ExpirationPolicy.ttl: object expected"); message.ttl = $root.google.protobuf.Duration.fromObject(object.ttl, long + 1); } @@ -15211,14 +15611,18 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ExpirationPolicy.toObject = function toObject(message, options) { + ExpirationPolicy.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.ttl = null; - if (message.ttl != null && message.hasOwnProperty("ttl")) - object.ttl = $root.google.protobuf.Duration.toObject(message.ttl, options); + if (message.ttl != null && Object.hasOwnProperty.call(message, "ttl")) + object.ttl = $root.google.protobuf.Duration.toObject(message.ttl, options, q + 1); return object; }; @@ -15366,20 +15770,24 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PushConfig.encode = function encode(message, writer) { + PushConfig.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.pushEndpoint != null && Object.hasOwnProperty.call(message, "pushEndpoint")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.pushEndpoint); if (message.attributes != null && Object.hasOwnProperty.call(message, "attributes")) for (var keys = Object.keys(message.attributes), i = 0; i < keys.length; ++i) writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.attributes[keys[i]]).ldelim(); if (message.oidcToken != null && Object.hasOwnProperty.call(message, "oidcToken")) - $root.google.pubsub.v1.PushConfig.OidcToken.encode(message.oidcToken, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.pubsub.v1.PushConfig.OidcToken.encode(message.oidcToken, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.pubsubWrapper != null && Object.hasOwnProperty.call(message, "pubsubWrapper")) - $root.google.pubsub.v1.PushConfig.PubsubWrapper.encode(message.pubsubWrapper, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.pubsub.v1.PushConfig.PubsubWrapper.encode(message.pubsubWrapper, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.noWrapper != null && Object.hasOwnProperty.call(message, "noWrapper")) - $root.google.pubsub.v1.PushConfig.NoWrapper.encode(message.noWrapper, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.PushConfig.NoWrapper.encode(message.noWrapper, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); return writer; }; @@ -15393,7 +15801,7 @@ * @returns {$protobuf.Writer} Writer */ PushConfig.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -15501,10 +15909,10 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.pushEndpoint != null && message.hasOwnProperty("pushEndpoint")) + if (message.pushEndpoint != null && Object.hasOwnProperty.call(message, "pushEndpoint")) if (!$util.isString(message.pushEndpoint)) return "pushEndpoint: string expected"; - if (message.attributes != null && message.hasOwnProperty("attributes")) { + if (message.attributes != null && Object.hasOwnProperty.call(message, "attributes")) { if (!$util.isObject(message.attributes)) return "attributes: object expected"; var key = Object.keys(message.attributes); @@ -15512,7 +15920,7 @@ if (!$util.isString(message.attributes[key[i]])) return "attributes: string{k:string} expected"; } - if (message.oidcToken != null && message.hasOwnProperty("oidcToken")) { + if (message.oidcToken != null && Object.hasOwnProperty.call(message, "oidcToken")) { properties.authenticationMethod = 1; { var error = $root.google.pubsub.v1.PushConfig.OidcToken.verify(message.oidcToken, long + 1); @@ -15520,7 +15928,7 @@ return "oidcToken." + error; } } - if (message.pubsubWrapper != null && message.hasOwnProperty("pubsubWrapper")) { + if (message.pubsubWrapper != null && Object.hasOwnProperty.call(message, "pubsubWrapper")) { properties.wrapper = 1; { var error = $root.google.pubsub.v1.PushConfig.PubsubWrapper.verify(message.pubsubWrapper, long + 1); @@ -15528,7 +15936,7 @@ return "pubsubWrapper." + error; } } - if (message.noWrapper != null && message.hasOwnProperty("noWrapper")) { + if (message.noWrapper != null && Object.hasOwnProperty.call(message, "noWrapper")) { if (properties.wrapper === 1) return "wrapper: multiple values"; properties.wrapper = 1; @@ -15552,6 +15960,8 @@ PushConfig.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PushConfig) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PushConfig: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -15560,7 +15970,7 @@ if (object.pushEndpoint != null) message.pushEndpoint = String(object.pushEndpoint); if (object.attributes) { - if (typeof object.attributes !== "object") + if (!$util.isObject(object.attributes)) throw TypeError(".google.pubsub.v1.PushConfig.attributes: object expected"); message.attributes = {}; for (var keys = Object.keys(object.attributes), i = 0; i < keys.length; ++i) { @@ -15570,17 +15980,17 @@ } } if (object.oidcToken != null) { - if (typeof object.oidcToken !== "object") + if (!$util.isObject(object.oidcToken)) throw TypeError(".google.pubsub.v1.PushConfig.oidcToken: object expected"); message.oidcToken = $root.google.pubsub.v1.PushConfig.OidcToken.fromObject(object.oidcToken, long + 1); } if (object.pubsubWrapper != null) { - if (typeof object.pubsubWrapper !== "object") + if (!$util.isObject(object.pubsubWrapper)) throw TypeError(".google.pubsub.v1.PushConfig.pubsubWrapper: object expected"); message.pubsubWrapper = $root.google.pubsub.v1.PushConfig.PubsubWrapper.fromObject(object.pubsubWrapper, long + 1); } if (object.noWrapper != null) { - if (typeof object.noWrapper !== "object") + if (!$util.isObject(object.noWrapper)) throw TypeError(".google.pubsub.v1.PushConfig.noWrapper: object expected"); message.noWrapper = $root.google.pubsub.v1.PushConfig.NoWrapper.fromObject(object.noWrapper, long + 1); } @@ -15596,15 +16006,19 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PushConfig.toObject = function toObject(message, options) { + PushConfig.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.objects || options.defaults) object.attributes = {}; if (options.defaults) object.pushEndpoint = ""; - if (message.pushEndpoint != null && message.hasOwnProperty("pushEndpoint")) + if (message.pushEndpoint != null && Object.hasOwnProperty.call(message, "pushEndpoint")) object.pushEndpoint = message.pushEndpoint; var keys2; if (message.attributes && (keys2 = Object.keys(message.attributes)).length) { @@ -15615,18 +16029,18 @@ object.attributes[keys2[j]] = message.attributes[keys2[j]]; } } - if (message.oidcToken != null && message.hasOwnProperty("oidcToken")) { - object.oidcToken = $root.google.pubsub.v1.PushConfig.OidcToken.toObject(message.oidcToken, options); + if (message.oidcToken != null && Object.hasOwnProperty.call(message, "oidcToken")) { + object.oidcToken = $root.google.pubsub.v1.PushConfig.OidcToken.toObject(message.oidcToken, options, q + 1); if (options.oneofs) object.authenticationMethod = "oidcToken"; } - if (message.pubsubWrapper != null && message.hasOwnProperty("pubsubWrapper")) { - object.pubsubWrapper = $root.google.pubsub.v1.PushConfig.PubsubWrapper.toObject(message.pubsubWrapper, options); + if (message.pubsubWrapper != null && Object.hasOwnProperty.call(message, "pubsubWrapper")) { + object.pubsubWrapper = $root.google.pubsub.v1.PushConfig.PubsubWrapper.toObject(message.pubsubWrapper, options, q + 1); if (options.oneofs) object.wrapper = "pubsubWrapper"; } - if (message.noWrapper != null && message.hasOwnProperty("noWrapper")) { - object.noWrapper = $root.google.pubsub.v1.PushConfig.NoWrapper.toObject(message.noWrapper, options); + if (message.noWrapper != null && Object.hasOwnProperty.call(message, "noWrapper")) { + object.noWrapper = $root.google.pubsub.v1.PushConfig.NoWrapper.toObject(message.noWrapper, options, q + 1); if (options.oneofs) object.wrapper = "noWrapper"; } @@ -15721,9 +16135,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OidcToken.encode = function encode(message, writer) { + OidcToken.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.serviceAccountEmail); if (message.audience != null && Object.hasOwnProperty.call(message, "audience")) @@ -15741,7 +16159,7 @@ * @returns {$protobuf.Writer} Writer */ OidcToken.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -15815,10 +16233,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) if (!$util.isString(message.serviceAccountEmail)) return "serviceAccountEmail: string expected"; - if (message.audience != null && message.hasOwnProperty("audience")) + if (message.audience != null && Object.hasOwnProperty.call(message, "audience")) if (!$util.isString(message.audience)) return "audience: string expected"; return null; @@ -15835,6 +16253,8 @@ OidcToken.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PushConfig.OidcToken) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PushConfig.OidcToken: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -15856,17 +16276,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - OidcToken.toObject = function toObject(message, options) { + OidcToken.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.serviceAccountEmail = ""; object.audience = ""; } - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) object.serviceAccountEmail = message.serviceAccountEmail; - if (message.audience != null && message.hasOwnProperty("audience")) + if (message.audience != null && Object.hasOwnProperty.call(message, "audience")) object.audience = message.audience; return object; }; @@ -15944,9 +16368,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PubsubWrapper.encode = function encode(message, writer) { + PubsubWrapper.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -15960,7 +16388,7 @@ * @returns {$protobuf.Writer} Writer */ PubsubWrapper.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -16040,10 +16468,6 @@ PubsubWrapper.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PushConfig.PubsubWrapper) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.PushConfig.PubsubWrapper(); }; @@ -16142,9 +16566,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - NoWrapper.encode = function encode(message, writer) { + NoWrapper.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.writeMetadata); return writer; @@ -16160,7 +16588,7 @@ * @returns {$protobuf.Writer} Writer */ NoWrapper.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -16230,7 +16658,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.writeMetadata != null && message.hasOwnProperty("writeMetadata")) + if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) if (typeof message.writeMetadata !== "boolean") return "writeMetadata: boolean expected"; return null; @@ -16247,6 +16675,8 @@ NoWrapper.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PushConfig.NoWrapper) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PushConfig.NoWrapper: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -16266,13 +16696,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - NoWrapper.toObject = function toObject(message, options) { + NoWrapper.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.writeMetadata = false; - if (message.writeMetadata != null && message.hasOwnProperty("writeMetadata")) + if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) object.writeMetadata = message.writeMetadata; return object; }; @@ -16416,9 +16850,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BigQueryConfig.encode = function encode(message, writer) { + BigQueryConfig.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.table != null && Object.hasOwnProperty.call(message, "table")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.table); if (message.useTopicSchema != null && Object.hasOwnProperty.call(message, "useTopicSchema")) @@ -16446,7 +16884,7 @@ * @returns {$protobuf.Writer} Writer */ BigQueryConfig.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -16540,19 +16978,19 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.table != null && message.hasOwnProperty("table")) + if (message.table != null && Object.hasOwnProperty.call(message, "table")) if (!$util.isString(message.table)) return "table: string expected"; - if (message.useTopicSchema != null && message.hasOwnProperty("useTopicSchema")) + if (message.useTopicSchema != null && Object.hasOwnProperty.call(message, "useTopicSchema")) if (typeof message.useTopicSchema !== "boolean") return "useTopicSchema: boolean expected"; - if (message.writeMetadata != null && message.hasOwnProperty("writeMetadata")) + if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) if (typeof message.writeMetadata !== "boolean") return "writeMetadata: boolean expected"; - if (message.dropUnknownFields != null && message.hasOwnProperty("dropUnknownFields")) + if (message.dropUnknownFields != null && Object.hasOwnProperty.call(message, "dropUnknownFields")) if (typeof message.dropUnknownFields !== "boolean") return "dropUnknownFields: boolean expected"; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -16565,10 +17003,10 @@ case 6: break; } - if (message.useTableSchema != null && message.hasOwnProperty("useTableSchema")) + if (message.useTableSchema != null && Object.hasOwnProperty.call(message, "useTableSchema")) if (typeof message.useTableSchema !== "boolean") return "useTableSchema: boolean expected"; - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) if (!$util.isString(message.serviceAccountEmail)) return "serviceAccountEmail: string expected"; return null; @@ -16585,6 +17023,8 @@ BigQueryConfig.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.BigQueryConfig) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.BigQueryConfig: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -16650,9 +17090,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - BigQueryConfig.toObject = function toObject(message, options) { + BigQueryConfig.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.table = ""; @@ -16663,19 +17107,19 @@ object.useTableSchema = false; object.serviceAccountEmail = ""; } - if (message.table != null && message.hasOwnProperty("table")) + if (message.table != null && Object.hasOwnProperty.call(message, "table")) object.table = message.table; - if (message.useTopicSchema != null && message.hasOwnProperty("useTopicSchema")) + if (message.useTopicSchema != null && Object.hasOwnProperty.call(message, "useTopicSchema")) object.useTopicSchema = message.useTopicSchema; - if (message.writeMetadata != null && message.hasOwnProperty("writeMetadata")) + if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) object.writeMetadata = message.writeMetadata; - if (message.dropUnknownFields != null && message.hasOwnProperty("dropUnknownFields")) + if (message.dropUnknownFields != null && Object.hasOwnProperty.call(message, "dropUnknownFields")) object.dropUnknownFields = message.dropUnknownFields; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.BigQueryConfig.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.BigQueryConfig.State[message.state] : message.state; - if (message.useTableSchema != null && message.hasOwnProperty("useTableSchema")) + if (message.useTableSchema != null && Object.hasOwnProperty.call(message, "useTableSchema")) object.useTableSchema = message.useTableSchema; - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) object.serviceAccountEmail = message.serviceAccountEmail; return object; }; @@ -16822,9 +17266,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - BigtableConfig.encode = function encode(message, writer) { + BigtableConfig.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.table != null && Object.hasOwnProperty.call(message, "table")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.table); if (message.appProfileId != null && Object.hasOwnProperty.call(message, "appProfileId")) @@ -16848,7 +17296,7 @@ * @returns {$protobuf.Writer} Writer */ BigtableConfig.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -16934,19 +17382,19 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.table != null && message.hasOwnProperty("table")) + if (message.table != null && Object.hasOwnProperty.call(message, "table")) if (!$util.isString(message.table)) return "table: string expected"; - if (message.appProfileId != null && message.hasOwnProperty("appProfileId")) + if (message.appProfileId != null && Object.hasOwnProperty.call(message, "appProfileId")) if (!$util.isString(message.appProfileId)) return "appProfileId: string expected"; - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) if (!$util.isString(message.serviceAccountEmail)) return "serviceAccountEmail: string expected"; - if (message.writeMetadata != null && message.hasOwnProperty("writeMetadata")) + if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) if (typeof message.writeMetadata !== "boolean") return "writeMetadata: boolean expected"; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -16974,6 +17422,8 @@ BigtableConfig.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.BigtableConfig) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.BigtableConfig: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -17039,9 +17489,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - BigtableConfig.toObject = function toObject(message, options) { + BigtableConfig.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.table = ""; @@ -17050,15 +17504,15 @@ object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; object.writeMetadata = false; } - if (message.table != null && message.hasOwnProperty("table")) + if (message.table != null && Object.hasOwnProperty.call(message, "table")) object.table = message.table; - if (message.appProfileId != null && message.hasOwnProperty("appProfileId")) + if (message.appProfileId != null && Object.hasOwnProperty.call(message, "appProfileId")) object.appProfileId = message.appProfileId; - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) object.serviceAccountEmail = message.serviceAccountEmail; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.BigtableConfig.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.BigtableConfig.State[message.state] : message.state; - if (message.writeMetadata != null && message.hasOwnProperty("writeMetadata")) + if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) object.writeMetadata = message.writeMetadata; return object; }; @@ -17275,9 +17729,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CloudStorageConfig.encode = function encode(message, writer) { + CloudStorageConfig.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.bucket); if (message.filenamePrefix != null && Object.hasOwnProperty.call(message, "filenamePrefix")) @@ -17285,11 +17743,11 @@ if (message.filenameSuffix != null && Object.hasOwnProperty.call(message, "filenameSuffix")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.filenameSuffix); if (message.textConfig != null && Object.hasOwnProperty.call(message, "textConfig")) - $root.google.pubsub.v1.CloudStorageConfig.TextConfig.encode(message.textConfig, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.pubsub.v1.CloudStorageConfig.TextConfig.encode(message.textConfig, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.avroConfig != null && Object.hasOwnProperty.call(message, "avroConfig")) - $root.google.pubsub.v1.CloudStorageConfig.AvroConfig.encode(message.avroConfig, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.CloudStorageConfig.AvroConfig.encode(message.avroConfig, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.maxDuration != null && Object.hasOwnProperty.call(message, "maxDuration")) - $root.google.protobuf.Duration.encode(message.maxDuration, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.maxDuration, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.maxBytes != null && Object.hasOwnProperty.call(message, "maxBytes")) writer.uint32(/* id 7, wireType 0 =*/56).int64(message.maxBytes); if (message.maxMessages != null && Object.hasOwnProperty.call(message, "maxMessages")) @@ -17313,7 +17771,7 @@ * @returns {$protobuf.Writer} Writer */ CloudStorageConfig.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -17424,19 +17882,19 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.bucket != null && message.hasOwnProperty("bucket")) + if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) if (!$util.isString(message.bucket)) return "bucket: string expected"; - if (message.filenamePrefix != null && message.hasOwnProperty("filenamePrefix")) + if (message.filenamePrefix != null && Object.hasOwnProperty.call(message, "filenamePrefix")) if (!$util.isString(message.filenamePrefix)) return "filenamePrefix: string expected"; - if (message.filenameSuffix != null && message.hasOwnProperty("filenameSuffix")) + if (message.filenameSuffix != null && Object.hasOwnProperty.call(message, "filenameSuffix")) if (!$util.isString(message.filenameSuffix)) return "filenameSuffix: string expected"; - if (message.filenameDatetimeFormat != null && message.hasOwnProperty("filenameDatetimeFormat")) + if (message.filenameDatetimeFormat != null && Object.hasOwnProperty.call(message, "filenameDatetimeFormat")) if (!$util.isString(message.filenameDatetimeFormat)) return "filenameDatetimeFormat: string expected"; - if (message.textConfig != null && message.hasOwnProperty("textConfig")) { + if (message.textConfig != null && Object.hasOwnProperty.call(message, "textConfig")) { properties.outputFormat = 1; { var error = $root.google.pubsub.v1.CloudStorageConfig.TextConfig.verify(message.textConfig, long + 1); @@ -17444,7 +17902,7 @@ return "textConfig." + error; } } - if (message.avroConfig != null && message.hasOwnProperty("avroConfig")) { + if (message.avroConfig != null && Object.hasOwnProperty.call(message, "avroConfig")) { if (properties.outputFormat === 1) return "outputFormat: multiple values"; properties.outputFormat = 1; @@ -17454,18 +17912,18 @@ return "avroConfig." + error; } } - if (message.maxDuration != null && message.hasOwnProperty("maxDuration")) { + if (message.maxDuration != null && Object.hasOwnProperty.call(message, "maxDuration")) { var error = $root.google.protobuf.Duration.verify(message.maxDuration, long + 1); if (error) return "maxDuration." + error; } - if (message.maxBytes != null && message.hasOwnProperty("maxBytes")) + if (message.maxBytes != null && Object.hasOwnProperty.call(message, "maxBytes")) if (!$util.isInteger(message.maxBytes) && !(message.maxBytes && $util.isInteger(message.maxBytes.low) && $util.isInteger(message.maxBytes.high))) return "maxBytes: integer|Long expected"; - if (message.maxMessages != null && message.hasOwnProperty("maxMessages")) + if (message.maxMessages != null && Object.hasOwnProperty.call(message, "maxMessages")) if (!$util.isInteger(message.maxMessages) && !(message.maxMessages && $util.isInteger(message.maxMessages.low) && $util.isInteger(message.maxMessages.high))) return "maxMessages: integer|Long expected"; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) switch (message.state) { default: return "state: enum value expected"; @@ -17478,7 +17936,7 @@ case 6: break; } - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) if (!$util.isString(message.serviceAccountEmail)) return "serviceAccountEmail: string expected"; return null; @@ -17495,6 +17953,8 @@ CloudStorageConfig.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.CloudStorageConfig) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.CloudStorageConfig: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -17509,23 +17969,23 @@ if (object.filenameDatetimeFormat != null) message.filenameDatetimeFormat = String(object.filenameDatetimeFormat); if (object.textConfig != null) { - if (typeof object.textConfig !== "object") + if (!$util.isObject(object.textConfig)) throw TypeError(".google.pubsub.v1.CloudStorageConfig.textConfig: object expected"); message.textConfig = $root.google.pubsub.v1.CloudStorageConfig.TextConfig.fromObject(object.textConfig, long + 1); } if (object.avroConfig != null) { - if (typeof object.avroConfig !== "object") + if (!$util.isObject(object.avroConfig)) throw TypeError(".google.pubsub.v1.CloudStorageConfig.avroConfig: object expected"); message.avroConfig = $root.google.pubsub.v1.CloudStorageConfig.AvroConfig.fromObject(object.avroConfig, long + 1); } if (object.maxDuration != null) { - if (typeof object.maxDuration !== "object") + if (!$util.isObject(object.maxDuration)) throw TypeError(".google.pubsub.v1.CloudStorageConfig.maxDuration: object expected"); message.maxDuration = $root.google.protobuf.Duration.fromObject(object.maxDuration, long + 1); } if (object.maxBytes != null) if ($util.Long) - (message.maxBytes = $util.Long.fromValue(object.maxBytes)).unsigned = false; + message.maxBytes = $util.Long.fromValue(object.maxBytes, false); else if (typeof object.maxBytes === "string") message.maxBytes = parseInt(object.maxBytes, 10); else if (typeof object.maxBytes === "number") @@ -17534,7 +17994,7 @@ message.maxBytes = new $util.LongBits(object.maxBytes.low >>> 0, object.maxBytes.high >>> 0).toNumber(); if (object.maxMessages != null) if ($util.Long) - (message.maxMessages = $util.Long.fromValue(object.maxMessages)).unsigned = false; + message.maxMessages = $util.Long.fromValue(object.maxMessages, false); else if (typeof object.maxMessages === "string") message.maxMessages = parseInt(object.maxMessages, 10); else if (typeof object.maxMessages === "number") @@ -17591,9 +18051,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CloudStorageConfig.toObject = function toObject(message, options) { + CloudStorageConfig.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.bucket = ""; @@ -17602,51 +18066,55 @@ object.maxDuration = null; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.maxBytes = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.maxBytes = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.maxBytes = options.longs === String ? "0" : 0; + object.maxBytes = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.maxMessages = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.maxMessages = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.maxMessages = options.longs === String ? "0" : 0; + object.maxMessages = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0; object.filenameDatetimeFormat = ""; object.serviceAccountEmail = ""; } - if (message.bucket != null && message.hasOwnProperty("bucket")) + if (message.bucket != null && Object.hasOwnProperty.call(message, "bucket")) object.bucket = message.bucket; - if (message.filenamePrefix != null && message.hasOwnProperty("filenamePrefix")) + if (message.filenamePrefix != null && Object.hasOwnProperty.call(message, "filenamePrefix")) object.filenamePrefix = message.filenamePrefix; - if (message.filenameSuffix != null && message.hasOwnProperty("filenameSuffix")) + if (message.filenameSuffix != null && Object.hasOwnProperty.call(message, "filenameSuffix")) object.filenameSuffix = message.filenameSuffix; - if (message.textConfig != null && message.hasOwnProperty("textConfig")) { - object.textConfig = $root.google.pubsub.v1.CloudStorageConfig.TextConfig.toObject(message.textConfig, options); + if (message.textConfig != null && Object.hasOwnProperty.call(message, "textConfig")) { + object.textConfig = $root.google.pubsub.v1.CloudStorageConfig.TextConfig.toObject(message.textConfig, options, q + 1); if (options.oneofs) object.outputFormat = "textConfig"; } - if (message.avroConfig != null && message.hasOwnProperty("avroConfig")) { - object.avroConfig = $root.google.pubsub.v1.CloudStorageConfig.AvroConfig.toObject(message.avroConfig, options); + if (message.avroConfig != null && Object.hasOwnProperty.call(message, "avroConfig")) { + object.avroConfig = $root.google.pubsub.v1.CloudStorageConfig.AvroConfig.toObject(message.avroConfig, options, q + 1); if (options.oneofs) object.outputFormat = "avroConfig"; } - if (message.maxDuration != null && message.hasOwnProperty("maxDuration")) - object.maxDuration = $root.google.protobuf.Duration.toObject(message.maxDuration, options); - if (message.maxBytes != null && message.hasOwnProperty("maxBytes")) - if (typeof message.maxBytes === "number") + if (message.maxDuration != null && Object.hasOwnProperty.call(message, "maxDuration")) + object.maxDuration = $root.google.protobuf.Duration.toObject(message.maxDuration, options, q + 1); + if (message.maxBytes != null && Object.hasOwnProperty.call(message, "maxBytes")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.maxBytes = typeof message.maxBytes === "number" ? BigInt(message.maxBytes) : $util.Long.fromBits(message.maxBytes.low >>> 0, message.maxBytes.high >>> 0, false).toBigInt(); + else if (typeof message.maxBytes === "number") object.maxBytes = options.longs === String ? String(message.maxBytes) : message.maxBytes; else object.maxBytes = options.longs === String ? $util.Long.prototype.toString.call(message.maxBytes) : options.longs === Number ? new $util.LongBits(message.maxBytes.low >>> 0, message.maxBytes.high >>> 0).toNumber() : message.maxBytes; - if (message.maxMessages != null && message.hasOwnProperty("maxMessages")) - if (typeof message.maxMessages === "number") + if (message.maxMessages != null && Object.hasOwnProperty.call(message, "maxMessages")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.maxMessages = typeof message.maxMessages === "number" ? BigInt(message.maxMessages) : $util.Long.fromBits(message.maxMessages.low >>> 0, message.maxMessages.high >>> 0, false).toBigInt(); + else if (typeof message.maxMessages === "number") object.maxMessages = options.longs === String ? String(message.maxMessages) : message.maxMessages; else object.maxMessages = options.longs === String ? $util.Long.prototype.toString.call(message.maxMessages) : options.longs === Number ? new $util.LongBits(message.maxMessages.low >>> 0, message.maxMessages.high >>> 0).toNumber() : message.maxMessages; - if (message.state != null && message.hasOwnProperty("state")) + if (message.state != null && Object.hasOwnProperty.call(message, "state")) object.state = options.enums === String ? $root.google.pubsub.v1.CloudStorageConfig.State[message.state] === undefined ? message.state : $root.google.pubsub.v1.CloudStorageConfig.State[message.state] : message.state; - if (message.filenameDatetimeFormat != null && message.hasOwnProperty("filenameDatetimeFormat")) + if (message.filenameDatetimeFormat != null && Object.hasOwnProperty.call(message, "filenameDatetimeFormat")) object.filenameDatetimeFormat = message.filenameDatetimeFormat; - if (message.serviceAccountEmail != null && message.hasOwnProperty("serviceAccountEmail")) + if (message.serviceAccountEmail != null && Object.hasOwnProperty.call(message, "serviceAccountEmail")) object.serviceAccountEmail = message.serviceAccountEmail; return object; }; @@ -17721,9 +18189,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TextConfig.encode = function encode(message, writer) { + TextConfig.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -17737,7 +18209,7 @@ * @returns {$protobuf.Writer} Writer */ TextConfig.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -17817,10 +18289,6 @@ TextConfig.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.CloudStorageConfig.TextConfig) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.CloudStorageConfig.TextConfig(); }; @@ -17928,9 +18396,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AvroConfig.encode = function encode(message, writer) { + AvroConfig.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.writeMetadata); if (message.useTopicSchema != null && Object.hasOwnProperty.call(message, "useTopicSchema")) @@ -17948,7 +18420,7 @@ * @returns {$protobuf.Writer} Writer */ AvroConfig.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -18022,10 +18494,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.writeMetadata != null && message.hasOwnProperty("writeMetadata")) + if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) if (typeof message.writeMetadata !== "boolean") return "writeMetadata: boolean expected"; - if (message.useTopicSchema != null && message.hasOwnProperty("useTopicSchema")) + if (message.useTopicSchema != null && Object.hasOwnProperty.call(message, "useTopicSchema")) if (typeof message.useTopicSchema !== "boolean") return "useTopicSchema: boolean expected"; return null; @@ -18042,6 +18514,8 @@ AvroConfig.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.CloudStorageConfig.AvroConfig) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.CloudStorageConfig.AvroConfig: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -18063,17 +18537,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AvroConfig.toObject = function toObject(message, options) { + AvroConfig.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.writeMetadata = false; object.useTopicSchema = false; } - if (message.writeMetadata != null && message.hasOwnProperty("writeMetadata")) + if (message.writeMetadata != null && Object.hasOwnProperty.call(message, "writeMetadata")) object.writeMetadata = message.writeMetadata; - if (message.useTopicSchema != null && message.hasOwnProperty("useTopicSchema")) + if (message.useTopicSchema != null && Object.hasOwnProperty.call(message, "useTopicSchema")) object.useTopicSchema = message.useTopicSchema; return object; }; @@ -18205,13 +18683,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReceivedMessage.encode = function encode(message, writer) { + ReceivedMessage.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.ackId != null && Object.hasOwnProperty.call(message, "ackId")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.ackId); if (message.message != null && Object.hasOwnProperty.call(message, "message")) - $root.google.pubsub.v1.PubsubMessage.encode(message.message, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.PubsubMessage.encode(message.message, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.deliveryAttempt != null && Object.hasOwnProperty.call(message, "deliveryAttempt")) writer.uint32(/* id 3, wireType 0 =*/24).int32(message.deliveryAttempt); return writer; @@ -18227,7 +18709,7 @@ * @returns {$protobuf.Writer} Writer */ ReceivedMessage.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -18305,15 +18787,15 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.ackId != null && message.hasOwnProperty("ackId")) + if (message.ackId != null && Object.hasOwnProperty.call(message, "ackId")) if (!$util.isString(message.ackId)) return "ackId: string expected"; - if (message.message != null && message.hasOwnProperty("message")) { + if (message.message != null && Object.hasOwnProperty.call(message, "message")) { var error = $root.google.pubsub.v1.PubsubMessage.verify(message.message, long + 1); if (error) return "message." + error; } - if (message.deliveryAttempt != null && message.hasOwnProperty("deliveryAttempt")) + if (message.deliveryAttempt != null && Object.hasOwnProperty.call(message, "deliveryAttempt")) if (!$util.isInteger(message.deliveryAttempt)) return "deliveryAttempt: integer expected"; return null; @@ -18330,6 +18812,8 @@ ReceivedMessage.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ReceivedMessage) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ReceivedMessage: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -18338,7 +18822,7 @@ if (object.ackId != null) message.ackId = String(object.ackId); if (object.message != null) { - if (typeof object.message !== "object") + if (!$util.isObject(object.message)) throw TypeError(".google.pubsub.v1.ReceivedMessage.message: object expected"); message.message = $root.google.pubsub.v1.PubsubMessage.fromObject(object.message, long + 1); } @@ -18356,20 +18840,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ReceivedMessage.toObject = function toObject(message, options) { + ReceivedMessage.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.ackId = ""; object.message = null; object.deliveryAttempt = 0; } - if (message.ackId != null && message.hasOwnProperty("ackId")) + if (message.ackId != null && Object.hasOwnProperty.call(message, "ackId")) object.ackId = message.ackId; - if (message.message != null && message.hasOwnProperty("message")) - object.message = $root.google.pubsub.v1.PubsubMessage.toObject(message.message, options); - if (message.deliveryAttempt != null && message.hasOwnProperty("deliveryAttempt")) + if (message.message != null && Object.hasOwnProperty.call(message, "message")) + object.message = $root.google.pubsub.v1.PubsubMessage.toObject(message.message, options, q + 1); + if (message.deliveryAttempt != null && Object.hasOwnProperty.call(message, "deliveryAttempt")) object.deliveryAttempt = message.deliveryAttempt; return object; }; @@ -18456,9 +18944,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GetSubscriptionRequest.encode = function encode(message, writer) { + GetSubscriptionRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); return writer; @@ -18474,7 +18966,7 @@ * @returns {$protobuf.Writer} Writer */ GetSubscriptionRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -18544,7 +19036,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; return null; @@ -18561,6 +19053,8 @@ GetSubscriptionRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.GetSubscriptionRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.GetSubscriptionRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -18580,13 +19074,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GetSubscriptionRequest.toObject = function toObject(message, options) { + GetSubscriptionRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.subscription = ""; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; return object; }; @@ -18682,13 +19180,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UpdateSubscriptionRequest.encode = function encode(message, writer) { + UpdateSubscriptionRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) - $root.google.pubsub.v1.Subscription.encode(message.subscription, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.Subscription.encode(message.subscription, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) - $root.google.protobuf.FieldMask.encode(message.updateMask, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.FieldMask.encode(message.updateMask, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -18702,7 +19204,7 @@ * @returns {$protobuf.Writer} Writer */ UpdateSubscriptionRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -18776,12 +19278,12 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) { + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) { var error = $root.google.pubsub.v1.Subscription.verify(message.subscription, long + 1); if (error) return "subscription." + error; } - if (message.updateMask != null && message.hasOwnProperty("updateMask")) { + if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) { var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; @@ -18800,18 +19302,20 @@ UpdateSubscriptionRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.UpdateSubscriptionRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.UpdateSubscriptionRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.pubsub.v1.UpdateSubscriptionRequest(); if (object.subscription != null) { - if (typeof object.subscription !== "object") + if (!$util.isObject(object.subscription)) throw TypeError(".google.pubsub.v1.UpdateSubscriptionRequest.subscription: object expected"); message.subscription = $root.google.pubsub.v1.Subscription.fromObject(object.subscription, long + 1); } if (object.updateMask != null) { - if (typeof object.updateMask !== "object") + if (!$util.isObject(object.updateMask)) throw TypeError(".google.pubsub.v1.UpdateSubscriptionRequest.updateMask: object expected"); message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } @@ -18827,18 +19331,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - UpdateSubscriptionRequest.toObject = function toObject(message, options) { + UpdateSubscriptionRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.subscription = null; object.updateMask = null; } - if (message.subscription != null && message.hasOwnProperty("subscription")) - object.subscription = $root.google.pubsub.v1.Subscription.toObject(message.subscription, options); - if (message.updateMask != null && message.hasOwnProperty("updateMask")) - object.updateMask = $root.google.protobuf.FieldMask.toObject(message.updateMask, options); + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) + object.subscription = $root.google.pubsub.v1.Subscription.toObject(message.subscription, options, q + 1); + if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) + object.updateMask = $root.google.protobuf.FieldMask.toObject(message.updateMask, options, q + 1); return object; }; @@ -18942,9 +19450,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListSubscriptionsRequest.encode = function encode(message, writer) { + ListSubscriptionsRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.project != null && Object.hasOwnProperty.call(message, "project")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.project); if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) @@ -18964,7 +19476,7 @@ * @returns {$protobuf.Writer} Writer */ ListSubscriptionsRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -19042,13 +19554,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.project != null && message.hasOwnProperty("project")) + if (message.project != null && Object.hasOwnProperty.call(message, "project")) if (!$util.isString(message.project)) return "project: string expected"; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) if (!$util.isInteger(message.pageSize)) return "pageSize: integer expected"; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) if (!$util.isString(message.pageToken)) return "pageToken: string expected"; return null; @@ -19065,6 +19577,8 @@ ListSubscriptionsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListSubscriptionsRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListSubscriptionsRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -19088,20 +19602,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListSubscriptionsRequest.toObject = function toObject(message, options) { + ListSubscriptionsRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.project = ""; object.pageSize = 0; object.pageToken = ""; } - if (message.project != null && message.hasOwnProperty("project")) + if (message.project != null && Object.hasOwnProperty.call(message, "project")) object.project = message.project; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) object.pageSize = message.pageSize; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) object.pageToken = message.pageToken; return object; }; @@ -19198,12 +19716,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListSubscriptionsResponse.encode = function encode(message, writer) { + ListSubscriptionsResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscriptions != null && message.subscriptions.length) for (var i = 0; i < message.subscriptions.length; ++i) - $root.google.pubsub.v1.Subscription.encode(message.subscriptions[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.Subscription.encode(message.subscriptions[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken); return writer; @@ -19219,7 +19741,7 @@ * @returns {$protobuf.Writer} Writer */ ListSubscriptionsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -19295,7 +19817,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscriptions != null && message.hasOwnProperty("subscriptions")) { + if (message.subscriptions != null && Object.hasOwnProperty.call(message, "subscriptions")) { if (!Array.isArray(message.subscriptions)) return "subscriptions: array expected"; for (var i = 0; i < message.subscriptions.length; ++i) { @@ -19304,7 +19826,7 @@ return "subscriptions." + error; } } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; return null; @@ -19321,6 +19843,8 @@ ListSubscriptionsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListSubscriptionsResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListSubscriptionsResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -19331,7 +19855,7 @@ throw TypeError(".google.pubsub.v1.ListSubscriptionsResponse.subscriptions: array expected"); message.subscriptions = []; for (var i = 0; i < object.subscriptions.length; ++i) { - if (typeof object.subscriptions[i] !== "object") + if (!$util.isObject(object.subscriptions[i])) throw TypeError(".google.pubsub.v1.ListSubscriptionsResponse.subscriptions: object expected"); message.subscriptions[i] = $root.google.pubsub.v1.Subscription.fromObject(object.subscriptions[i], long + 1); } @@ -19350,9 +19874,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListSubscriptionsResponse.toObject = function toObject(message, options) { + ListSubscriptionsResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.subscriptions = []; @@ -19361,9 +19889,9 @@ if (message.subscriptions && message.subscriptions.length) { object.subscriptions = []; for (var j = 0; j < message.subscriptions.length; ++j) - object.subscriptions[j] = $root.google.pubsub.v1.Subscription.toObject(message.subscriptions[j], options); + object.subscriptions[j] = $root.google.pubsub.v1.Subscription.toObject(message.subscriptions[j], options, q + 1); } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) object.nextPageToken = message.nextPageToken; return object; }; @@ -19450,9 +19978,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DeleteSubscriptionRequest.encode = function encode(message, writer) { + DeleteSubscriptionRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); return writer; @@ -19468,7 +20000,7 @@ * @returns {$protobuf.Writer} Writer */ DeleteSubscriptionRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -19538,7 +20070,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; return null; @@ -19555,6 +20087,8 @@ DeleteSubscriptionRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.DeleteSubscriptionRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.DeleteSubscriptionRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -19574,13 +20108,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DeleteSubscriptionRequest.toObject = function toObject(message, options) { + DeleteSubscriptionRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.subscription = ""; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; return object; }; @@ -19676,13 +20214,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ModifyPushConfigRequest.encode = function encode(message, writer) { + ModifyPushConfigRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); if (message.pushConfig != null && Object.hasOwnProperty.call(message, "pushConfig")) - $root.google.pubsub.v1.PushConfig.encode(message.pushConfig, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.PushConfig.encode(message.pushConfig, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -19696,7 +20238,7 @@ * @returns {$protobuf.Writer} Writer */ ModifyPushConfigRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -19770,10 +20312,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; - if (message.pushConfig != null && message.hasOwnProperty("pushConfig")) { + if (message.pushConfig != null && Object.hasOwnProperty.call(message, "pushConfig")) { var error = $root.google.pubsub.v1.PushConfig.verify(message.pushConfig, long + 1); if (error) return "pushConfig." + error; @@ -19792,6 +20334,8 @@ ModifyPushConfigRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ModifyPushConfigRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ModifyPushConfigRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -19800,7 +20344,7 @@ if (object.subscription != null) message.subscription = String(object.subscription); if (object.pushConfig != null) { - if (typeof object.pushConfig !== "object") + if (!$util.isObject(object.pushConfig)) throw TypeError(".google.pubsub.v1.ModifyPushConfigRequest.pushConfig: object expected"); message.pushConfig = $root.google.pubsub.v1.PushConfig.fromObject(object.pushConfig, long + 1); } @@ -19816,18 +20360,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ModifyPushConfigRequest.toObject = function toObject(message, options) { + ModifyPushConfigRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.subscription = ""; object.pushConfig = null; } - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; - if (message.pushConfig != null && message.hasOwnProperty("pushConfig")) - object.pushConfig = $root.google.pubsub.v1.PushConfig.toObject(message.pushConfig, options); + if (message.pushConfig != null && Object.hasOwnProperty.call(message, "pushConfig")) + object.pushConfig = $root.google.pubsub.v1.PushConfig.toObject(message.pushConfig, options, q + 1); return object; }; @@ -19931,9 +20479,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PullRequest.encode = function encode(message, writer) { + PullRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); if (message.returnImmediately != null && Object.hasOwnProperty.call(message, "returnImmediately")) @@ -19953,7 +20505,7 @@ * @returns {$protobuf.Writer} Writer */ PullRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -20031,13 +20583,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; - if (message.returnImmediately != null && message.hasOwnProperty("returnImmediately")) + if (message.returnImmediately != null && Object.hasOwnProperty.call(message, "returnImmediately")) if (typeof message.returnImmediately !== "boolean") return "returnImmediately: boolean expected"; - if (message.maxMessages != null && message.hasOwnProperty("maxMessages")) + if (message.maxMessages != null && Object.hasOwnProperty.call(message, "maxMessages")) if (!$util.isInteger(message.maxMessages)) return "maxMessages: integer expected"; return null; @@ -20054,6 +20606,8 @@ PullRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PullRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PullRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -20077,20 +20631,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PullRequest.toObject = function toObject(message, options) { + PullRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.subscription = ""; object.returnImmediately = false; object.maxMessages = 0; } - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; - if (message.returnImmediately != null && message.hasOwnProperty("returnImmediately")) + if (message.returnImmediately != null && Object.hasOwnProperty.call(message, "returnImmediately")) object.returnImmediately = message.returnImmediately; - if (message.maxMessages != null && message.hasOwnProperty("maxMessages")) + if (message.maxMessages != null && Object.hasOwnProperty.call(message, "maxMessages")) object.maxMessages = message.maxMessages; return object; }; @@ -20178,12 +20736,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PullResponse.encode = function encode(message, writer) { + PullResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.receivedMessages != null && message.receivedMessages.length) for (var i = 0; i < message.receivedMessages.length; ++i) - $root.google.pubsub.v1.ReceivedMessage.encode(message.receivedMessages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.ReceivedMessage.encode(message.receivedMessages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -20197,7 +20759,7 @@ * @returns {$protobuf.Writer} Writer */ PullResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -20269,7 +20831,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.receivedMessages != null && message.hasOwnProperty("receivedMessages")) { + if (message.receivedMessages != null && Object.hasOwnProperty.call(message, "receivedMessages")) { if (!Array.isArray(message.receivedMessages)) return "receivedMessages: array expected"; for (var i = 0; i < message.receivedMessages.length; ++i) { @@ -20292,6 +20854,8 @@ PullResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.PullResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.PullResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -20302,7 +20866,7 @@ throw TypeError(".google.pubsub.v1.PullResponse.receivedMessages: array expected"); message.receivedMessages = []; for (var i = 0; i < object.receivedMessages.length; ++i) { - if (typeof object.receivedMessages[i] !== "object") + if (!$util.isObject(object.receivedMessages[i])) throw TypeError(".google.pubsub.v1.PullResponse.receivedMessages: object expected"); message.receivedMessages[i] = $root.google.pubsub.v1.ReceivedMessage.fromObject(object.receivedMessages[i], long + 1); } @@ -20319,16 +20883,20 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PullResponse.toObject = function toObject(message, options) { + PullResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.receivedMessages = []; if (message.receivedMessages && message.receivedMessages.length) { object.receivedMessages = []; for (var j = 0; j < message.receivedMessages.length; ++j) - object.receivedMessages[j] = $root.google.pubsub.v1.ReceivedMessage.toObject(message.receivedMessages[j], options); + object.receivedMessages[j] = $root.google.pubsub.v1.ReceivedMessage.toObject(message.receivedMessages[j], options, q + 1); } return object; }; @@ -20434,9 +21002,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ModifyAckDeadlineRequest.encode = function encode(message, writer) { + ModifyAckDeadlineRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); if (message.ackDeadlineSeconds != null && Object.hasOwnProperty.call(message, "ackDeadlineSeconds")) @@ -20457,7 +21029,7 @@ * @returns {$protobuf.Writer} Writer */ ModifyAckDeadlineRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -20537,17 +21109,17 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; - if (message.ackIds != null && message.hasOwnProperty("ackIds")) { + if (message.ackIds != null && Object.hasOwnProperty.call(message, "ackIds")) { if (!Array.isArray(message.ackIds)) return "ackIds: array expected"; for (var i = 0; i < message.ackIds.length; ++i) if (!$util.isString(message.ackIds[i])) return "ackIds: string[] expected"; } - if (message.ackDeadlineSeconds != null && message.hasOwnProperty("ackDeadlineSeconds")) + if (message.ackDeadlineSeconds != null && Object.hasOwnProperty.call(message, "ackDeadlineSeconds")) if (!$util.isInteger(message.ackDeadlineSeconds)) return "ackDeadlineSeconds: integer expected"; return null; @@ -20564,6 +21136,8 @@ ModifyAckDeadlineRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ModifyAckDeadlineRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ModifyAckDeadlineRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -20592,9 +21166,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ModifyAckDeadlineRequest.toObject = function toObject(message, options) { + ModifyAckDeadlineRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.ackIds = []; @@ -20602,9 +21180,9 @@ object.subscription = ""; object.ackDeadlineSeconds = 0; } - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; - if (message.ackDeadlineSeconds != null && message.hasOwnProperty("ackDeadlineSeconds")) + if (message.ackDeadlineSeconds != null && Object.hasOwnProperty.call(message, "ackDeadlineSeconds")) object.ackDeadlineSeconds = message.ackDeadlineSeconds; if (message.ackIds && message.ackIds.length) { object.ackIds = []; @@ -20706,9 +21284,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AcknowledgeRequest.encode = function encode(message, writer) { + AcknowledgeRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); if (message.ackIds != null && message.ackIds.length) @@ -20727,7 +21309,7 @@ * @returns {$protobuf.Writer} Writer */ AcknowledgeRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -20803,10 +21385,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; - if (message.ackIds != null && message.hasOwnProperty("ackIds")) { + if (message.ackIds != null && Object.hasOwnProperty.call(message, "ackIds")) { if (!Array.isArray(message.ackIds)) return "ackIds: array expected"; for (var i = 0; i < message.ackIds.length; ++i) @@ -20827,6 +21409,8 @@ AcknowledgeRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.AcknowledgeRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.AcknowledgeRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -20853,15 +21437,19 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AcknowledgeRequest.toObject = function toObject(message, options) { + AcknowledgeRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.ackIds = []; if (options.defaults) object.subscription = ""; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; if (message.ackIds && message.ackIds.length) { object.ackIds = []; @@ -21028,9 +21616,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StreamingPullRequest.encode = function encode(message, writer) { + StreamingPullRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); if (message.ackIds != null && message.ackIds.length) @@ -21068,7 +21660,7 @@ * @returns {$protobuf.Writer} Writer */ StreamingPullRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -21181,43 +21773,43 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; - if (message.ackIds != null && message.hasOwnProperty("ackIds")) { + if (message.ackIds != null && Object.hasOwnProperty.call(message, "ackIds")) { if (!Array.isArray(message.ackIds)) return "ackIds: array expected"; for (var i = 0; i < message.ackIds.length; ++i) if (!$util.isString(message.ackIds[i])) return "ackIds: string[] expected"; } - if (message.modifyDeadlineSeconds != null && message.hasOwnProperty("modifyDeadlineSeconds")) { + if (message.modifyDeadlineSeconds != null && Object.hasOwnProperty.call(message, "modifyDeadlineSeconds")) { if (!Array.isArray(message.modifyDeadlineSeconds)) return "modifyDeadlineSeconds: array expected"; for (var i = 0; i < message.modifyDeadlineSeconds.length; ++i) if (!$util.isInteger(message.modifyDeadlineSeconds[i])) return "modifyDeadlineSeconds: integer[] expected"; } - if (message.modifyDeadlineAckIds != null && message.hasOwnProperty("modifyDeadlineAckIds")) { + if (message.modifyDeadlineAckIds != null && Object.hasOwnProperty.call(message, "modifyDeadlineAckIds")) { if (!Array.isArray(message.modifyDeadlineAckIds)) return "modifyDeadlineAckIds: array expected"; for (var i = 0; i < message.modifyDeadlineAckIds.length; ++i) if (!$util.isString(message.modifyDeadlineAckIds[i])) return "modifyDeadlineAckIds: string[] expected"; } - if (message.streamAckDeadlineSeconds != null && message.hasOwnProperty("streamAckDeadlineSeconds")) + if (message.streamAckDeadlineSeconds != null && Object.hasOwnProperty.call(message, "streamAckDeadlineSeconds")) if (!$util.isInteger(message.streamAckDeadlineSeconds)) return "streamAckDeadlineSeconds: integer expected"; - if (message.clientId != null && message.hasOwnProperty("clientId")) + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) if (!$util.isString(message.clientId)) return "clientId: string expected"; - if (message.maxOutstandingMessages != null && message.hasOwnProperty("maxOutstandingMessages")) + if (message.maxOutstandingMessages != null && Object.hasOwnProperty.call(message, "maxOutstandingMessages")) if (!$util.isInteger(message.maxOutstandingMessages) && !(message.maxOutstandingMessages && $util.isInteger(message.maxOutstandingMessages.low) && $util.isInteger(message.maxOutstandingMessages.high))) return "maxOutstandingMessages: integer|Long expected"; - if (message.maxOutstandingBytes != null && message.hasOwnProperty("maxOutstandingBytes")) + if (message.maxOutstandingBytes != null && Object.hasOwnProperty.call(message, "maxOutstandingBytes")) if (!$util.isInteger(message.maxOutstandingBytes) && !(message.maxOutstandingBytes && $util.isInteger(message.maxOutstandingBytes.low) && $util.isInteger(message.maxOutstandingBytes.high))) return "maxOutstandingBytes: integer|Long expected"; - if (message.protocolVersion != null && message.hasOwnProperty("protocolVersion")) + if (message.protocolVersion != null && Object.hasOwnProperty.call(message, "protocolVersion")) if (!$util.isInteger(message.protocolVersion) && !(message.protocolVersion && $util.isInteger(message.protocolVersion.low) && $util.isInteger(message.protocolVersion.high))) return "protocolVersion: integer|Long expected"; return null; @@ -21234,6 +21826,8 @@ StreamingPullRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.StreamingPullRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.StreamingPullRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -21268,7 +21862,7 @@ message.clientId = String(object.clientId); if (object.maxOutstandingMessages != null) if ($util.Long) - (message.maxOutstandingMessages = $util.Long.fromValue(object.maxOutstandingMessages)).unsigned = false; + message.maxOutstandingMessages = $util.Long.fromValue(object.maxOutstandingMessages, false); else if (typeof object.maxOutstandingMessages === "string") message.maxOutstandingMessages = parseInt(object.maxOutstandingMessages, 10); else if (typeof object.maxOutstandingMessages === "number") @@ -21277,7 +21871,7 @@ message.maxOutstandingMessages = new $util.LongBits(object.maxOutstandingMessages.low >>> 0, object.maxOutstandingMessages.high >>> 0).toNumber(); if (object.maxOutstandingBytes != null) if ($util.Long) - (message.maxOutstandingBytes = $util.Long.fromValue(object.maxOutstandingBytes)).unsigned = false; + message.maxOutstandingBytes = $util.Long.fromValue(object.maxOutstandingBytes, false); else if (typeof object.maxOutstandingBytes === "string") message.maxOutstandingBytes = parseInt(object.maxOutstandingBytes, 10); else if (typeof object.maxOutstandingBytes === "number") @@ -21286,7 +21880,7 @@ message.maxOutstandingBytes = new $util.LongBits(object.maxOutstandingBytes.low >>> 0, object.maxOutstandingBytes.high >>> 0).toNumber(); if (object.protocolVersion != null) if ($util.Long) - (message.protocolVersion = $util.Long.fromValue(object.protocolVersion)).unsigned = false; + message.protocolVersion = $util.Long.fromValue(object.protocolVersion, false); else if (typeof object.protocolVersion === "string") message.protocolVersion = parseInt(object.protocolVersion, 10); else if (typeof object.protocolVersion === "number") @@ -21305,9 +21899,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - StreamingPullRequest.toObject = function toObject(message, options) { + StreamingPullRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.ackIds = []; @@ -21320,21 +21918,21 @@ object.clientId = ""; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.maxOutstandingMessages = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.maxOutstandingMessages = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.maxOutstandingMessages = options.longs === String ? "0" : 0; + object.maxOutstandingMessages = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.maxOutstandingBytes = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.maxOutstandingBytes = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.maxOutstandingBytes = options.longs === String ? "0" : 0; + object.maxOutstandingBytes = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.protocolVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.protocolVersion = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.protocolVersion = options.longs === String ? "0" : 0; + object.protocolVersion = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; } - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; if (message.ackIds && message.ackIds.length) { object.ackIds = []; @@ -21351,22 +21949,28 @@ for (var j = 0; j < message.modifyDeadlineAckIds.length; ++j) object.modifyDeadlineAckIds[j] = message.modifyDeadlineAckIds[j]; } - if (message.streamAckDeadlineSeconds != null && message.hasOwnProperty("streamAckDeadlineSeconds")) + if (message.streamAckDeadlineSeconds != null && Object.hasOwnProperty.call(message, "streamAckDeadlineSeconds")) object.streamAckDeadlineSeconds = message.streamAckDeadlineSeconds; - if (message.clientId != null && message.hasOwnProperty("clientId")) + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) object.clientId = message.clientId; - if (message.maxOutstandingMessages != null && message.hasOwnProperty("maxOutstandingMessages")) - if (typeof message.maxOutstandingMessages === "number") + if (message.maxOutstandingMessages != null && Object.hasOwnProperty.call(message, "maxOutstandingMessages")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.maxOutstandingMessages = typeof message.maxOutstandingMessages === "number" ? BigInt(message.maxOutstandingMessages) : $util.Long.fromBits(message.maxOutstandingMessages.low >>> 0, message.maxOutstandingMessages.high >>> 0, false).toBigInt(); + else if (typeof message.maxOutstandingMessages === "number") object.maxOutstandingMessages = options.longs === String ? String(message.maxOutstandingMessages) : message.maxOutstandingMessages; else object.maxOutstandingMessages = options.longs === String ? $util.Long.prototype.toString.call(message.maxOutstandingMessages) : options.longs === Number ? new $util.LongBits(message.maxOutstandingMessages.low >>> 0, message.maxOutstandingMessages.high >>> 0).toNumber() : message.maxOutstandingMessages; - if (message.maxOutstandingBytes != null && message.hasOwnProperty("maxOutstandingBytes")) - if (typeof message.maxOutstandingBytes === "number") + if (message.maxOutstandingBytes != null && Object.hasOwnProperty.call(message, "maxOutstandingBytes")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.maxOutstandingBytes = typeof message.maxOutstandingBytes === "number" ? BigInt(message.maxOutstandingBytes) : $util.Long.fromBits(message.maxOutstandingBytes.low >>> 0, message.maxOutstandingBytes.high >>> 0, false).toBigInt(); + else if (typeof message.maxOutstandingBytes === "number") object.maxOutstandingBytes = options.longs === String ? String(message.maxOutstandingBytes) : message.maxOutstandingBytes; else object.maxOutstandingBytes = options.longs === String ? $util.Long.prototype.toString.call(message.maxOutstandingBytes) : options.longs === Number ? new $util.LongBits(message.maxOutstandingBytes.low >>> 0, message.maxOutstandingBytes.high >>> 0).toNumber() : message.maxOutstandingBytes; - if (message.protocolVersion != null && message.hasOwnProperty("protocolVersion")) - if (typeof message.protocolVersion === "number") + if (message.protocolVersion != null && Object.hasOwnProperty.call(message, "protocolVersion")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.protocolVersion = typeof message.protocolVersion === "number" ? BigInt(message.protocolVersion) : $util.Long.fromBits(message.protocolVersion.low >>> 0, message.protocolVersion.high >>> 0, false).toBigInt(); + else if (typeof message.protocolVersion === "number") object.protocolVersion = options.longs === String ? String(message.protocolVersion) : message.protocolVersion; else object.protocolVersion = options.longs === String ? $util.Long.prototype.toString.call(message.protocolVersion) : options.longs === Number ? new $util.LongBits(message.protocolVersion.low >>> 0, message.protocolVersion.high >>> 0).toNumber() : message.protocolVersion; @@ -21483,18 +22087,22 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StreamingPullResponse.encode = function encode(message, writer) { + StreamingPullResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.receivedMessages != null && message.receivedMessages.length) for (var i = 0; i < message.receivedMessages.length; ++i) - $root.google.pubsub.v1.ReceivedMessage.encode(message.receivedMessages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.ReceivedMessage.encode(message.receivedMessages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.modifyAckDeadlineConfirmation != null && Object.hasOwnProperty.call(message, "modifyAckDeadlineConfirmation")) - $root.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation.encode(message.modifyAckDeadlineConfirmation, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation.encode(message.modifyAckDeadlineConfirmation, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.subscriptionProperties != null && Object.hasOwnProperty.call(message, "subscriptionProperties")) - $root.google.pubsub.v1.StreamingPullResponse.SubscriptionProperties.encode(message.subscriptionProperties, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.pubsub.v1.StreamingPullResponse.SubscriptionProperties.encode(message.subscriptionProperties, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.acknowledgeConfirmation != null && Object.hasOwnProperty.call(message, "acknowledgeConfirmation")) - $root.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation.encode(message.acknowledgeConfirmation, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation.encode(message.acknowledgeConfirmation, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); return writer; }; @@ -21508,7 +22116,7 @@ * @returns {$protobuf.Writer} Writer */ StreamingPullResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -21592,7 +22200,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.receivedMessages != null && message.hasOwnProperty("receivedMessages")) { + if (message.receivedMessages != null && Object.hasOwnProperty.call(message, "receivedMessages")) { if (!Array.isArray(message.receivedMessages)) return "receivedMessages: array expected"; for (var i = 0; i < message.receivedMessages.length; ++i) { @@ -21601,17 +22209,17 @@ return "receivedMessages." + error; } } - if (message.acknowledgeConfirmation != null && message.hasOwnProperty("acknowledgeConfirmation")) { + if (message.acknowledgeConfirmation != null && Object.hasOwnProperty.call(message, "acknowledgeConfirmation")) { var error = $root.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation.verify(message.acknowledgeConfirmation, long + 1); if (error) return "acknowledgeConfirmation." + error; } - if (message.modifyAckDeadlineConfirmation != null && message.hasOwnProperty("modifyAckDeadlineConfirmation")) { + if (message.modifyAckDeadlineConfirmation != null && Object.hasOwnProperty.call(message, "modifyAckDeadlineConfirmation")) { var error = $root.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation.verify(message.modifyAckDeadlineConfirmation, long + 1); if (error) return "modifyAckDeadlineConfirmation." + error; } - if (message.subscriptionProperties != null && message.hasOwnProperty("subscriptionProperties")) { + if (message.subscriptionProperties != null && Object.hasOwnProperty.call(message, "subscriptionProperties")) { var error = $root.google.pubsub.v1.StreamingPullResponse.SubscriptionProperties.verify(message.subscriptionProperties, long + 1); if (error) return "subscriptionProperties." + error; @@ -21630,6 +22238,8 @@ StreamingPullResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.StreamingPullResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.StreamingPullResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -21640,23 +22250,23 @@ throw TypeError(".google.pubsub.v1.StreamingPullResponse.receivedMessages: array expected"); message.receivedMessages = []; for (var i = 0; i < object.receivedMessages.length; ++i) { - if (typeof object.receivedMessages[i] !== "object") + if (!$util.isObject(object.receivedMessages[i])) throw TypeError(".google.pubsub.v1.StreamingPullResponse.receivedMessages: object expected"); message.receivedMessages[i] = $root.google.pubsub.v1.ReceivedMessage.fromObject(object.receivedMessages[i], long + 1); } } if (object.acknowledgeConfirmation != null) { - if (typeof object.acknowledgeConfirmation !== "object") + if (!$util.isObject(object.acknowledgeConfirmation)) throw TypeError(".google.pubsub.v1.StreamingPullResponse.acknowledgeConfirmation: object expected"); message.acknowledgeConfirmation = $root.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation.fromObject(object.acknowledgeConfirmation, long + 1); } if (object.modifyAckDeadlineConfirmation != null) { - if (typeof object.modifyAckDeadlineConfirmation !== "object") + if (!$util.isObject(object.modifyAckDeadlineConfirmation)) throw TypeError(".google.pubsub.v1.StreamingPullResponse.modifyAckDeadlineConfirmation: object expected"); message.modifyAckDeadlineConfirmation = $root.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation.fromObject(object.modifyAckDeadlineConfirmation, long + 1); } if (object.subscriptionProperties != null) { - if (typeof object.subscriptionProperties !== "object") + if (!$util.isObject(object.subscriptionProperties)) throw TypeError(".google.pubsub.v1.StreamingPullResponse.subscriptionProperties: object expected"); message.subscriptionProperties = $root.google.pubsub.v1.StreamingPullResponse.SubscriptionProperties.fromObject(object.subscriptionProperties, long + 1); } @@ -21672,9 +22282,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - StreamingPullResponse.toObject = function toObject(message, options) { + StreamingPullResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.receivedMessages = []; @@ -21686,14 +22300,14 @@ if (message.receivedMessages && message.receivedMessages.length) { object.receivedMessages = []; for (var j = 0; j < message.receivedMessages.length; ++j) - object.receivedMessages[j] = $root.google.pubsub.v1.ReceivedMessage.toObject(message.receivedMessages[j], options); - } - if (message.modifyAckDeadlineConfirmation != null && message.hasOwnProperty("modifyAckDeadlineConfirmation")) - object.modifyAckDeadlineConfirmation = $root.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation.toObject(message.modifyAckDeadlineConfirmation, options); - if (message.subscriptionProperties != null && message.hasOwnProperty("subscriptionProperties")) - object.subscriptionProperties = $root.google.pubsub.v1.StreamingPullResponse.SubscriptionProperties.toObject(message.subscriptionProperties, options); - if (message.acknowledgeConfirmation != null && message.hasOwnProperty("acknowledgeConfirmation")) - object.acknowledgeConfirmation = $root.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation.toObject(message.acknowledgeConfirmation, options); + object.receivedMessages[j] = $root.google.pubsub.v1.ReceivedMessage.toObject(message.receivedMessages[j], options, q + 1); + } + if (message.modifyAckDeadlineConfirmation != null && Object.hasOwnProperty.call(message, "modifyAckDeadlineConfirmation")) + object.modifyAckDeadlineConfirmation = $root.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation.toObject(message.modifyAckDeadlineConfirmation, options, q + 1); + if (message.subscriptionProperties != null && Object.hasOwnProperty.call(message, "subscriptionProperties")) + object.subscriptionProperties = $root.google.pubsub.v1.StreamingPullResponse.SubscriptionProperties.toObject(message.subscriptionProperties, options, q + 1); + if (message.acknowledgeConfirmation != null && Object.hasOwnProperty.call(message, "acknowledgeConfirmation")) + object.acknowledgeConfirmation = $root.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation.toObject(message.acknowledgeConfirmation, options, q + 1); return object; }; @@ -21807,9 +22421,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - AcknowledgeConfirmation.encode = function encode(message, writer) { + AcknowledgeConfirmation.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.ackIds != null && message.ackIds.length) for (var i = 0; i < message.ackIds.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.ackIds[i]); @@ -21835,7 +22453,7 @@ * @returns {$protobuf.Writer} Writer */ AcknowledgeConfirmation.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -21925,28 +22543,28 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.ackIds != null && message.hasOwnProperty("ackIds")) { + if (message.ackIds != null && Object.hasOwnProperty.call(message, "ackIds")) { if (!Array.isArray(message.ackIds)) return "ackIds: array expected"; for (var i = 0; i < message.ackIds.length; ++i) if (!$util.isString(message.ackIds[i])) return "ackIds: string[] expected"; } - if (message.invalidAckIds != null && message.hasOwnProperty("invalidAckIds")) { + if (message.invalidAckIds != null && Object.hasOwnProperty.call(message, "invalidAckIds")) { if (!Array.isArray(message.invalidAckIds)) return "invalidAckIds: array expected"; for (var i = 0; i < message.invalidAckIds.length; ++i) if (!$util.isString(message.invalidAckIds[i])) return "invalidAckIds: string[] expected"; } - if (message.unorderedAckIds != null && message.hasOwnProperty("unorderedAckIds")) { + if (message.unorderedAckIds != null && Object.hasOwnProperty.call(message, "unorderedAckIds")) { if (!Array.isArray(message.unorderedAckIds)) return "unorderedAckIds: array expected"; for (var i = 0; i < message.unorderedAckIds.length; ++i) if (!$util.isString(message.unorderedAckIds[i])) return "unorderedAckIds: string[] expected"; } - if (message.temporaryFailedAckIds != null && message.hasOwnProperty("temporaryFailedAckIds")) { + if (message.temporaryFailedAckIds != null && Object.hasOwnProperty.call(message, "temporaryFailedAckIds")) { if (!Array.isArray(message.temporaryFailedAckIds)) return "temporaryFailedAckIds: array expected"; for (var i = 0; i < message.temporaryFailedAckIds.length; ++i) @@ -21967,6 +22585,8 @@ AcknowledgeConfirmation.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -22012,9 +22632,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - AcknowledgeConfirmation.toObject = function toObject(message, options) { + AcknowledgeConfirmation.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.ackIds = []; @@ -22148,9 +22772,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ModifyAckDeadlineConfirmation.encode = function encode(message, writer) { + ModifyAckDeadlineConfirmation.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.ackIds != null && message.ackIds.length) for (var i = 0; i < message.ackIds.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.ackIds[i]); @@ -22173,7 +22801,7 @@ * @returns {$protobuf.Writer} Writer */ ModifyAckDeadlineConfirmation.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -22257,21 +22885,21 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.ackIds != null && message.hasOwnProperty("ackIds")) { + if (message.ackIds != null && Object.hasOwnProperty.call(message, "ackIds")) { if (!Array.isArray(message.ackIds)) return "ackIds: array expected"; for (var i = 0; i < message.ackIds.length; ++i) if (!$util.isString(message.ackIds[i])) return "ackIds: string[] expected"; } - if (message.invalidAckIds != null && message.hasOwnProperty("invalidAckIds")) { + if (message.invalidAckIds != null && Object.hasOwnProperty.call(message, "invalidAckIds")) { if (!Array.isArray(message.invalidAckIds)) return "invalidAckIds: array expected"; for (var i = 0; i < message.invalidAckIds.length; ++i) if (!$util.isString(message.invalidAckIds[i])) return "invalidAckIds: string[] expected"; } - if (message.temporaryFailedAckIds != null && message.hasOwnProperty("temporaryFailedAckIds")) { + if (message.temporaryFailedAckIds != null && Object.hasOwnProperty.call(message, "temporaryFailedAckIds")) { if (!Array.isArray(message.temporaryFailedAckIds)) return "temporaryFailedAckIds: array expected"; for (var i = 0; i < message.temporaryFailedAckIds.length; ++i) @@ -22292,6 +22920,8 @@ ModifyAckDeadlineConfirmation.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -22330,9 +22960,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ModifyAckDeadlineConfirmation.toObject = function toObject(message, options) { + ModifyAckDeadlineConfirmation.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.ackIds = []; @@ -22448,9 +23082,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SubscriptionProperties.encode = function encode(message, writer) { + SubscriptionProperties.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.exactlyOnceDeliveryEnabled != null && Object.hasOwnProperty.call(message, "exactlyOnceDeliveryEnabled")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.exactlyOnceDeliveryEnabled); if (message.messageOrderingEnabled != null && Object.hasOwnProperty.call(message, "messageOrderingEnabled")) @@ -22468,7 +23106,7 @@ * @returns {$protobuf.Writer} Writer */ SubscriptionProperties.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -22542,10 +23180,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.exactlyOnceDeliveryEnabled != null && message.hasOwnProperty("exactlyOnceDeliveryEnabled")) + if (message.exactlyOnceDeliveryEnabled != null && Object.hasOwnProperty.call(message, "exactlyOnceDeliveryEnabled")) if (typeof message.exactlyOnceDeliveryEnabled !== "boolean") return "exactlyOnceDeliveryEnabled: boolean expected"; - if (message.messageOrderingEnabled != null && message.hasOwnProperty("messageOrderingEnabled")) + if (message.messageOrderingEnabled != null && Object.hasOwnProperty.call(message, "messageOrderingEnabled")) if (typeof message.messageOrderingEnabled !== "boolean") return "messageOrderingEnabled: boolean expected"; return null; @@ -22562,6 +23200,8 @@ SubscriptionProperties.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.StreamingPullResponse.SubscriptionProperties) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.StreamingPullResponse.SubscriptionProperties: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -22583,17 +23223,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SubscriptionProperties.toObject = function toObject(message, options) { + SubscriptionProperties.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.exactlyOnceDeliveryEnabled = false; object.messageOrderingEnabled = false; } - if (message.exactlyOnceDeliveryEnabled != null && message.hasOwnProperty("exactlyOnceDeliveryEnabled")) + if (message.exactlyOnceDeliveryEnabled != null && Object.hasOwnProperty.call(message, "exactlyOnceDeliveryEnabled")) object.exactlyOnceDeliveryEnabled = message.exactlyOnceDeliveryEnabled; - if (message.messageOrderingEnabled != null && message.hasOwnProperty("messageOrderingEnabled")) + if (message.messageOrderingEnabled != null && Object.hasOwnProperty.call(message, "messageOrderingEnabled")) object.messageOrderingEnabled = message.messageOrderingEnabled; return object; }; @@ -22712,9 +23356,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CreateSnapshotRequest.encode = function encode(message, writer) { + CreateSnapshotRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) @@ -22738,7 +23386,7 @@ * @returns {$protobuf.Writer} Writer */ CreateSnapshotRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -22862,13 +23510,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; - if (message.labels != null && message.hasOwnProperty("labels")) { + if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) { if (!$util.isObject(message.labels)) return "labels: object expected"; var key = Object.keys(message.labels); @@ -22876,7 +23524,7 @@ if (!$util.isString(message.labels[key[i]])) return "labels: string{k:string} expected"; } - if (message.tags != null && message.hasOwnProperty("tags")) { + if (message.tags != null && Object.hasOwnProperty.call(message, "tags")) { if (!$util.isObject(message.tags)) return "tags: object expected"; var key = Object.keys(message.tags); @@ -22898,6 +23546,8 @@ CreateSnapshotRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.CreateSnapshotRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.CreateSnapshotRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -22908,7 +23558,7 @@ if (object.subscription != null) message.subscription = String(object.subscription); if (object.labels) { - if (typeof object.labels !== "object") + if (!$util.isObject(object.labels)) throw TypeError(".google.pubsub.v1.CreateSnapshotRequest.labels: object expected"); message.labels = {}; for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) { @@ -22918,7 +23568,7 @@ } } if (object.tags) { - if (typeof object.tags !== "object") + if (!$util.isObject(object.tags)) throw TypeError(".google.pubsub.v1.CreateSnapshotRequest.tags: object expected"); message.tags = {}; for (var keys = Object.keys(object.tags), i = 0; i < keys.length; ++i) { @@ -22939,9 +23589,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CreateSnapshotRequest.toObject = function toObject(message, options) { + CreateSnapshotRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.objects || options.defaults) { object.labels = {}; @@ -22951,9 +23605,9 @@ object.name = ""; object.subscription = ""; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; var keys2; if (message.labels && (keys2 = Object.keys(message.labels)).length) { @@ -23066,13 +23720,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UpdateSnapshotRequest.encode = function encode(message, writer) { + UpdateSnapshotRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) - $root.google.pubsub.v1.Snapshot.encode(message.snapshot, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.Snapshot.encode(message.snapshot, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) - $root.google.protobuf.FieldMask.encode(message.updateMask, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.FieldMask.encode(message.updateMask, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -23086,7 +23744,7 @@ * @returns {$protobuf.Writer} Writer */ UpdateSnapshotRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -23160,12 +23818,12 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.snapshot != null && message.hasOwnProperty("snapshot")) { + if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) { var error = $root.google.pubsub.v1.Snapshot.verify(message.snapshot, long + 1); if (error) return "snapshot." + error; } - if (message.updateMask != null && message.hasOwnProperty("updateMask")) { + if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) { var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; @@ -23184,18 +23842,20 @@ UpdateSnapshotRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.UpdateSnapshotRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.UpdateSnapshotRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.pubsub.v1.UpdateSnapshotRequest(); if (object.snapshot != null) { - if (typeof object.snapshot !== "object") + if (!$util.isObject(object.snapshot)) throw TypeError(".google.pubsub.v1.UpdateSnapshotRequest.snapshot: object expected"); message.snapshot = $root.google.pubsub.v1.Snapshot.fromObject(object.snapshot, long + 1); } if (object.updateMask != null) { - if (typeof object.updateMask !== "object") + if (!$util.isObject(object.updateMask)) throw TypeError(".google.pubsub.v1.UpdateSnapshotRequest.updateMask: object expected"); message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } @@ -23211,18 +23871,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - UpdateSnapshotRequest.toObject = function toObject(message, options) { + UpdateSnapshotRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.snapshot = null; object.updateMask = null; } - if (message.snapshot != null && message.hasOwnProperty("snapshot")) - object.snapshot = $root.google.pubsub.v1.Snapshot.toObject(message.snapshot, options); - if (message.updateMask != null && message.hasOwnProperty("updateMask")) - object.updateMask = $root.google.protobuf.FieldMask.toObject(message.updateMask, options); + if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) + object.snapshot = $root.google.pubsub.v1.Snapshot.toObject(message.snapshot, options, q + 1); + if (message.updateMask != null && Object.hasOwnProperty.call(message, "updateMask")) + object.updateMask = $root.google.protobuf.FieldMask.toObject(message.updateMask, options, q + 1); return object; }; @@ -23336,15 +24000,19 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Snapshot.encode = function encode(message, writer) { + Snapshot.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.topic); if (message.expireTime != null && Object.hasOwnProperty.call(message, "expireTime")) - $root.google.protobuf.Timestamp.encode(message.expireTime, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.protobuf.Timestamp.encode(message.expireTime, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) for (var keys = Object.keys(message.labels), i = 0; i < keys.length; ++i) writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.labels[keys[i]]).ldelim(); @@ -23361,7 +24029,7 @@ * @returns {$protobuf.Writer} Writer */ Snapshot.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -23464,18 +24132,18 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) if (!$util.isString(message.topic)) return "topic: string expected"; - if (message.expireTime != null && message.hasOwnProperty("expireTime")) { + if (message.expireTime != null && Object.hasOwnProperty.call(message, "expireTime")) { var error = $root.google.protobuf.Timestamp.verify(message.expireTime, long + 1); if (error) return "expireTime." + error; } - if (message.labels != null && message.hasOwnProperty("labels")) { + if (message.labels != null && Object.hasOwnProperty.call(message, "labels")) { if (!$util.isObject(message.labels)) return "labels: object expected"; var key = Object.keys(message.labels); @@ -23497,6 +24165,8 @@ Snapshot.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.Snapshot) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.Snapshot: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -23507,12 +24177,12 @@ if (object.topic != null) message.topic = String(object.topic); if (object.expireTime != null) { - if (typeof object.expireTime !== "object") + if (!$util.isObject(object.expireTime)) throw TypeError(".google.pubsub.v1.Snapshot.expireTime: object expected"); message.expireTime = $root.google.protobuf.Timestamp.fromObject(object.expireTime, long + 1); } if (object.labels) { - if (typeof object.labels !== "object") + if (!$util.isObject(object.labels)) throw TypeError(".google.pubsub.v1.Snapshot.labels: object expected"); message.labels = {}; for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) { @@ -23533,9 +24203,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Snapshot.toObject = function toObject(message, options) { + Snapshot.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.objects || options.defaults) object.labels = {}; @@ -23544,12 +24218,12 @@ object.topic = ""; object.expireTime = null; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.topic != null && message.hasOwnProperty("topic")) + if (message.topic != null && Object.hasOwnProperty.call(message, "topic")) object.topic = message.topic; - if (message.expireTime != null && message.hasOwnProperty("expireTime")) - object.expireTime = $root.google.protobuf.Timestamp.toObject(message.expireTime, options); + if (message.expireTime != null && Object.hasOwnProperty.call(message, "expireTime")) + object.expireTime = $root.google.protobuf.Timestamp.toObject(message.expireTime, options, q + 1); var keys2; if (message.labels && (keys2 = Object.keys(message.labels)).length) { object.labels = {}; @@ -23644,9 +24318,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GetSnapshotRequest.encode = function encode(message, writer) { + GetSnapshotRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.snapshot); return writer; @@ -23662,7 +24340,7 @@ * @returns {$protobuf.Writer} Writer */ GetSnapshotRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -23732,7 +24410,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.snapshot != null && message.hasOwnProperty("snapshot")) + if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) if (!$util.isString(message.snapshot)) return "snapshot: string expected"; return null; @@ -23749,6 +24427,8 @@ GetSnapshotRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.GetSnapshotRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.GetSnapshotRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -23768,13 +24448,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GetSnapshotRequest.toObject = function toObject(message, options) { + GetSnapshotRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.snapshot = ""; - if (message.snapshot != null && message.hasOwnProperty("snapshot")) + if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) object.snapshot = message.snapshot; return object; }; @@ -23879,9 +24563,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListSnapshotsRequest.encode = function encode(message, writer) { + ListSnapshotsRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.project != null && Object.hasOwnProperty.call(message, "project")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.project); if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) @@ -23901,7 +24589,7 @@ * @returns {$protobuf.Writer} Writer */ ListSnapshotsRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -23979,13 +24667,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.project != null && message.hasOwnProperty("project")) + if (message.project != null && Object.hasOwnProperty.call(message, "project")) if (!$util.isString(message.project)) return "project: string expected"; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) if (!$util.isInteger(message.pageSize)) return "pageSize: integer expected"; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) if (!$util.isString(message.pageToken)) return "pageToken: string expected"; return null; @@ -24002,6 +24690,8 @@ ListSnapshotsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListSnapshotsRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListSnapshotsRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -24025,20 +24715,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListSnapshotsRequest.toObject = function toObject(message, options) { + ListSnapshotsRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.project = ""; object.pageSize = 0; object.pageToken = ""; } - if (message.project != null && message.hasOwnProperty("project")) + if (message.project != null && Object.hasOwnProperty.call(message, "project")) object.project = message.project; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) object.pageSize = message.pageSize; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) object.pageToken = message.pageToken; return object; }; @@ -24135,12 +24829,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListSnapshotsResponse.encode = function encode(message, writer) { + ListSnapshotsResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.snapshots != null && message.snapshots.length) for (var i = 0; i < message.snapshots.length; ++i) - $root.google.pubsub.v1.Snapshot.encode(message.snapshots[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.Snapshot.encode(message.snapshots[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken); return writer; @@ -24156,7 +24854,7 @@ * @returns {$protobuf.Writer} Writer */ ListSnapshotsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -24232,7 +24930,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.snapshots != null && message.hasOwnProperty("snapshots")) { + if (message.snapshots != null && Object.hasOwnProperty.call(message, "snapshots")) { if (!Array.isArray(message.snapshots)) return "snapshots: array expected"; for (var i = 0; i < message.snapshots.length; ++i) { @@ -24241,7 +24939,7 @@ return "snapshots." + error; } } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; return null; @@ -24258,6 +24956,8 @@ ListSnapshotsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListSnapshotsResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListSnapshotsResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -24268,7 +24968,7 @@ throw TypeError(".google.pubsub.v1.ListSnapshotsResponse.snapshots: array expected"); message.snapshots = []; for (var i = 0; i < object.snapshots.length; ++i) { - if (typeof object.snapshots[i] !== "object") + if (!$util.isObject(object.snapshots[i])) throw TypeError(".google.pubsub.v1.ListSnapshotsResponse.snapshots: object expected"); message.snapshots[i] = $root.google.pubsub.v1.Snapshot.fromObject(object.snapshots[i], long + 1); } @@ -24287,9 +24987,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListSnapshotsResponse.toObject = function toObject(message, options) { + ListSnapshotsResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.snapshots = []; @@ -24298,9 +25002,9 @@ if (message.snapshots && message.snapshots.length) { object.snapshots = []; for (var j = 0; j < message.snapshots.length; ++j) - object.snapshots[j] = $root.google.pubsub.v1.Snapshot.toObject(message.snapshots[j], options); + object.snapshots[j] = $root.google.pubsub.v1.Snapshot.toObject(message.snapshots[j], options, q + 1); } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) object.nextPageToken = message.nextPageToken; return object; }; @@ -24387,9 +25091,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DeleteSnapshotRequest.encode = function encode(message, writer) { + DeleteSnapshotRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.snapshot); return writer; @@ -24405,7 +25113,7 @@ * @returns {$protobuf.Writer} Writer */ DeleteSnapshotRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -24475,7 +25183,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.snapshot != null && message.hasOwnProperty("snapshot")) + if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) if (!$util.isString(message.snapshot)) return "snapshot: string expected"; return null; @@ -24492,6 +25200,8 @@ DeleteSnapshotRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.DeleteSnapshotRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.DeleteSnapshotRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -24511,13 +25221,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DeleteSnapshotRequest.toObject = function toObject(message, options) { + DeleteSnapshotRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.snapshot = ""; - if (message.snapshot != null && message.hasOwnProperty("snapshot")) + if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) object.snapshot = message.snapshot; return object; }; @@ -24636,13 +25350,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SeekRequest.encode = function encode(message, writer) { + SeekRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.subscription); if (message.time != null && Object.hasOwnProperty.call(message, "time")) - $root.google.protobuf.Timestamp.encode(message.time, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.Timestamp.encode(message.time, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.snapshot); return writer; @@ -24658,7 +25376,7 @@ * @returns {$protobuf.Writer} Writer */ SeekRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -24737,10 +25455,10 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) if (!$util.isString(message.subscription)) return "subscription: string expected"; - if (message.time != null && message.hasOwnProperty("time")) { + if (message.time != null && Object.hasOwnProperty.call(message, "time")) { properties.target = 1; { var error = $root.google.protobuf.Timestamp.verify(message.time, long + 1); @@ -24748,7 +25466,7 @@ return "time." + error; } } - if (message.snapshot != null && message.hasOwnProperty("snapshot")) { + if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) { if (properties.target === 1) return "target: multiple values"; properties.target = 1; @@ -24769,6 +25487,8 @@ SeekRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.SeekRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.SeekRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -24777,7 +25497,7 @@ if (object.subscription != null) message.subscription = String(object.subscription); if (object.time != null) { - if (typeof object.time !== "object") + if (!$util.isObject(object.time)) throw TypeError(".google.pubsub.v1.SeekRequest.time: object expected"); message.time = $root.google.protobuf.Timestamp.fromObject(object.time, long + 1); } @@ -24795,20 +25515,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SeekRequest.toObject = function toObject(message, options) { + SeekRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.subscription = ""; - if (message.subscription != null && message.hasOwnProperty("subscription")) + if (message.subscription != null && Object.hasOwnProperty.call(message, "subscription")) object.subscription = message.subscription; - if (message.time != null && message.hasOwnProperty("time")) { - object.time = $root.google.protobuf.Timestamp.toObject(message.time, options); + if (message.time != null && Object.hasOwnProperty.call(message, "time")) { + object.time = $root.google.protobuf.Timestamp.toObject(message.time, options, q + 1); if (options.oneofs) object.target = "time"; } - if (message.snapshot != null && message.hasOwnProperty("snapshot")) { + if (message.snapshot != null && Object.hasOwnProperty.call(message, "snapshot")) { object.snapshot = message.snapshot; if (options.oneofs) object.target = "snapshot"; @@ -24889,9 +25613,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SeekResponse.encode = function encode(message, writer) { + SeekResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -24905,7 +25633,7 @@ * @returns {$protobuf.Writer} Writer */ SeekResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -24985,10 +25713,6 @@ SeekResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.SeekResponse) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.SeekResponse(); }; @@ -25086,7 +25810,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.createSchema = function createSchema(request, callback) { - return this.rpcCall(createSchema, $root.google.pubsub.v1.CreateSchemaRequest, $root.google.pubsub.v1.Schema, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, createSchema, $root.google.pubsub.v1.CreateSchemaRequest, $root.google.pubsub.v1.Schema, request, callback); }, "name", { value: "CreateSchema" }); /** @@ -25119,7 +25843,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.getSchema = function getSchema(request, callback) { - return this.rpcCall(getSchema, $root.google.pubsub.v1.GetSchemaRequest, $root.google.pubsub.v1.Schema, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, getSchema, $root.google.pubsub.v1.GetSchemaRequest, $root.google.pubsub.v1.Schema, request, callback); }, "name", { value: "GetSchema" }); /** @@ -25152,7 +25876,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.listSchemas = function listSchemas(request, callback) { - return this.rpcCall(listSchemas, $root.google.pubsub.v1.ListSchemasRequest, $root.google.pubsub.v1.ListSchemasResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, listSchemas, $root.google.pubsub.v1.ListSchemasRequest, $root.google.pubsub.v1.ListSchemasResponse, request, callback); }, "name", { value: "ListSchemas" }); /** @@ -25185,7 +25909,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.listSchemaRevisions = function listSchemaRevisions(request, callback) { - return this.rpcCall(listSchemaRevisions, $root.google.pubsub.v1.ListSchemaRevisionsRequest, $root.google.pubsub.v1.ListSchemaRevisionsResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, listSchemaRevisions, $root.google.pubsub.v1.ListSchemaRevisionsRequest, $root.google.pubsub.v1.ListSchemaRevisionsResponse, request, callback); }, "name", { value: "ListSchemaRevisions" }); /** @@ -25218,7 +25942,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.commitSchema = function commitSchema(request, callback) { - return this.rpcCall(commitSchema, $root.google.pubsub.v1.CommitSchemaRequest, $root.google.pubsub.v1.Schema, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, commitSchema, $root.google.pubsub.v1.CommitSchemaRequest, $root.google.pubsub.v1.Schema, request, callback); }, "name", { value: "CommitSchema" }); /** @@ -25251,7 +25975,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.rollbackSchema = function rollbackSchema(request, callback) { - return this.rpcCall(rollbackSchema, $root.google.pubsub.v1.RollbackSchemaRequest, $root.google.pubsub.v1.Schema, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, rollbackSchema, $root.google.pubsub.v1.RollbackSchemaRequest, $root.google.pubsub.v1.Schema, request, callback); }, "name", { value: "RollbackSchema" }); /** @@ -25284,7 +26008,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.deleteSchemaRevision = function deleteSchemaRevision(request, callback) { - return this.rpcCall(deleteSchemaRevision, $root.google.pubsub.v1.DeleteSchemaRevisionRequest, $root.google.pubsub.v1.Schema, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, deleteSchemaRevision, $root.google.pubsub.v1.DeleteSchemaRevisionRequest, $root.google.pubsub.v1.Schema, request, callback); }, "name", { value: "DeleteSchemaRevision" }); /** @@ -25317,7 +26041,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.deleteSchema = function deleteSchema(request, callback) { - return this.rpcCall(deleteSchema, $root.google.pubsub.v1.DeleteSchemaRequest, $root.google.protobuf.Empty, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, deleteSchema, $root.google.pubsub.v1.DeleteSchemaRequest, $root.google.protobuf.Empty, request, callback); }, "name", { value: "DeleteSchema" }); /** @@ -25350,7 +26074,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.validateSchema = function validateSchema(request, callback) { - return this.rpcCall(validateSchema, $root.google.pubsub.v1.ValidateSchemaRequest, $root.google.pubsub.v1.ValidateSchemaResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, validateSchema, $root.google.pubsub.v1.ValidateSchemaRequest, $root.google.pubsub.v1.ValidateSchemaResponse, request, callback); }, "name", { value: "ValidateSchema" }); /** @@ -25383,7 +26107,7 @@ * @variation 1 */ Object.defineProperty(SchemaService.prototype.validateMessage = function validateMessage(request, callback) { - return this.rpcCall(validateMessage, $root.google.pubsub.v1.ValidateMessageRequest, $root.google.pubsub.v1.ValidateMessageResponse, request, callback); + return $protobuf.rpc.Service.prototype.rpcCall.call(this, validateMessage, $root.google.pubsub.v1.ValidateMessageRequest, $root.google.pubsub.v1.ValidateMessageResponse, request, callback); }, "name", { value: "ValidateMessage" }); /** @@ -25488,9 +26212,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Schema.encode = function encode(message, writer) { + Schema.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.type != null && Object.hasOwnProperty.call(message, "type")) @@ -25500,7 +26228,7 @@ if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.revisionId); if (message.revisionCreateTime != null && Object.hasOwnProperty.call(message, "revisionCreateTime")) - $root.google.protobuf.Timestamp.encode(message.revisionCreateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.protobuf.Timestamp.encode(message.revisionCreateTime, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); return writer; }; @@ -25514,7 +26242,7 @@ * @returns {$protobuf.Writer} Writer */ Schema.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -25600,10 +26328,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) switch (message.type) { default: return "type: enum value expected"; @@ -25612,13 +26340,13 @@ case 2: break; } - if (message.definition != null && message.hasOwnProperty("definition")) + if (message.definition != null && Object.hasOwnProperty.call(message, "definition")) if (!$util.isString(message.definition)) return "definition: string expected"; - if (message.revisionId != null && message.hasOwnProperty("revisionId")) + if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) if (!$util.isString(message.revisionId)) return "revisionId: string expected"; - if (message.revisionCreateTime != null && message.hasOwnProperty("revisionCreateTime")) { + if (message.revisionCreateTime != null && Object.hasOwnProperty.call(message, "revisionCreateTime")) { var error = $root.google.protobuf.Timestamp.verify(message.revisionCreateTime, long + 1); if (error) return "revisionCreateTime." + error; @@ -25637,6 +26365,8 @@ Schema.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.Schema) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.Schema: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -25669,7 +26399,7 @@ if (object.revisionId != null) message.revisionId = String(object.revisionId); if (object.revisionCreateTime != null) { - if (typeof object.revisionCreateTime !== "object") + if (!$util.isObject(object.revisionCreateTime)) throw TypeError(".google.pubsub.v1.Schema.revisionCreateTime: object expected"); message.revisionCreateTime = $root.google.protobuf.Timestamp.fromObject(object.revisionCreateTime, long + 1); } @@ -25685,9 +26415,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Schema.toObject = function toObject(message, options) { + Schema.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; @@ -25696,16 +26430,16 @@ object.revisionId = ""; object.revisionCreateTime = null; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) object.type = options.enums === String ? $root.google.pubsub.v1.Schema.Type[message.type] === undefined ? message.type : $root.google.pubsub.v1.Schema.Type[message.type] : message.type; - if (message.definition != null && message.hasOwnProperty("definition")) + if (message.definition != null && Object.hasOwnProperty.call(message, "definition")) object.definition = message.definition; - if (message.revisionId != null && message.hasOwnProperty("revisionId")) + if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) object.revisionId = message.revisionId; - if (message.revisionCreateTime != null && message.hasOwnProperty("revisionCreateTime")) - object.revisionCreateTime = $root.google.protobuf.Timestamp.toObject(message.revisionCreateTime, options); + if (message.revisionCreateTime != null && Object.hasOwnProperty.call(message, "revisionCreateTime")) + object.revisionCreateTime = $root.google.protobuf.Timestamp.toObject(message.revisionCreateTime, options, q + 1); return object; }; @@ -25841,13 +26575,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CreateSchemaRequest.encode = function encode(message, writer) { + CreateSchemaRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.parent); if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) - $root.google.pubsub.v1.Schema.encode(message.schema, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.Schema.encode(message.schema, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.schemaId != null && Object.hasOwnProperty.call(message, "schemaId")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.schemaId); return writer; @@ -25863,7 +26601,7 @@ * @returns {$protobuf.Writer} Writer */ CreateSchemaRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -25941,15 +26679,15 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.parent != null && message.hasOwnProperty("parent")) + if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) if (!$util.isString(message.parent)) return "parent: string expected"; - if (message.schema != null && message.hasOwnProperty("schema")) { + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) { var error = $root.google.pubsub.v1.Schema.verify(message.schema, long + 1); if (error) return "schema." + error; } - if (message.schemaId != null && message.hasOwnProperty("schemaId")) + if (message.schemaId != null && Object.hasOwnProperty.call(message, "schemaId")) if (!$util.isString(message.schemaId)) return "schemaId: string expected"; return null; @@ -25966,6 +26704,8 @@ CreateSchemaRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.CreateSchemaRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.CreateSchemaRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -25974,7 +26714,7 @@ if (object.parent != null) message.parent = String(object.parent); if (object.schema != null) { - if (typeof object.schema !== "object") + if (!$util.isObject(object.schema)) throw TypeError(".google.pubsub.v1.CreateSchemaRequest.schema: object expected"); message.schema = $root.google.pubsub.v1.Schema.fromObject(object.schema, long + 1); } @@ -25992,20 +26732,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CreateSchemaRequest.toObject = function toObject(message, options) { + CreateSchemaRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.parent = ""; object.schema = null; object.schemaId = ""; } - if (message.parent != null && message.hasOwnProperty("parent")) + if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) object.parent = message.parent; - if (message.schema != null && message.hasOwnProperty("schema")) - object.schema = $root.google.pubsub.v1.Schema.toObject(message.schema, options); - if (message.schemaId != null && message.hasOwnProperty("schemaId")) + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) + object.schema = $root.google.pubsub.v1.Schema.toObject(message.schema, options, q + 1); + if (message.schemaId != null && Object.hasOwnProperty.call(message, "schemaId")) object.schemaId = message.schemaId; return object; }; @@ -26101,9 +26845,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GetSchemaRequest.encode = function encode(message, writer) { + GetSchemaRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.view != null && Object.hasOwnProperty.call(message, "view")) @@ -26121,7 +26869,7 @@ * @returns {$protobuf.Writer} Writer */ GetSchemaRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -26195,10 +26943,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.view != null && message.hasOwnProperty("view")) + if (message.view != null && Object.hasOwnProperty.call(message, "view")) switch (message.view) { default: return "view: enum value expected"; @@ -26221,6 +26969,8 @@ GetSchemaRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.GetSchemaRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.GetSchemaRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -26260,17 +27010,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GetSchemaRequest.toObject = function toObject(message, options) { + GetSchemaRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; object.view = options.enums === String ? "SCHEMA_VIEW_UNSPECIFIED" : 0; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.view != null && message.hasOwnProperty("view")) + if (message.view != null && Object.hasOwnProperty.call(message, "view")) object.view = options.enums === String ? $root.google.pubsub.v1.SchemaView[message.view] === undefined ? message.view : $root.google.pubsub.v1.SchemaView[message.view] : message.view; return object; }; @@ -26384,9 +27138,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListSchemasRequest.encode = function encode(message, writer) { + ListSchemasRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.parent); if (message.view != null && Object.hasOwnProperty.call(message, "view")) @@ -26408,7 +27166,7 @@ * @returns {$protobuf.Writer} Writer */ ListSchemasRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -26490,10 +27248,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.parent != null && message.hasOwnProperty("parent")) + if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) if (!$util.isString(message.parent)) return "parent: string expected"; - if (message.view != null && message.hasOwnProperty("view")) + if (message.view != null && Object.hasOwnProperty.call(message, "view")) switch (message.view) { default: return "view: enum value expected"; @@ -26502,10 +27260,10 @@ case 2: break; } - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) if (!$util.isInteger(message.pageSize)) return "pageSize: integer expected"; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) if (!$util.isString(message.pageToken)) return "pageToken: string expected"; return null; @@ -26522,6 +27280,8 @@ ListSchemasRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListSchemasRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListSchemasRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -26565,9 +27325,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListSchemasRequest.toObject = function toObject(message, options) { + ListSchemasRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.parent = ""; @@ -26575,13 +27339,13 @@ object.pageSize = 0; object.pageToken = ""; } - if (message.parent != null && message.hasOwnProperty("parent")) + if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) object.parent = message.parent; - if (message.view != null && message.hasOwnProperty("view")) + if (message.view != null && Object.hasOwnProperty.call(message, "view")) object.view = options.enums === String ? $root.google.pubsub.v1.SchemaView[message.view] === undefined ? message.view : $root.google.pubsub.v1.SchemaView[message.view] : message.view; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) object.pageSize = message.pageSize; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) object.pageToken = message.pageToken; return object; }; @@ -26678,12 +27442,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListSchemasResponse.encode = function encode(message, writer) { + ListSchemasResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.schemas != null && message.schemas.length) for (var i = 0; i < message.schemas.length; ++i) - $root.google.pubsub.v1.Schema.encode(message.schemas[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.Schema.encode(message.schemas[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken); return writer; @@ -26699,7 +27467,7 @@ * @returns {$protobuf.Writer} Writer */ ListSchemasResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -26775,7 +27543,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.schemas != null && message.hasOwnProperty("schemas")) { + if (message.schemas != null && Object.hasOwnProperty.call(message, "schemas")) { if (!Array.isArray(message.schemas)) return "schemas: array expected"; for (var i = 0; i < message.schemas.length; ++i) { @@ -26784,7 +27552,7 @@ return "schemas." + error; } } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; return null; @@ -26801,6 +27569,8 @@ ListSchemasResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListSchemasResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListSchemasResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -26811,7 +27581,7 @@ throw TypeError(".google.pubsub.v1.ListSchemasResponse.schemas: array expected"); message.schemas = []; for (var i = 0; i < object.schemas.length; ++i) { - if (typeof object.schemas[i] !== "object") + if (!$util.isObject(object.schemas[i])) throw TypeError(".google.pubsub.v1.ListSchemasResponse.schemas: object expected"); message.schemas[i] = $root.google.pubsub.v1.Schema.fromObject(object.schemas[i], long + 1); } @@ -26830,9 +27600,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListSchemasResponse.toObject = function toObject(message, options) { + ListSchemasResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.schemas = []; @@ -26841,9 +27615,9 @@ if (message.schemas && message.schemas.length) { object.schemas = []; for (var j = 0; j < message.schemas.length; ++j) - object.schemas[j] = $root.google.pubsub.v1.Schema.toObject(message.schemas[j], options); + object.schemas[j] = $root.google.pubsub.v1.Schema.toObject(message.schemas[j], options, q + 1); } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) object.nextPageToken = message.nextPageToken; return object; }; @@ -26957,9 +27731,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListSchemaRevisionsRequest.encode = function encode(message, writer) { + ListSchemaRevisionsRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.view != null && Object.hasOwnProperty.call(message, "view")) @@ -26981,7 +27759,7 @@ * @returns {$protobuf.Writer} Writer */ ListSchemaRevisionsRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -27063,10 +27841,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.view != null && message.hasOwnProperty("view")) + if (message.view != null && Object.hasOwnProperty.call(message, "view")) switch (message.view) { default: return "view: enum value expected"; @@ -27075,10 +27853,10 @@ case 2: break; } - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) if (!$util.isInteger(message.pageSize)) return "pageSize: integer expected"; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) if (!$util.isString(message.pageToken)) return "pageToken: string expected"; return null; @@ -27095,6 +27873,8 @@ ListSchemaRevisionsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListSchemaRevisionsRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListSchemaRevisionsRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -27138,9 +27918,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListSchemaRevisionsRequest.toObject = function toObject(message, options) { + ListSchemaRevisionsRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; @@ -27148,13 +27932,13 @@ object.pageSize = 0; object.pageToken = ""; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.view != null && message.hasOwnProperty("view")) + if (message.view != null && Object.hasOwnProperty.call(message, "view")) object.view = options.enums === String ? $root.google.pubsub.v1.SchemaView[message.view] === undefined ? message.view : $root.google.pubsub.v1.SchemaView[message.view] : message.view; - if (message.pageSize != null && message.hasOwnProperty("pageSize")) + if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize")) object.pageSize = message.pageSize; - if (message.pageToken != null && message.hasOwnProperty("pageToken")) + if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken")) object.pageToken = message.pageToken; return object; }; @@ -27251,12 +28035,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListSchemaRevisionsResponse.encode = function encode(message, writer) { + ListSchemaRevisionsResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.schemas != null && message.schemas.length) for (var i = 0; i < message.schemas.length; ++i) - $root.google.pubsub.v1.Schema.encode(message.schemas[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.pubsub.v1.Schema.encode(message.schemas[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken); return writer; @@ -27272,7 +28060,7 @@ * @returns {$protobuf.Writer} Writer */ ListSchemaRevisionsResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -27348,7 +28136,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.schemas != null && message.hasOwnProperty("schemas")) { + if (message.schemas != null && Object.hasOwnProperty.call(message, "schemas")) { if (!Array.isArray(message.schemas)) return "schemas: array expected"; for (var i = 0; i < message.schemas.length; ++i) { @@ -27357,7 +28145,7 @@ return "schemas." + error; } } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; return null; @@ -27374,6 +28162,8 @@ ListSchemaRevisionsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ListSchemaRevisionsResponse) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ListSchemaRevisionsResponse: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -27384,7 +28174,7 @@ throw TypeError(".google.pubsub.v1.ListSchemaRevisionsResponse.schemas: array expected"); message.schemas = []; for (var i = 0; i < object.schemas.length; ++i) { - if (typeof object.schemas[i] !== "object") + if (!$util.isObject(object.schemas[i])) throw TypeError(".google.pubsub.v1.ListSchemaRevisionsResponse.schemas: object expected"); message.schemas[i] = $root.google.pubsub.v1.Schema.fromObject(object.schemas[i], long + 1); } @@ -27403,9 +28193,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListSchemaRevisionsResponse.toObject = function toObject(message, options) { + ListSchemaRevisionsResponse.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.schemas = []; @@ -27414,9 +28208,9 @@ if (message.schemas && message.schemas.length) { object.schemas = []; for (var j = 0; j < message.schemas.length; ++j) - object.schemas[j] = $root.google.pubsub.v1.Schema.toObject(message.schemas[j], options); + object.schemas[j] = $root.google.pubsub.v1.Schema.toObject(message.schemas[j], options, q + 1); } - if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken")) + if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken")) object.nextPageToken = message.nextPageToken; return object; }; @@ -27512,13 +28306,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CommitSchemaRequest.encode = function encode(message, writer) { + CommitSchemaRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) - $root.google.pubsub.v1.Schema.encode(message.schema, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.Schema.encode(message.schema, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -27532,7 +28330,7 @@ * @returns {$protobuf.Writer} Writer */ CommitSchemaRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -27606,10 +28404,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.schema != null && message.hasOwnProperty("schema")) { + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) { var error = $root.google.pubsub.v1.Schema.verify(message.schema, long + 1); if (error) return "schema." + error; @@ -27628,6 +28426,8 @@ CommitSchemaRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.CommitSchemaRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.CommitSchemaRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -27636,7 +28436,7 @@ if (object.name != null) message.name = String(object.name); if (object.schema != null) { - if (typeof object.schema !== "object") + if (!$util.isObject(object.schema)) throw TypeError(".google.pubsub.v1.CommitSchemaRequest.schema: object expected"); message.schema = $root.google.pubsub.v1.Schema.fromObject(object.schema, long + 1); } @@ -27652,18 +28452,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CommitSchemaRequest.toObject = function toObject(message, options) { + CommitSchemaRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; object.schema = null; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.schema != null && message.hasOwnProperty("schema")) - object.schema = $root.google.pubsub.v1.Schema.toObject(message.schema, options); + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) + object.schema = $root.google.pubsub.v1.Schema.toObject(message.schema, options, q + 1); return object; }; @@ -27758,9 +28562,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RollbackSchemaRequest.encode = function encode(message, writer) { + RollbackSchemaRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) @@ -27778,7 +28586,7 @@ * @returns {$protobuf.Writer} Writer */ RollbackSchemaRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -27852,10 +28660,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.revisionId != null && message.hasOwnProperty("revisionId")) + if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) if (!$util.isString(message.revisionId)) return "revisionId: string expected"; return null; @@ -27872,6 +28680,8 @@ RollbackSchemaRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.RollbackSchemaRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.RollbackSchemaRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -27893,17 +28703,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - RollbackSchemaRequest.toObject = function toObject(message, options) { + RollbackSchemaRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; object.revisionId = ""; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.revisionId != null && message.hasOwnProperty("revisionId")) + if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) object.revisionId = message.revisionId; return object; }; @@ -27999,9 +28813,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DeleteSchemaRevisionRequest.encode = function encode(message, writer) { + DeleteSchemaRevisionRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) @@ -28019,7 +28837,7 @@ * @returns {$protobuf.Writer} Writer */ DeleteSchemaRevisionRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -28093,10 +28911,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.revisionId != null && message.hasOwnProperty("revisionId")) + if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) if (!$util.isString(message.revisionId)) return "revisionId: string expected"; return null; @@ -28113,6 +28931,8 @@ DeleteSchemaRevisionRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.DeleteSchemaRevisionRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.DeleteSchemaRevisionRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -28134,17 +28954,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DeleteSchemaRevisionRequest.toObject = function toObject(message, options) { + DeleteSchemaRevisionRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; object.revisionId = ""; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.revisionId != null && message.hasOwnProperty("revisionId")) + if (message.revisionId != null && Object.hasOwnProperty.call(message, "revisionId")) object.revisionId = message.revisionId; return object; }; @@ -28231,9 +29055,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DeleteSchemaRequest.encode = function encode(message, writer) { + DeleteSchemaRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); return writer; @@ -28249,7 +29077,7 @@ * @returns {$protobuf.Writer} Writer */ DeleteSchemaRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -28319,7 +29147,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; return null; @@ -28336,6 +29164,8 @@ DeleteSchemaRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.DeleteSchemaRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.DeleteSchemaRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -28355,13 +29185,17 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DeleteSchemaRequest.toObject = function toObject(message, options) { + DeleteSchemaRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.name = ""; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; return object; }; @@ -28457,13 +29291,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ValidateSchemaRequest.encode = function encode(message, writer) { + ValidateSchemaRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.parent); if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) - $root.google.pubsub.v1.Schema.encode(message.schema, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.pubsub.v1.Schema.encode(message.schema, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -28477,7 +29315,7 @@ * @returns {$protobuf.Writer} Writer */ ValidateSchemaRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -28551,10 +29389,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.parent != null && message.hasOwnProperty("parent")) + if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) if (!$util.isString(message.parent)) return "parent: string expected"; - if (message.schema != null && message.hasOwnProperty("schema")) { + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) { var error = $root.google.pubsub.v1.Schema.verify(message.schema, long + 1); if (error) return "schema." + error; @@ -28573,6 +29411,8 @@ ValidateSchemaRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ValidateSchemaRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ValidateSchemaRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -28581,7 +29421,7 @@ if (object.parent != null) message.parent = String(object.parent); if (object.schema != null) { - if (typeof object.schema !== "object") + if (!$util.isObject(object.schema)) throw TypeError(".google.pubsub.v1.ValidateSchemaRequest.schema: object expected"); message.schema = $root.google.pubsub.v1.Schema.fromObject(object.schema, long + 1); } @@ -28597,18 +29437,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ValidateSchemaRequest.toObject = function toObject(message, options) { + ValidateSchemaRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.parent = ""; object.schema = null; } - if (message.parent != null && message.hasOwnProperty("parent")) + if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) object.parent = message.parent; - if (message.schema != null && message.hasOwnProperty("schema")) - object.schema = $root.google.pubsub.v1.Schema.toObject(message.schema, options); + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) + object.schema = $root.google.pubsub.v1.Schema.toObject(message.schema, options, q + 1); return object; }; @@ -28685,9 +29529,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ValidateSchemaResponse.encode = function encode(message, writer) { + ValidateSchemaResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -28701,7 +29549,7 @@ * @returns {$protobuf.Writer} Writer */ ValidateSchemaResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -28781,10 +29629,6 @@ ValidateSchemaResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ValidateSchemaResponse) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.ValidateSchemaResponse(); }; @@ -28933,15 +29777,19 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ValidateMessageRequest.encode = function encode(message, writer) { + ValidateMessageRequest.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.parent); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) - $root.google.pubsub.v1.Schema.encode(message.schema, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.pubsub.v1.Schema.encode(message.schema, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.message != null && Object.hasOwnProperty.call(message, "message")) writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.message); if (message.encoding != null && Object.hasOwnProperty.call(message, "encoding")) @@ -28959,7 +29807,7 @@ * @returns {$protobuf.Writer} Writer */ ValidateMessageRequest.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -29046,15 +29894,15 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.parent != null && message.hasOwnProperty("parent")) + if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) if (!$util.isString(message.parent)) return "parent: string expected"; - if (message.name != null && message.hasOwnProperty("name")) { + if (message.name != null && Object.hasOwnProperty.call(message, "name")) { properties.schemaSpec = 1; if (!$util.isString(message.name)) return "name: string expected"; } - if (message.schema != null && message.hasOwnProperty("schema")) { + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) { if (properties.schemaSpec === 1) return "schemaSpec: multiple values"; properties.schemaSpec = 1; @@ -29064,10 +29912,10 @@ return "schema." + error; } } - if (message.message != null && message.hasOwnProperty("message")) + if (message.message != null && Object.hasOwnProperty.call(message, "message")) if (!(message.message && typeof message.message.length === "number" || $util.isString(message.message))) return "message: buffer expected"; - if (message.encoding != null && message.hasOwnProperty("encoding")) + if (message.encoding != null && Object.hasOwnProperty.call(message, "encoding")) switch (message.encoding) { default: return "encoding: enum value expected"; @@ -29090,6 +29938,8 @@ ValidateMessageRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ValidateMessageRequest) return object; + if (!$util.isObject(object)) + throw TypeError(".google.pubsub.v1.ValidateMessageRequest: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -29100,7 +29950,7 @@ if (object.name != null) message.name = String(object.name); if (object.schema != null) { - if (typeof object.schema !== "object") + if (!$util.isObject(object.schema)) throw TypeError(".google.pubsub.v1.ValidateMessageRequest.schema: object expected"); message.schema = $root.google.pubsub.v1.Schema.fromObject(object.schema, long + 1); } @@ -29141,9 +29991,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ValidateMessageRequest.toObject = function toObject(message, options) { + ValidateMessageRequest.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.parent = ""; @@ -29156,21 +30010,21 @@ } object.encoding = options.enums === String ? "ENCODING_UNSPECIFIED" : 0; } - if (message.parent != null && message.hasOwnProperty("parent")) + if (message.parent != null && Object.hasOwnProperty.call(message, "parent")) object.parent = message.parent; - if (message.name != null && message.hasOwnProperty("name")) { + if (message.name != null && Object.hasOwnProperty.call(message, "name")) { object.name = message.name; if (options.oneofs) object.schemaSpec = "name"; } - if (message.schema != null && message.hasOwnProperty("schema")) { - object.schema = $root.google.pubsub.v1.Schema.toObject(message.schema, options); + if (message.schema != null && Object.hasOwnProperty.call(message, "schema")) { + object.schema = $root.google.pubsub.v1.Schema.toObject(message.schema, options, q + 1); if (options.oneofs) object.schemaSpec = "schema"; } - if (message.message != null && message.hasOwnProperty("message")) + if (message.message != null && Object.hasOwnProperty.call(message, "message")) object.message = options.bytes === String ? $util.base64.encode(message.message, 0, message.message.length) : options.bytes === Array ? Array.prototype.slice.call(message.message) : message.message; - if (message.encoding != null && message.hasOwnProperty("encoding")) + if (message.encoding != null && Object.hasOwnProperty.call(message, "encoding")) object.encoding = options.enums === String ? $root.google.pubsub.v1.Encoding[message.encoding] === undefined ? message.encoding : $root.google.pubsub.v1.Encoding[message.encoding] : message.encoding; return object; }; @@ -29248,9 +30102,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ValidateMessageResponse.encode = function encode(message, writer) { + ValidateMessageResponse.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -29264,7 +30122,7 @@ * @returns {$protobuf.Writer} Writer */ ValidateMessageResponse.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -29344,10 +30202,6 @@ ValidateMessageResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.pubsub.v1.ValidateMessageResponse) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.pubsub.v1.ValidateMessageResponse(); }; @@ -29487,12 +30341,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Http.encode = function encode(message, writer) { + Http.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.rules != null && message.rules.length) for (var i = 0; i < message.rules.length; ++i) - $root.google.api.HttpRule.encode(message.rules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.api.HttpRule.encode(message.rules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.fullyDecodeReservedExpansion != null && Object.hasOwnProperty.call(message, "fullyDecodeReservedExpansion")) writer.uint32(/* id 2, wireType 0 =*/16).bool(message.fullyDecodeReservedExpansion); return writer; @@ -29508,7 +30366,7 @@ * @returns {$protobuf.Writer} Writer */ Http.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -29584,7 +30442,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.rules != null && message.hasOwnProperty("rules")) { + if (message.rules != null && Object.hasOwnProperty.call(message, "rules")) { if (!Array.isArray(message.rules)) return "rules: array expected"; for (var i = 0; i < message.rules.length; ++i) { @@ -29593,7 +30451,7 @@ return "rules." + error; } } - if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) + if (message.fullyDecodeReservedExpansion != null && Object.hasOwnProperty.call(message, "fullyDecodeReservedExpansion")) if (typeof message.fullyDecodeReservedExpansion !== "boolean") return "fullyDecodeReservedExpansion: boolean expected"; return null; @@ -29610,6 +30468,8 @@ Http.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.Http) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.Http: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -29620,7 +30480,7 @@ throw TypeError(".google.api.Http.rules: array expected"); message.rules = []; for (var i = 0; i < object.rules.length; ++i) { - if (typeof object.rules[i] !== "object") + if (!$util.isObject(object.rules[i])) throw TypeError(".google.api.Http.rules: object expected"); message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i], long + 1); } @@ -29639,9 +30499,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Http.toObject = function toObject(message, options) { + Http.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.rules = []; @@ -29650,9 +30514,9 @@ if (message.rules && message.rules.length) { object.rules = []; for (var j = 0; j < message.rules.length; ++j) - object.rules[j] = $root.google.api.HttpRule.toObject(message.rules[j], options); + object.rules[j] = $root.google.api.HttpRule.toObject(message.rules[j], options, q + 1); } - if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion")) + if (message.fullyDecodeReservedExpansion != null && Object.hasOwnProperty.call(message, "fullyDecodeReservedExpansion")) object.fullyDecodeReservedExpansion = message.fullyDecodeReservedExpansion; return object; }; @@ -29835,9 +30699,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - HttpRule.encode = function encode(message, writer) { + HttpRule.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector); if (message.get != null && Object.hasOwnProperty.call(message, "get")) @@ -29853,10 +30721,10 @@ if (message.body != null && Object.hasOwnProperty.call(message, "body")) writer.uint32(/* id 7, wireType 2 =*/58).string(message.body); if (message.custom != null && Object.hasOwnProperty.call(message, "custom")) - $root.google.api.CustomHttpPattern.encode(message.custom, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + $root.google.api.CustomHttpPattern.encode(message.custom, writer.uint32(/* id 8, wireType 2 =*/66).fork(), q + 1).ldelim(); if (message.additionalBindings != null && message.additionalBindings.length) for (var i = 0; i < message.additionalBindings.length; ++i) - $root.google.api.HttpRule.encode(message.additionalBindings[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + $root.google.api.HttpRule.encode(message.additionalBindings[i], writer.uint32(/* id 11, wireType 2 =*/90).fork(), q + 1).ldelim(); if (message.responseBody != null && Object.hasOwnProperty.call(message, "responseBody")) writer.uint32(/* id 12, wireType 2 =*/98).string(message.responseBody); return writer; @@ -29872,7 +30740,7 @@ * @returns {$protobuf.Writer} Writer */ HttpRule.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -29981,43 +30849,43 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.selector != null && message.hasOwnProperty("selector")) + if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) if (!$util.isString(message.selector)) return "selector: string expected"; - if (message.get != null && message.hasOwnProperty("get")) { + if (message.get != null && Object.hasOwnProperty.call(message, "get")) { properties.pattern = 1; if (!$util.isString(message.get)) return "get: string expected"; } - if (message.put != null && message.hasOwnProperty("put")) { + if (message.put != null && Object.hasOwnProperty.call(message, "put")) { if (properties.pattern === 1) return "pattern: multiple values"; properties.pattern = 1; if (!$util.isString(message.put)) return "put: string expected"; } - if (message.post != null && message.hasOwnProperty("post")) { + if (message.post != null && Object.hasOwnProperty.call(message, "post")) { if (properties.pattern === 1) return "pattern: multiple values"; properties.pattern = 1; if (!$util.isString(message.post)) return "post: string expected"; } - if (message["delete"] != null && message.hasOwnProperty("delete")) { + if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) { if (properties.pattern === 1) return "pattern: multiple values"; properties.pattern = 1; if (!$util.isString(message["delete"])) return "delete: string expected"; } - if (message.patch != null && message.hasOwnProperty("patch")) { + if (message.patch != null && Object.hasOwnProperty.call(message, "patch")) { if (properties.pattern === 1) return "pattern: multiple values"; properties.pattern = 1; if (!$util.isString(message.patch)) return "patch: string expected"; } - if (message.custom != null && message.hasOwnProperty("custom")) { + if (message.custom != null && Object.hasOwnProperty.call(message, "custom")) { if (properties.pattern === 1) return "pattern: multiple values"; properties.pattern = 1; @@ -30027,13 +30895,13 @@ return "custom." + error; } } - if (message.body != null && message.hasOwnProperty("body")) + if (message.body != null && Object.hasOwnProperty.call(message, "body")) if (!$util.isString(message.body)) return "body: string expected"; - if (message.responseBody != null && message.hasOwnProperty("responseBody")) + if (message.responseBody != null && Object.hasOwnProperty.call(message, "responseBody")) if (!$util.isString(message.responseBody)) return "responseBody: string expected"; - if (message.additionalBindings != null && message.hasOwnProperty("additionalBindings")) { + if (message.additionalBindings != null && Object.hasOwnProperty.call(message, "additionalBindings")) { if (!Array.isArray(message.additionalBindings)) return "additionalBindings: array expected"; for (var i = 0; i < message.additionalBindings.length; ++i) { @@ -30056,6 +30924,8 @@ HttpRule.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.HttpRule) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.HttpRule: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -30074,7 +30944,7 @@ if (object.patch != null) message.patch = String(object.patch); if (object.custom != null) { - if (typeof object.custom !== "object") + if (!$util.isObject(object.custom)) throw TypeError(".google.api.HttpRule.custom: object expected"); message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom, long + 1); } @@ -30087,7 +30957,7 @@ throw TypeError(".google.api.HttpRule.additionalBindings: array expected"); message.additionalBindings = []; for (var i = 0; i < object.additionalBindings.length; ++i) { - if (typeof object.additionalBindings[i] !== "object") + if (!$util.isObject(object.additionalBindings[i])) throw TypeError(".google.api.HttpRule.additionalBindings: object expected"); message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i], long + 1); } @@ -30104,9 +30974,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - HttpRule.toObject = function toObject(message, options) { + HttpRule.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.additionalBindings = []; @@ -30115,46 +30989,46 @@ object.body = ""; object.responseBody = ""; } - if (message.selector != null && message.hasOwnProperty("selector")) + if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) object.selector = message.selector; - if (message.get != null && message.hasOwnProperty("get")) { + if (message.get != null && Object.hasOwnProperty.call(message, "get")) { object.get = message.get; if (options.oneofs) object.pattern = "get"; } - if (message.put != null && message.hasOwnProperty("put")) { + if (message.put != null && Object.hasOwnProperty.call(message, "put")) { object.put = message.put; if (options.oneofs) object.pattern = "put"; } - if (message.post != null && message.hasOwnProperty("post")) { + if (message.post != null && Object.hasOwnProperty.call(message, "post")) { object.post = message.post; if (options.oneofs) object.pattern = "post"; } - if (message["delete"] != null && message.hasOwnProperty("delete")) { + if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete")) { object["delete"] = message["delete"]; if (options.oneofs) object.pattern = "delete"; } - if (message.patch != null && message.hasOwnProperty("patch")) { + if (message.patch != null && Object.hasOwnProperty.call(message, "patch")) { object.patch = message.patch; if (options.oneofs) object.pattern = "patch"; } - if (message.body != null && message.hasOwnProperty("body")) + if (message.body != null && Object.hasOwnProperty.call(message, "body")) object.body = message.body; - if (message.custom != null && message.hasOwnProperty("custom")) { - object.custom = $root.google.api.CustomHttpPattern.toObject(message.custom, options); + if (message.custom != null && Object.hasOwnProperty.call(message, "custom")) { + object.custom = $root.google.api.CustomHttpPattern.toObject(message.custom, options, q + 1); if (options.oneofs) object.pattern = "custom"; } if (message.additionalBindings && message.additionalBindings.length) { object.additionalBindings = []; for (var j = 0; j < message.additionalBindings.length; ++j) - object.additionalBindings[j] = $root.google.api.HttpRule.toObject(message.additionalBindings[j], options); + object.additionalBindings[j] = $root.google.api.HttpRule.toObject(message.additionalBindings[j], options, q + 1); } - if (message.responseBody != null && message.hasOwnProperty("responseBody")) + if (message.responseBody != null && Object.hasOwnProperty.call(message, "responseBody")) object.responseBody = message.responseBody; return object; }; @@ -30250,9 +31124,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CustomHttpPattern.encode = function encode(message, writer) { + CustomHttpPattern.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind); if (message.path != null && Object.hasOwnProperty.call(message, "path")) @@ -30270,7 +31148,7 @@ * @returns {$protobuf.Writer} Writer */ CustomHttpPattern.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -30344,10 +31222,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.kind != null && message.hasOwnProperty("kind")) + if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) if (!$util.isString(message.kind)) return "kind: string expected"; - if (message.path != null && message.hasOwnProperty("path")) + if (message.path != null && Object.hasOwnProperty.call(message, "path")) if (!$util.isString(message.path)) return "path: string expected"; return null; @@ -30364,6 +31242,8 @@ CustomHttpPattern.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.CustomHttpPattern) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.CustomHttpPattern: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -30385,17 +31265,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CustomHttpPattern.toObject = function toObject(message, options) { + CustomHttpPattern.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.kind = ""; object.path = ""; } - if (message.kind != null && message.hasOwnProperty("kind")) + if (message.kind != null && Object.hasOwnProperty.call(message, "kind")) object.kind = message.kind; - if (message.path != null && message.hasOwnProperty("path")) + if (message.path != null && Object.hasOwnProperty.call(message, "path")) object.path = message.path; return object; }; @@ -30501,9 +31385,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CommonLanguageSettings.encode = function encode(message, writer) { + CommonLanguageSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.referenceDocsUri != null && Object.hasOwnProperty.call(message, "referenceDocsUri")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.referenceDocsUri); if (message.destinations != null && message.destinations.length) { @@ -30513,7 +31401,7 @@ writer.ldelim(); } if (message.selectiveGapicGeneration != null && Object.hasOwnProperty.call(message, "selectiveGapicGeneration")) - $root.google.api.SelectiveGapicGeneration.encode(message.selectiveGapicGeneration, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.api.SelectiveGapicGeneration.encode(message.selectiveGapicGeneration, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); return writer; }; @@ -30527,7 +31415,7 @@ * @returns {$protobuf.Writer} Writer */ CommonLanguageSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -30612,10 +31500,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri")) + if (message.referenceDocsUri != null && Object.hasOwnProperty.call(message, "referenceDocsUri")) if (!$util.isString(message.referenceDocsUri)) return "referenceDocsUri: string expected"; - if (message.destinations != null && message.hasOwnProperty("destinations")) { + if (message.destinations != null && Object.hasOwnProperty.call(message, "destinations")) { if (!Array.isArray(message.destinations)) return "destinations: array expected"; for (var i = 0; i < message.destinations.length; ++i) @@ -30628,7 +31516,7 @@ break; } } - if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) { + if (message.selectiveGapicGeneration != null && Object.hasOwnProperty.call(message, "selectiveGapicGeneration")) { var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration, long + 1); if (error) return "selectiveGapicGeneration." + error; @@ -30647,6 +31535,8 @@ CommonLanguageSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.CommonLanguageSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.CommonLanguageSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -30680,7 +31570,7 @@ } } if (object.selectiveGapicGeneration != null) { - if (typeof object.selectiveGapicGeneration !== "object") + if (!$util.isObject(object.selectiveGapicGeneration)) throw TypeError(".google.api.CommonLanguageSettings.selectiveGapicGeneration: object expected"); message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration, long + 1); } @@ -30696,9 +31586,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CommonLanguageSettings.toObject = function toObject(message, options) { + CommonLanguageSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.destinations = []; @@ -30706,15 +31600,15 @@ object.referenceDocsUri = ""; object.selectiveGapicGeneration = null; } - if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri")) + if (message.referenceDocsUri != null && Object.hasOwnProperty.call(message, "referenceDocsUri")) object.referenceDocsUri = message.referenceDocsUri; if (message.destinations && message.destinations.length) { object.destinations = []; for (var j = 0; j < message.destinations.length; ++j) object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j]; } - if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) - object.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.toObject(message.selectiveGapicGeneration, options); + if (message.selectiveGapicGeneration != null && Object.hasOwnProperty.call(message, "selectiveGapicGeneration")) + object.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.toObject(message.selectiveGapicGeneration, options, q + 1); return object; }; @@ -30890,9 +31784,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ClientLibrarySettings.encode = function encode(message, writer) { + ClientLibrarySettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.version != null && Object.hasOwnProperty.call(message, "version")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.version); if (message.launchStage != null && Object.hasOwnProperty.call(message, "launchStage")) @@ -30900,21 +31798,21 @@ if (message.restNumericEnums != null && Object.hasOwnProperty.call(message, "restNumericEnums")) writer.uint32(/* id 3, wireType 0 =*/24).bool(message.restNumericEnums); if (message.javaSettings != null && Object.hasOwnProperty.call(message, "javaSettings")) - $root.google.api.JavaSettings.encode(message.javaSettings, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); + $root.google.api.JavaSettings.encode(message.javaSettings, writer.uint32(/* id 21, wireType 2 =*/170).fork(), q + 1).ldelim(); if (message.cppSettings != null && Object.hasOwnProperty.call(message, "cppSettings")) - $root.google.api.CppSettings.encode(message.cppSettings, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim(); + $root.google.api.CppSettings.encode(message.cppSettings, writer.uint32(/* id 22, wireType 2 =*/178).fork(), q + 1).ldelim(); if (message.phpSettings != null && Object.hasOwnProperty.call(message, "phpSettings")) - $root.google.api.PhpSettings.encode(message.phpSettings, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim(); + $root.google.api.PhpSettings.encode(message.phpSettings, writer.uint32(/* id 23, wireType 2 =*/186).fork(), q + 1).ldelim(); if (message.pythonSettings != null && Object.hasOwnProperty.call(message, "pythonSettings")) - $root.google.api.PythonSettings.encode(message.pythonSettings, writer.uint32(/* id 24, wireType 2 =*/194).fork()).ldelim(); + $root.google.api.PythonSettings.encode(message.pythonSettings, writer.uint32(/* id 24, wireType 2 =*/194).fork(), q + 1).ldelim(); if (message.nodeSettings != null && Object.hasOwnProperty.call(message, "nodeSettings")) - $root.google.api.NodeSettings.encode(message.nodeSettings, writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim(); + $root.google.api.NodeSettings.encode(message.nodeSettings, writer.uint32(/* id 25, wireType 2 =*/202).fork(), q + 1).ldelim(); if (message.dotnetSettings != null && Object.hasOwnProperty.call(message, "dotnetSettings")) - $root.google.api.DotnetSettings.encode(message.dotnetSettings, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim(); + $root.google.api.DotnetSettings.encode(message.dotnetSettings, writer.uint32(/* id 26, wireType 2 =*/210).fork(), q + 1).ldelim(); if (message.rubySettings != null && Object.hasOwnProperty.call(message, "rubySettings")) - $root.google.api.RubySettings.encode(message.rubySettings, writer.uint32(/* id 27, wireType 2 =*/218).fork()).ldelim(); + $root.google.api.RubySettings.encode(message.rubySettings, writer.uint32(/* id 27, wireType 2 =*/218).fork(), q + 1).ldelim(); if (message.goSettings != null && Object.hasOwnProperty.call(message, "goSettings")) - $root.google.api.GoSettings.encode(message.goSettings, writer.uint32(/* id 28, wireType 2 =*/226).fork()).ldelim(); + $root.google.api.GoSettings.encode(message.goSettings, writer.uint32(/* id 28, wireType 2 =*/226).fork(), q + 1).ldelim(); return writer; }; @@ -30928,7 +31826,7 @@ * @returns {$protobuf.Writer} Writer */ ClientLibrarySettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -31038,10 +31936,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.version != null && message.hasOwnProperty("version")) + if (message.version != null && Object.hasOwnProperty.call(message, "version")) if (!$util.isString(message.version)) return "version: string expected"; - if (message.launchStage != null && message.hasOwnProperty("launchStage")) + if (message.launchStage != null && Object.hasOwnProperty.call(message, "launchStage")) switch (message.launchStage) { default: return "launchStage: enum value expected"; @@ -31055,45 +31953,45 @@ case 5: break; } - if (message.restNumericEnums != null && message.hasOwnProperty("restNumericEnums")) + if (message.restNumericEnums != null && Object.hasOwnProperty.call(message, "restNumericEnums")) if (typeof message.restNumericEnums !== "boolean") return "restNumericEnums: boolean expected"; - if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) { + if (message.javaSettings != null && Object.hasOwnProperty.call(message, "javaSettings")) { var error = $root.google.api.JavaSettings.verify(message.javaSettings, long + 1); if (error) return "javaSettings." + error; } - if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) { + if (message.cppSettings != null && Object.hasOwnProperty.call(message, "cppSettings")) { var error = $root.google.api.CppSettings.verify(message.cppSettings, long + 1); if (error) return "cppSettings." + error; } - if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) { + if (message.phpSettings != null && Object.hasOwnProperty.call(message, "phpSettings")) { var error = $root.google.api.PhpSettings.verify(message.phpSettings, long + 1); if (error) return "phpSettings." + error; } - if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) { + if (message.pythonSettings != null && Object.hasOwnProperty.call(message, "pythonSettings")) { var error = $root.google.api.PythonSettings.verify(message.pythonSettings, long + 1); if (error) return "pythonSettings." + error; } - if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) { + if (message.nodeSettings != null && Object.hasOwnProperty.call(message, "nodeSettings")) { var error = $root.google.api.NodeSettings.verify(message.nodeSettings, long + 1); if (error) return "nodeSettings." + error; } - if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) { + if (message.dotnetSettings != null && Object.hasOwnProperty.call(message, "dotnetSettings")) { var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings, long + 1); if (error) return "dotnetSettings." + error; } - if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) { + if (message.rubySettings != null && Object.hasOwnProperty.call(message, "rubySettings")) { var error = $root.google.api.RubySettings.verify(message.rubySettings, long + 1); if (error) return "rubySettings." + error; } - if (message.goSettings != null && message.hasOwnProperty("goSettings")) { + if (message.goSettings != null && Object.hasOwnProperty.call(message, "goSettings")) { var error = $root.google.api.GoSettings.verify(message.goSettings, long + 1); if (error) return "goSettings." + error; @@ -31112,6 +32010,8 @@ ClientLibrarySettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.ClientLibrarySettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.ClientLibrarySettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -31162,42 +32062,42 @@ if (object.restNumericEnums != null) message.restNumericEnums = Boolean(object.restNumericEnums); if (object.javaSettings != null) { - if (typeof object.javaSettings !== "object") + if (!$util.isObject(object.javaSettings)) throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected"); message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings, long + 1); } if (object.cppSettings != null) { - if (typeof object.cppSettings !== "object") + if (!$util.isObject(object.cppSettings)) throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected"); message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings, long + 1); } if (object.phpSettings != null) { - if (typeof object.phpSettings !== "object") + if (!$util.isObject(object.phpSettings)) throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected"); message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings, long + 1); } if (object.pythonSettings != null) { - if (typeof object.pythonSettings !== "object") + if (!$util.isObject(object.pythonSettings)) throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected"); message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings, long + 1); } if (object.nodeSettings != null) { - if (typeof object.nodeSettings !== "object") + if (!$util.isObject(object.nodeSettings)) throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected"); message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings, long + 1); } if (object.dotnetSettings != null) { - if (typeof object.dotnetSettings !== "object") + if (!$util.isObject(object.dotnetSettings)) throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected"); message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings, long + 1); } if (object.rubySettings != null) { - if (typeof object.rubySettings !== "object") + if (!$util.isObject(object.rubySettings)) throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected"); message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings, long + 1); } if (object.goSettings != null) { - if (typeof object.goSettings !== "object") + if (!$util.isObject(object.goSettings)) throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected"); message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings, long + 1); } @@ -31213,9 +32113,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ClientLibrarySettings.toObject = function toObject(message, options) { + ClientLibrarySettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.version = ""; @@ -31230,28 +32134,28 @@ object.rubySettings = null; object.goSettings = null; } - if (message.version != null && message.hasOwnProperty("version")) + if (message.version != null && Object.hasOwnProperty.call(message, "version")) object.version = message.version; - if (message.launchStage != null && message.hasOwnProperty("launchStage")) + if (message.launchStage != null && Object.hasOwnProperty.call(message, "launchStage")) object.launchStage = options.enums === String ? $root.google.api.LaunchStage[message.launchStage] === undefined ? message.launchStage : $root.google.api.LaunchStage[message.launchStage] : message.launchStage; - if (message.restNumericEnums != null && message.hasOwnProperty("restNumericEnums")) + if (message.restNumericEnums != null && Object.hasOwnProperty.call(message, "restNumericEnums")) object.restNumericEnums = message.restNumericEnums; - if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) - object.javaSettings = $root.google.api.JavaSettings.toObject(message.javaSettings, options); - if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) - object.cppSettings = $root.google.api.CppSettings.toObject(message.cppSettings, options); - if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) - object.phpSettings = $root.google.api.PhpSettings.toObject(message.phpSettings, options); - if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) - object.pythonSettings = $root.google.api.PythonSettings.toObject(message.pythonSettings, options); - if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) - object.nodeSettings = $root.google.api.NodeSettings.toObject(message.nodeSettings, options); - if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) - object.dotnetSettings = $root.google.api.DotnetSettings.toObject(message.dotnetSettings, options); - if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) - object.rubySettings = $root.google.api.RubySettings.toObject(message.rubySettings, options); - if (message.goSettings != null && message.hasOwnProperty("goSettings")) - object.goSettings = $root.google.api.GoSettings.toObject(message.goSettings, options); + if (message.javaSettings != null && Object.hasOwnProperty.call(message, "javaSettings")) + object.javaSettings = $root.google.api.JavaSettings.toObject(message.javaSettings, options, q + 1); + if (message.cppSettings != null && Object.hasOwnProperty.call(message, "cppSettings")) + object.cppSettings = $root.google.api.CppSettings.toObject(message.cppSettings, options, q + 1); + if (message.phpSettings != null && Object.hasOwnProperty.call(message, "phpSettings")) + object.phpSettings = $root.google.api.PhpSettings.toObject(message.phpSettings, options, q + 1); + if (message.pythonSettings != null && Object.hasOwnProperty.call(message, "pythonSettings")) + object.pythonSettings = $root.google.api.PythonSettings.toObject(message.pythonSettings, options, q + 1); + if (message.nodeSettings != null && Object.hasOwnProperty.call(message, "nodeSettings")) + object.nodeSettings = $root.google.api.NodeSettings.toObject(message.nodeSettings, options, q + 1); + if (message.dotnetSettings != null && Object.hasOwnProperty.call(message, "dotnetSettings")) + object.dotnetSettings = $root.google.api.DotnetSettings.toObject(message.dotnetSettings, options, q + 1); + if (message.rubySettings != null && Object.hasOwnProperty.call(message, "rubySettings")) + object.rubySettings = $root.google.api.RubySettings.toObject(message.rubySettings, options, q + 1); + if (message.goSettings != null && Object.hasOwnProperty.call(message, "goSettings")) + object.goSettings = $root.google.api.GoSettings.toObject(message.goSettings, options, q + 1); return object; }; @@ -31430,12 +32334,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Publishing.encode = function encode(message, writer) { + Publishing.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.methodSettings != null && message.methodSettings.length) for (var i = 0; i < message.methodSettings.length; ++i) - $root.google.api.MethodSettings.encode(message.methodSettings[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.api.MethodSettings.encode(message.methodSettings[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.newIssueUri != null && Object.hasOwnProperty.call(message, "newIssueUri")) writer.uint32(/* id 101, wireType 2 =*/810).string(message.newIssueUri); if (message.documentationUri != null && Object.hasOwnProperty.call(message, "documentationUri")) @@ -31453,7 +32361,7 @@ writer.uint32(/* id 107, wireType 0 =*/856).int32(message.organization); if (message.librarySettings != null && message.librarySettings.length) for (var i = 0; i < message.librarySettings.length; ++i) - $root.google.api.ClientLibrarySettings.encode(message.librarySettings[i], writer.uint32(/* id 109, wireType 2 =*/874).fork()).ldelim(); + $root.google.api.ClientLibrarySettings.encode(message.librarySettings[i], writer.uint32(/* id 109, wireType 2 =*/874).fork(), q + 1).ldelim(); if (message.protoReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "protoReferenceDocumentationUri")) writer.uint32(/* id 110, wireType 2 =*/882).string(message.protoReferenceDocumentationUri); if (message.restReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "restReferenceDocumentationUri")) @@ -31471,7 +32379,7 @@ * @returns {$protobuf.Writer} Writer */ Publishing.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -31587,7 +32495,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) { + if (message.methodSettings != null && Object.hasOwnProperty.call(message, "methodSettings")) { if (!Array.isArray(message.methodSettings)) return "methodSettings: array expected"; for (var i = 0; i < message.methodSettings.length; ++i) { @@ -31596,29 +32504,29 @@ return "methodSettings." + error; } } - if (message.newIssueUri != null && message.hasOwnProperty("newIssueUri")) + if (message.newIssueUri != null && Object.hasOwnProperty.call(message, "newIssueUri")) if (!$util.isString(message.newIssueUri)) return "newIssueUri: string expected"; - if (message.documentationUri != null && message.hasOwnProperty("documentationUri")) + if (message.documentationUri != null && Object.hasOwnProperty.call(message, "documentationUri")) if (!$util.isString(message.documentationUri)) return "documentationUri: string expected"; - if (message.apiShortName != null && message.hasOwnProperty("apiShortName")) + if (message.apiShortName != null && Object.hasOwnProperty.call(message, "apiShortName")) if (!$util.isString(message.apiShortName)) return "apiShortName: string expected"; - if (message.githubLabel != null && message.hasOwnProperty("githubLabel")) + if (message.githubLabel != null && Object.hasOwnProperty.call(message, "githubLabel")) if (!$util.isString(message.githubLabel)) return "githubLabel: string expected"; - if (message.codeownerGithubTeams != null && message.hasOwnProperty("codeownerGithubTeams")) { + if (message.codeownerGithubTeams != null && Object.hasOwnProperty.call(message, "codeownerGithubTeams")) { if (!Array.isArray(message.codeownerGithubTeams)) return "codeownerGithubTeams: array expected"; for (var i = 0; i < message.codeownerGithubTeams.length; ++i) if (!$util.isString(message.codeownerGithubTeams[i])) return "codeownerGithubTeams: string[] expected"; } - if (message.docTagPrefix != null && message.hasOwnProperty("docTagPrefix")) + if (message.docTagPrefix != null && Object.hasOwnProperty.call(message, "docTagPrefix")) if (!$util.isString(message.docTagPrefix)) return "docTagPrefix: string expected"; - if (message.organization != null && message.hasOwnProperty("organization")) + if (message.organization != null && Object.hasOwnProperty.call(message, "organization")) switch (message.organization) { default: return "organization: enum value expected"; @@ -31632,7 +32540,7 @@ case 7: break; } - if (message.librarySettings != null && message.hasOwnProperty("librarySettings")) { + if (message.librarySettings != null && Object.hasOwnProperty.call(message, "librarySettings")) { if (!Array.isArray(message.librarySettings)) return "librarySettings: array expected"; for (var i = 0; i < message.librarySettings.length; ++i) { @@ -31641,10 +32549,10 @@ return "librarySettings." + error; } } - if (message.protoReferenceDocumentationUri != null && message.hasOwnProperty("protoReferenceDocumentationUri")) + if (message.protoReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "protoReferenceDocumentationUri")) if (!$util.isString(message.protoReferenceDocumentationUri)) return "protoReferenceDocumentationUri: string expected"; - if (message.restReferenceDocumentationUri != null && message.hasOwnProperty("restReferenceDocumentationUri")) + if (message.restReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "restReferenceDocumentationUri")) if (!$util.isString(message.restReferenceDocumentationUri)) return "restReferenceDocumentationUri: string expected"; return null; @@ -31661,6 +32569,8 @@ Publishing.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.Publishing) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.Publishing: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -31671,7 +32581,7 @@ throw TypeError(".google.api.Publishing.methodSettings: array expected"); message.methodSettings = []; for (var i = 0; i < object.methodSettings.length; ++i) { - if (typeof object.methodSettings[i] !== "object") + if (!$util.isObject(object.methodSettings[i])) throw TypeError(".google.api.Publishing.methodSettings: object expected"); message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i], long + 1); } @@ -31738,7 +32648,7 @@ throw TypeError(".google.api.Publishing.librarySettings: array expected"); message.librarySettings = []; for (var i = 0; i < object.librarySettings.length; ++i) { - if (typeof object.librarySettings[i] !== "object") + if (!$util.isObject(object.librarySettings[i])) throw TypeError(".google.api.Publishing.librarySettings: object expected"); message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i], long + 1); } @@ -31759,9 +32669,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Publishing.toObject = function toObject(message, options) { + Publishing.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.methodSettings = []; @@ -31781,33 +32695,33 @@ if (message.methodSettings && message.methodSettings.length) { object.methodSettings = []; for (var j = 0; j < message.methodSettings.length; ++j) - object.methodSettings[j] = $root.google.api.MethodSettings.toObject(message.methodSettings[j], options); + object.methodSettings[j] = $root.google.api.MethodSettings.toObject(message.methodSettings[j], options, q + 1); } - if (message.newIssueUri != null && message.hasOwnProperty("newIssueUri")) + if (message.newIssueUri != null && Object.hasOwnProperty.call(message, "newIssueUri")) object.newIssueUri = message.newIssueUri; - if (message.documentationUri != null && message.hasOwnProperty("documentationUri")) + if (message.documentationUri != null && Object.hasOwnProperty.call(message, "documentationUri")) object.documentationUri = message.documentationUri; - if (message.apiShortName != null && message.hasOwnProperty("apiShortName")) + if (message.apiShortName != null && Object.hasOwnProperty.call(message, "apiShortName")) object.apiShortName = message.apiShortName; - if (message.githubLabel != null && message.hasOwnProperty("githubLabel")) + if (message.githubLabel != null && Object.hasOwnProperty.call(message, "githubLabel")) object.githubLabel = message.githubLabel; if (message.codeownerGithubTeams && message.codeownerGithubTeams.length) { object.codeownerGithubTeams = []; for (var j = 0; j < message.codeownerGithubTeams.length; ++j) object.codeownerGithubTeams[j] = message.codeownerGithubTeams[j]; } - if (message.docTagPrefix != null && message.hasOwnProperty("docTagPrefix")) + if (message.docTagPrefix != null && Object.hasOwnProperty.call(message, "docTagPrefix")) object.docTagPrefix = message.docTagPrefix; - if (message.organization != null && message.hasOwnProperty("organization")) + if (message.organization != null && Object.hasOwnProperty.call(message, "organization")) object.organization = options.enums === String ? $root.google.api.ClientLibraryOrganization[message.organization] === undefined ? message.organization : $root.google.api.ClientLibraryOrganization[message.organization] : message.organization; if (message.librarySettings && message.librarySettings.length) { object.librarySettings = []; for (var j = 0; j < message.librarySettings.length; ++j) - object.librarySettings[j] = $root.google.api.ClientLibrarySettings.toObject(message.librarySettings[j], options); + object.librarySettings[j] = $root.google.api.ClientLibrarySettings.toObject(message.librarySettings[j], options, q + 1); } - if (message.protoReferenceDocumentationUri != null && message.hasOwnProperty("protoReferenceDocumentationUri")) + if (message.protoReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "protoReferenceDocumentationUri")) object.protoReferenceDocumentationUri = message.protoReferenceDocumentationUri; - if (message.restReferenceDocumentationUri != null && message.hasOwnProperty("restReferenceDocumentationUri")) + if (message.restReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "restReferenceDocumentationUri")) object.restReferenceDocumentationUri = message.restReferenceDocumentationUri; return object; }; @@ -31913,16 +32827,20 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - JavaSettings.encode = function encode(message, writer) { + JavaSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.libraryPackage != null && Object.hasOwnProperty.call(message, "libraryPackage")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.libraryPackage); if (message.serviceClassNames != null && Object.hasOwnProperty.call(message, "serviceClassNames")) for (var keys = Object.keys(message.serviceClassNames), i = 0; i < keys.length; ++i) writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.serviceClassNames[keys[i]]).ldelim(); if (message.common != null && Object.hasOwnProperty.call(message, "common")) - $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); return writer; }; @@ -31936,7 +32854,7 @@ * @returns {$protobuf.Writer} Writer */ JavaSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -32035,10 +32953,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage")) + if (message.libraryPackage != null && Object.hasOwnProperty.call(message, "libraryPackage")) if (!$util.isString(message.libraryPackage)) return "libraryPackage: string expected"; - if (message.serviceClassNames != null && message.hasOwnProperty("serviceClassNames")) { + if (message.serviceClassNames != null && Object.hasOwnProperty.call(message, "serviceClassNames")) { if (!$util.isObject(message.serviceClassNames)) return "serviceClassNames: object expected"; var key = Object.keys(message.serviceClassNames); @@ -32046,7 +32964,7 @@ if (!$util.isString(message.serviceClassNames[key[i]])) return "serviceClassNames: string{k:string} expected"; } - if (message.common != null && message.hasOwnProperty("common")) { + if (message.common != null && Object.hasOwnProperty.call(message, "common")) { var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; @@ -32065,6 +32983,8 @@ JavaSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.JavaSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.JavaSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -32073,7 +32993,7 @@ if (object.libraryPackage != null) message.libraryPackage = String(object.libraryPackage); if (object.serviceClassNames) { - if (typeof object.serviceClassNames !== "object") + if (!$util.isObject(object.serviceClassNames)) throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected"); message.serviceClassNames = {}; for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) { @@ -32083,7 +33003,7 @@ } } if (object.common != null) { - if (typeof object.common !== "object") + if (!$util.isObject(object.common)) throw TypeError(".google.api.JavaSettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } @@ -32099,9 +33019,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - JavaSettings.toObject = function toObject(message, options) { + JavaSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.objects || options.defaults) object.serviceClassNames = {}; @@ -32109,7 +33033,7 @@ object.libraryPackage = ""; object.common = null; } - if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage")) + if (message.libraryPackage != null && Object.hasOwnProperty.call(message, "libraryPackage")) object.libraryPackage = message.libraryPackage; var keys2; if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) { @@ -32120,8 +33044,8 @@ object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]]; } } - if (message.common != null && message.hasOwnProperty("common")) - object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options, q + 1); return object; }; @@ -32207,11 +33131,15 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - CppSettings.encode = function encode(message, writer) { + CppSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.common != null && Object.hasOwnProperty.call(message, "common")) - $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -32225,7 +33153,7 @@ * @returns {$protobuf.Writer} Writer */ CppSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -32295,7 +33223,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.common != null && message.hasOwnProperty("common")) { + if (message.common != null && Object.hasOwnProperty.call(message, "common")) { var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; @@ -32314,13 +33242,15 @@ CppSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.CppSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.CppSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.CppSettings(); if (object.common != null) { - if (typeof object.common !== "object") + if (!$util.isObject(object.common)) throw TypeError(".google.api.CppSettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } @@ -32336,14 +33266,18 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - CppSettings.toObject = function toObject(message, options) { + CppSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.common = null; - if (message.common != null && message.hasOwnProperty("common")) - object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options, q + 1); return object; }; @@ -32429,11 +33363,15 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PhpSettings.encode = function encode(message, writer) { + PhpSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.common != null && Object.hasOwnProperty.call(message, "common")) - $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -32447,7 +33385,7 @@ * @returns {$protobuf.Writer} Writer */ PhpSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -32517,7 +33455,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.common != null && message.hasOwnProperty("common")) { + if (message.common != null && Object.hasOwnProperty.call(message, "common")) { var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; @@ -32536,13 +33474,15 @@ PhpSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.PhpSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.PhpSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.PhpSettings(); if (object.common != null) { - if (typeof object.common !== "object") + if (!$util.isObject(object.common)) throw TypeError(".google.api.PhpSettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } @@ -32558,14 +33498,18 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PhpSettings.toObject = function toObject(message, options) { + PhpSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.common = null; - if (message.common != null && message.hasOwnProperty("common")) - object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options, q + 1); return object; }; @@ -32660,13 +33604,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - PythonSettings.encode = function encode(message, writer) { + PythonSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.common != null && Object.hasOwnProperty.call(message, "common")) - $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.experimentalFeatures != null && Object.hasOwnProperty.call(message, "experimentalFeatures")) - $root.google.api.PythonSettings.ExperimentalFeatures.encode(message.experimentalFeatures, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.api.PythonSettings.ExperimentalFeatures.encode(message.experimentalFeatures, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -32680,7 +33628,7 @@ * @returns {$protobuf.Writer} Writer */ PythonSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -32754,12 +33702,12 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.common != null && message.hasOwnProperty("common")) { + if (message.common != null && Object.hasOwnProperty.call(message, "common")) { var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } - if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) { + if (message.experimentalFeatures != null && Object.hasOwnProperty.call(message, "experimentalFeatures")) { var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures, long + 1); if (error) return "experimentalFeatures." + error; @@ -32778,18 +33726,20 @@ PythonSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.PythonSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.PythonSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.PythonSettings(); if (object.common != null) { - if (typeof object.common !== "object") + if (!$util.isObject(object.common)) throw TypeError(".google.api.PythonSettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } if (object.experimentalFeatures != null) { - if (typeof object.experimentalFeatures !== "object") + if (!$util.isObject(object.experimentalFeatures)) throw TypeError(".google.api.PythonSettings.experimentalFeatures: object expected"); message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures, long + 1); } @@ -32805,18 +33755,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - PythonSettings.toObject = function toObject(message, options) { + PythonSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.common = null; object.experimentalFeatures = null; } - if (message.common != null && message.hasOwnProperty("common")) - object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); - if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) - object.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.toObject(message.experimentalFeatures, options); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options, q + 1); + if (message.experimentalFeatures != null && Object.hasOwnProperty.call(message, "experimentalFeatures")) + object.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.toObject(message.experimentalFeatures, options, q + 1); return object; }; @@ -32917,9 +33871,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExperimentalFeatures.encode = function encode(message, writer) { + ExperimentalFeatures.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.restAsyncIoEnabled != null && Object.hasOwnProperty.call(message, "restAsyncIoEnabled")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.restAsyncIoEnabled); if (message.protobufPythonicTypesEnabled != null && Object.hasOwnProperty.call(message, "protobufPythonicTypesEnabled")) @@ -32939,7 +33897,7 @@ * @returns {$protobuf.Writer} Writer */ ExperimentalFeatures.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -33017,13 +33975,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled")) + if (message.restAsyncIoEnabled != null && Object.hasOwnProperty.call(message, "restAsyncIoEnabled")) if (typeof message.restAsyncIoEnabled !== "boolean") return "restAsyncIoEnabled: boolean expected"; - if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled")) + if (message.protobufPythonicTypesEnabled != null && Object.hasOwnProperty.call(message, "protobufPythonicTypesEnabled")) if (typeof message.protobufPythonicTypesEnabled !== "boolean") return "protobufPythonicTypesEnabled: boolean expected"; - if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled")) + if (message.unversionedPackageDisabled != null && Object.hasOwnProperty.call(message, "unversionedPackageDisabled")) if (typeof message.unversionedPackageDisabled !== "boolean") return "unversionedPackageDisabled: boolean expected"; return null; @@ -33040,6 +33998,8 @@ ExperimentalFeatures.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.PythonSettings.ExperimentalFeatures) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.PythonSettings.ExperimentalFeatures: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -33063,20 +34023,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ExperimentalFeatures.toObject = function toObject(message, options) { + ExperimentalFeatures.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.restAsyncIoEnabled = false; object.protobufPythonicTypesEnabled = false; object.unversionedPackageDisabled = false; } - if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled")) + if (message.restAsyncIoEnabled != null && Object.hasOwnProperty.call(message, "restAsyncIoEnabled")) object.restAsyncIoEnabled = message.restAsyncIoEnabled; - if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled")) + if (message.protobufPythonicTypesEnabled != null && Object.hasOwnProperty.call(message, "protobufPythonicTypesEnabled")) object.protobufPythonicTypesEnabled = message.protobufPythonicTypesEnabled; - if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled")) + if (message.unversionedPackageDisabled != null && Object.hasOwnProperty.call(message, "unversionedPackageDisabled")) object.unversionedPackageDisabled = message.unversionedPackageDisabled; return object; }; @@ -33166,11 +34130,15 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - NodeSettings.encode = function encode(message, writer) { + NodeSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.common != null && Object.hasOwnProperty.call(message, "common")) - $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -33184,7 +34152,7 @@ * @returns {$protobuf.Writer} Writer */ NodeSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -33254,7 +34222,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.common != null && message.hasOwnProperty("common")) { + if (message.common != null && Object.hasOwnProperty.call(message, "common")) { var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; @@ -33273,13 +34241,15 @@ NodeSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.NodeSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.NodeSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.NodeSettings(); if (object.common != null) { - if (typeof object.common !== "object") + if (!$util.isObject(object.common)) throw TypeError(".google.api.NodeSettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } @@ -33295,14 +34265,18 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - NodeSettings.toObject = function toObject(message, options) { + NodeSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.common = null; - if (message.common != null && message.hasOwnProperty("common")) - object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options, q + 1); return object; }; @@ -33438,11 +34412,15 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DotnetSettings.encode = function encode(message, writer) { + DotnetSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.common != null && Object.hasOwnProperty.call(message, "common")) - $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices")) for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i) writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim(); @@ -33471,7 +34449,7 @@ * @returns {$protobuf.Writer} Writer */ DotnetSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -33609,12 +34587,12 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.common != null && message.hasOwnProperty("common")) { + if (message.common != null && Object.hasOwnProperty.call(message, "common")) { var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } - if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) { + if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices")) { if (!$util.isObject(message.renamedServices)) return "renamedServices: object expected"; var key = Object.keys(message.renamedServices); @@ -33622,7 +34600,7 @@ if (!$util.isString(message.renamedServices[key[i]])) return "renamedServices: string{k:string} expected"; } - if (message.renamedResources != null && message.hasOwnProperty("renamedResources")) { + if (message.renamedResources != null && Object.hasOwnProperty.call(message, "renamedResources")) { if (!$util.isObject(message.renamedResources)) return "renamedResources: object expected"; var key = Object.keys(message.renamedResources); @@ -33630,21 +34608,21 @@ if (!$util.isString(message.renamedResources[key[i]])) return "renamedResources: string{k:string} expected"; } - if (message.ignoredResources != null && message.hasOwnProperty("ignoredResources")) { + if (message.ignoredResources != null && Object.hasOwnProperty.call(message, "ignoredResources")) { if (!Array.isArray(message.ignoredResources)) return "ignoredResources: array expected"; for (var i = 0; i < message.ignoredResources.length; ++i) if (!$util.isString(message.ignoredResources[i])) return "ignoredResources: string[] expected"; } - if (message.forcedNamespaceAliases != null && message.hasOwnProperty("forcedNamespaceAliases")) { + if (message.forcedNamespaceAliases != null && Object.hasOwnProperty.call(message, "forcedNamespaceAliases")) { if (!Array.isArray(message.forcedNamespaceAliases)) return "forcedNamespaceAliases: array expected"; for (var i = 0; i < message.forcedNamespaceAliases.length; ++i) if (!$util.isString(message.forcedNamespaceAliases[i])) return "forcedNamespaceAliases: string[] expected"; } - if (message.handwrittenSignatures != null && message.hasOwnProperty("handwrittenSignatures")) { + if (message.handwrittenSignatures != null && Object.hasOwnProperty.call(message, "handwrittenSignatures")) { if (!Array.isArray(message.handwrittenSignatures)) return "handwrittenSignatures: array expected"; for (var i = 0; i < message.handwrittenSignatures.length; ++i) @@ -33665,18 +34643,20 @@ DotnetSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.DotnetSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.DotnetSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.DotnetSettings(); if (object.common != null) { - if (typeof object.common !== "object") + if (!$util.isObject(object.common)) throw TypeError(".google.api.DotnetSettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } if (object.renamedServices) { - if (typeof object.renamedServices !== "object") + if (!$util.isObject(object.renamedServices)) throw TypeError(".google.api.DotnetSettings.renamedServices: object expected"); message.renamedServices = {}; for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) { @@ -33686,7 +34666,7 @@ } } if (object.renamedResources) { - if (typeof object.renamedResources !== "object") + if (!$util.isObject(object.renamedResources)) throw TypeError(".google.api.DotnetSettings.renamedResources: object expected"); message.renamedResources = {}; for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) { @@ -33728,9 +34708,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DotnetSettings.toObject = function toObject(message, options) { + DotnetSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.ignoredResources = []; @@ -33743,8 +34727,8 @@ } if (options.defaults) object.common = null; - if (message.common != null && message.hasOwnProperty("common")) - object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options, q + 1); var keys2; if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) { object.renamedServices = {}; @@ -33862,11 +34846,15 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RubySettings.encode = function encode(message, writer) { + RubySettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.common != null && Object.hasOwnProperty.call(message, "common")) - $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -33880,7 +34868,7 @@ * @returns {$protobuf.Writer} Writer */ RubySettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -33950,7 +34938,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.common != null && message.hasOwnProperty("common")) { + if (message.common != null && Object.hasOwnProperty.call(message, "common")) { var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; @@ -33969,13 +34957,15 @@ RubySettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.RubySettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.RubySettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.RubySettings(); if (object.common != null) { - if (typeof object.common !== "object") + if (!$util.isObject(object.common)) throw TypeError(".google.api.RubySettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } @@ -33991,14 +34981,18 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - RubySettings.toObject = function toObject(message, options) { + RubySettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) object.common = null; - if (message.common != null && message.hasOwnProperty("common")) - object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options, q + 1); return object; }; @@ -34094,11 +35088,15 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GoSettings.encode = function encode(message, writer) { + GoSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.common != null && Object.hasOwnProperty.call(message, "common")) - $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices")) for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i) writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim(); @@ -34115,7 +35113,7 @@ * @returns {$protobuf.Writer} Writer */ GoSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -34210,12 +35208,12 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.common != null && message.hasOwnProperty("common")) { + if (message.common != null && Object.hasOwnProperty.call(message, "common")) { var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } - if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) { + if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices")) { if (!$util.isObject(message.renamedServices)) return "renamedServices: object expected"; var key = Object.keys(message.renamedServices); @@ -34237,18 +35235,20 @@ GoSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.GoSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.GoSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.GoSettings(); if (object.common != null) { - if (typeof object.common !== "object") + if (!$util.isObject(object.common)) throw TypeError(".google.api.GoSettings.common: object expected"); message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } if (object.renamedServices) { - if (typeof object.renamedServices !== "object") + if (!$util.isObject(object.renamedServices)) throw TypeError(".google.api.GoSettings.renamedServices: object expected"); message.renamedServices = {}; for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) { @@ -34269,16 +35269,20 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GoSettings.toObject = function toObject(message, options) { + GoSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.objects || options.defaults) object.renamedServices = {}; if (options.defaults) object.common = null; - if (message.common != null && message.hasOwnProperty("common")) - object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + if (message.common != null && Object.hasOwnProperty.call(message, "common")) + object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options, q + 1); var keys2; if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) { object.renamedServices = {}; @@ -34392,13 +35396,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodSettings.encode = function encode(message, writer) { + MethodSettings.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector); if (message.longRunning != null && Object.hasOwnProperty.call(message, "longRunning")) - $root.google.api.MethodSettings.LongRunning.encode(message.longRunning, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.api.MethodSettings.LongRunning.encode(message.longRunning, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.autoPopulatedFields != null && message.autoPopulatedFields.length) for (var i = 0; i < message.autoPopulatedFields.length; ++i) writer.uint32(/* id 3, wireType 2 =*/26).string(message.autoPopulatedFields[i]); @@ -34415,7 +35423,7 @@ * @returns {$protobuf.Writer} Writer */ MethodSettings.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -34495,15 +35503,15 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.selector != null && message.hasOwnProperty("selector")) + if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) if (!$util.isString(message.selector)) return "selector: string expected"; - if (message.longRunning != null && message.hasOwnProperty("longRunning")) { + if (message.longRunning != null && Object.hasOwnProperty.call(message, "longRunning")) { var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning, long + 1); if (error) return "longRunning." + error; } - if (message.autoPopulatedFields != null && message.hasOwnProperty("autoPopulatedFields")) { + if (message.autoPopulatedFields != null && Object.hasOwnProperty.call(message, "autoPopulatedFields")) { if (!Array.isArray(message.autoPopulatedFields)) return "autoPopulatedFields: array expected"; for (var i = 0; i < message.autoPopulatedFields.length; ++i) @@ -34524,6 +35532,8 @@ MethodSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.MethodSettings) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.MethodSettings: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -34532,7 +35542,7 @@ if (object.selector != null) message.selector = String(object.selector); if (object.longRunning != null) { - if (typeof object.longRunning !== "object") + if (!$util.isObject(object.longRunning)) throw TypeError(".google.api.MethodSettings.longRunning: object expected"); message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning, long + 1); } @@ -34555,9 +35565,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MethodSettings.toObject = function toObject(message, options) { + MethodSettings.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.autoPopulatedFields = []; @@ -34565,10 +35579,10 @@ object.selector = ""; object.longRunning = null; } - if (message.selector != null && message.hasOwnProperty("selector")) + if (message.selector != null && Object.hasOwnProperty.call(message, "selector")) object.selector = message.selector; - if (message.longRunning != null && message.hasOwnProperty("longRunning")) - object.longRunning = $root.google.api.MethodSettings.LongRunning.toObject(message.longRunning, options); + if (message.longRunning != null && Object.hasOwnProperty.call(message, "longRunning")) + object.longRunning = $root.google.api.MethodSettings.LongRunning.toObject(message.longRunning, options, q + 1); if (message.autoPopulatedFields && message.autoPopulatedFields.length) { object.autoPopulatedFields = []; for (var j = 0; j < message.autoPopulatedFields.length; ++j) @@ -34683,17 +35697,21 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - LongRunning.encode = function encode(message, writer) { + LongRunning.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.initialPollDelay != null && Object.hasOwnProperty.call(message, "initialPollDelay")) - $root.google.protobuf.Duration.encode(message.initialPollDelay, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.initialPollDelay, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.pollDelayMultiplier != null && Object.hasOwnProperty.call(message, "pollDelayMultiplier")) writer.uint32(/* id 2, wireType 5 =*/21).float(message.pollDelayMultiplier); if (message.maxPollDelay != null && Object.hasOwnProperty.call(message, "maxPollDelay")) - $root.google.protobuf.Duration.encode(message.maxPollDelay, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.maxPollDelay, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.totalPollTimeout != null && Object.hasOwnProperty.call(message, "totalPollTimeout")) - $root.google.protobuf.Duration.encode(message.totalPollTimeout, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.protobuf.Duration.encode(message.totalPollTimeout, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); return writer; }; @@ -34707,7 +35725,7 @@ * @returns {$protobuf.Writer} Writer */ LongRunning.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -34789,20 +35807,20 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) { + if (message.initialPollDelay != null && Object.hasOwnProperty.call(message, "initialPollDelay")) { var error = $root.google.protobuf.Duration.verify(message.initialPollDelay, long + 1); if (error) return "initialPollDelay." + error; } - if (message.pollDelayMultiplier != null && message.hasOwnProperty("pollDelayMultiplier")) + if (message.pollDelayMultiplier != null && Object.hasOwnProperty.call(message, "pollDelayMultiplier")) if (typeof message.pollDelayMultiplier !== "number") return "pollDelayMultiplier: number expected"; - if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) { + if (message.maxPollDelay != null && Object.hasOwnProperty.call(message, "maxPollDelay")) { var error = $root.google.protobuf.Duration.verify(message.maxPollDelay, long + 1); if (error) return "maxPollDelay." + error; } - if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) { + if (message.totalPollTimeout != null && Object.hasOwnProperty.call(message, "totalPollTimeout")) { var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout, long + 1); if (error) return "totalPollTimeout." + error; @@ -34821,25 +35839,27 @@ LongRunning.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.MethodSettings.LongRunning) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.MethodSettings.LongRunning: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.MethodSettings.LongRunning(); if (object.initialPollDelay != null) { - if (typeof object.initialPollDelay !== "object") + if (!$util.isObject(object.initialPollDelay)) throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected"); message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay, long + 1); } if (object.pollDelayMultiplier != null) message.pollDelayMultiplier = Number(object.pollDelayMultiplier); if (object.maxPollDelay != null) { - if (typeof object.maxPollDelay !== "object") + if (!$util.isObject(object.maxPollDelay)) throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected"); message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay, long + 1); } if (object.totalPollTimeout != null) { - if (typeof object.totalPollTimeout !== "object") + if (!$util.isObject(object.totalPollTimeout)) throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected"); message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout, long + 1); } @@ -34855,9 +35875,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - LongRunning.toObject = function toObject(message, options) { + LongRunning.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.initialPollDelay = null; @@ -34865,14 +35889,14 @@ object.maxPollDelay = null; object.totalPollTimeout = null; } - if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) - object.initialPollDelay = $root.google.protobuf.Duration.toObject(message.initialPollDelay, options); - if (message.pollDelayMultiplier != null && message.hasOwnProperty("pollDelayMultiplier")) + if (message.initialPollDelay != null && Object.hasOwnProperty.call(message, "initialPollDelay")) + object.initialPollDelay = $root.google.protobuf.Duration.toObject(message.initialPollDelay, options, q + 1); + if (message.pollDelayMultiplier != null && Object.hasOwnProperty.call(message, "pollDelayMultiplier")) object.pollDelayMultiplier = options.json && !isFinite(message.pollDelayMultiplier) ? String(message.pollDelayMultiplier) : message.pollDelayMultiplier; - if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) - object.maxPollDelay = $root.google.protobuf.Duration.toObject(message.maxPollDelay, options); - if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) - object.totalPollTimeout = $root.google.protobuf.Duration.toObject(message.totalPollTimeout, options); + if (message.maxPollDelay != null && Object.hasOwnProperty.call(message, "maxPollDelay")) + object.maxPollDelay = $root.google.protobuf.Duration.toObject(message.maxPollDelay, options, q + 1); + if (message.totalPollTimeout != null && Object.hasOwnProperty.call(message, "totalPollTimeout")) + object.totalPollTimeout = $root.google.protobuf.Duration.toObject(message.totalPollTimeout, options, q + 1); return object; }; @@ -35013,9 +36037,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SelectiveGapicGeneration.encode = function encode(message, writer) { + SelectiveGapicGeneration.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.methods != null && message.methods.length) for (var i = 0; i < message.methods.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.methods[i]); @@ -35034,7 +36062,7 @@ * @returns {$protobuf.Writer} Writer */ SelectiveGapicGeneration.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -35110,14 +36138,14 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.methods != null && message.hasOwnProperty("methods")) { + if (message.methods != null && Object.hasOwnProperty.call(message, "methods")) { if (!Array.isArray(message.methods)) return "methods: array expected"; for (var i = 0; i < message.methods.length; ++i) if (!$util.isString(message.methods[i])) return "methods: string[] expected"; } - if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal")) + if (message.generateOmittedAsInternal != null && Object.hasOwnProperty.call(message, "generateOmittedAsInternal")) if (typeof message.generateOmittedAsInternal !== "boolean") return "generateOmittedAsInternal: boolean expected"; return null; @@ -35134,6 +36162,8 @@ SelectiveGapicGeneration.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.SelectiveGapicGeneration) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.SelectiveGapicGeneration: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -35160,9 +36190,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SelectiveGapicGeneration.toObject = function toObject(message, options) { + SelectiveGapicGeneration.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.methods = []; @@ -35173,7 +36207,7 @@ for (var j = 0; j < message.methods.length; ++j) object.methods[j] = message.methods[j]; } - if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal")) + if (message.generateOmittedAsInternal != null && Object.hasOwnProperty.call(message, "generateOmittedAsInternal")) object.generateOmittedAsInternal = message.generateOmittedAsInternal; return object; }; @@ -35370,9 +36404,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ResourceDescriptor.encode = function encode(message, writer) { + ResourceDescriptor.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.type != null && Object.hasOwnProperty.call(message, "type")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.type); if (message.pattern != null && message.pattern.length) @@ -35405,7 +36443,7 @@ * @returns {$protobuf.Writer} Writer */ ResourceDescriptor.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -35508,20 +36546,20 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) if (!$util.isString(message.type)) return "type: string expected"; - if (message.pattern != null && message.hasOwnProperty("pattern")) { + if (message.pattern != null && Object.hasOwnProperty.call(message, "pattern")) { if (!Array.isArray(message.pattern)) return "pattern: array expected"; for (var i = 0; i < message.pattern.length; ++i) if (!$util.isString(message.pattern[i])) return "pattern: string[] expected"; } - if (message.nameField != null && message.hasOwnProperty("nameField")) + if (message.nameField != null && Object.hasOwnProperty.call(message, "nameField")) if (!$util.isString(message.nameField)) return "nameField: string expected"; - if (message.history != null && message.hasOwnProperty("history")) + if (message.history != null && Object.hasOwnProperty.call(message, "history")) switch (message.history) { default: return "history: enum value expected"; @@ -35530,13 +36568,13 @@ case 2: break; } - if (message.plural != null && message.hasOwnProperty("plural")) + if (message.plural != null && Object.hasOwnProperty.call(message, "plural")) if (!$util.isString(message.plural)) return "plural: string expected"; - if (message.singular != null && message.hasOwnProperty("singular")) + if (message.singular != null && Object.hasOwnProperty.call(message, "singular")) if (!$util.isString(message.singular)) return "singular: string expected"; - if (message.style != null && message.hasOwnProperty("style")) { + if (message.style != null && Object.hasOwnProperty.call(message, "style")) { if (!Array.isArray(message.style)) return "style: array expected"; for (var i = 0; i < message.style.length; ++i) @@ -35562,6 +36600,8 @@ ResourceDescriptor.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.ResourceDescriptor) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.ResourceDescriptor: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -35635,9 +36675,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ResourceDescriptor.toObject = function toObject(message, options) { + ResourceDescriptor.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.pattern = []; @@ -35650,20 +36694,20 @@ object.plural = ""; object.singular = ""; } - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) object.type = message.type; if (message.pattern && message.pattern.length) { object.pattern = []; for (var j = 0; j < message.pattern.length; ++j) object.pattern[j] = message.pattern[j]; } - if (message.nameField != null && message.hasOwnProperty("nameField")) + if (message.nameField != null && Object.hasOwnProperty.call(message, "nameField")) object.nameField = message.nameField; - if (message.history != null && message.hasOwnProperty("history")) + if (message.history != null && Object.hasOwnProperty.call(message, "history")) object.history = options.enums === String ? $root.google.api.ResourceDescriptor.History[message.history] === undefined ? message.history : $root.google.api.ResourceDescriptor.History[message.history] : message.history; - if (message.plural != null && message.hasOwnProperty("plural")) + if (message.plural != null && Object.hasOwnProperty.call(message, "plural")) object.plural = message.plural; - if (message.singular != null && message.hasOwnProperty("singular")) + if (message.singular != null && Object.hasOwnProperty.call(message, "singular")) object.singular = message.singular; if (message.style && message.style.length) { object.style = []; @@ -35794,9 +36838,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ResourceReference.encode = function encode(message, writer) { + ResourceReference.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.type != null && Object.hasOwnProperty.call(message, "type")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.type); if (message.childType != null && Object.hasOwnProperty.call(message, "childType")) @@ -35814,7 +36862,7 @@ * @returns {$protobuf.Writer} Writer */ ResourceReference.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -35888,10 +36936,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) if (!$util.isString(message.type)) return "type: string expected"; - if (message.childType != null && message.hasOwnProperty("childType")) + if (message.childType != null && Object.hasOwnProperty.call(message, "childType")) if (!$util.isString(message.childType)) return "childType: string expected"; return null; @@ -35908,6 +36956,8 @@ ResourceReference.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.ResourceReference) return object; + if (!$util.isObject(object)) + throw TypeError(".google.api.ResourceReference: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -35929,17 +36979,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ResourceReference.toObject = function toObject(message, options) { + ResourceReference.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.type = ""; object.childType = ""; } - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) object.type = message.type; - if (message.childType != null && message.hasOwnProperty("childType")) + if (message.childType != null && Object.hasOwnProperty.call(message, "childType")) object.childType = message.childType; return object; }; @@ -36039,12 +37093,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FileDescriptorSet.encode = function encode(message, writer) { + FileDescriptorSet.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.file != null && message.file.length) for (var i = 0; i < message.file.length; ++i) - $root.google.protobuf.FileDescriptorProto.encode(message.file[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.FileDescriptorProto.encode(message.file[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -36058,7 +37116,7 @@ * @returns {$protobuf.Writer} Writer */ FileDescriptorSet.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -36130,7 +37188,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.file != null && message.hasOwnProperty("file")) { + if (message.file != null && Object.hasOwnProperty.call(message, "file")) { if (!Array.isArray(message.file)) return "file: array expected"; for (var i = 0; i < message.file.length; ++i) { @@ -36153,6 +37211,8 @@ FileDescriptorSet.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FileDescriptorSet) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FileDescriptorSet: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -36163,7 +37223,7 @@ throw TypeError(".google.protobuf.FileDescriptorSet.file: array expected"); message.file = []; for (var i = 0; i < object.file.length; ++i) { - if (typeof object.file[i] !== "object") + if (!$util.isObject(object.file[i])) throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected"); message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i], long + 1); } @@ -36180,16 +37240,20 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FileDescriptorSet.toObject = function toObject(message, options) { + FileDescriptorSet.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.file = []; if (message.file && message.file.length) { object.file = []; for (var j = 0; j < message.file.length; ++j) - object.file[j] = $root.google.protobuf.FileDescriptorProto.toObject(message.file[j], options); + object.file[j] = $root.google.protobuf.FileDescriptorProto.toObject(message.file[j], options, q + 1); } return object; }; @@ -36435,9 +37499,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FileDescriptorProto.encode = function encode(message, writer) { + FileDescriptorProto.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message["package"] != null && Object.hasOwnProperty.call(message, "package")) @@ -36447,20 +37515,20 @@ writer.uint32(/* id 3, wireType 2 =*/26).string(message.dependency[i]); if (message.messageType != null && message.messageType.length) for (var i = 0; i < message.messageType.length; ++i) - $root.google.protobuf.DescriptorProto.encode(message.messageType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.protobuf.DescriptorProto.encode(message.messageType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.enumType != null && message.enumType.length) for (var i = 0; i < message.enumType.length; ++i) - $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.service != null && message.service.length) for (var i = 0; i < message.service.length; ++i) - $root.google.protobuf.ServiceDescriptorProto.encode(message.service[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.protobuf.ServiceDescriptorProto.encode(message.service[i], writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.extension != null && message.extension.length) for (var i = 0; i < message.extension.length; ++i) - $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 7, wireType 2 =*/58).fork(), q + 1).ldelim(); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.FileOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + $root.google.protobuf.FileOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork(), q + 1).ldelim(); if (message.sourceCodeInfo != null && Object.hasOwnProperty.call(message, "sourceCodeInfo")) - $root.google.protobuf.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + $root.google.protobuf.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork(), q + 1).ldelim(); if (message.publicDependency != null && message.publicDependency.length) for (var i = 0; i < message.publicDependency.length; ++i) writer.uint32(/* id 10, wireType 0 =*/80).int32(message.publicDependency[i]); @@ -36487,7 +37555,7 @@ * @returns {$protobuf.Writer} Writer */ FileDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -36635,41 +37703,41 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message["package"] != null && message.hasOwnProperty("package")) + if (message["package"] != null && Object.hasOwnProperty.call(message, "package")) if (!$util.isString(message["package"])) return "package: string expected"; - if (message.dependency != null && message.hasOwnProperty("dependency")) { + if (message.dependency != null && Object.hasOwnProperty.call(message, "dependency")) { if (!Array.isArray(message.dependency)) return "dependency: array expected"; for (var i = 0; i < message.dependency.length; ++i) if (!$util.isString(message.dependency[i])) return "dependency: string[] expected"; } - if (message.publicDependency != null && message.hasOwnProperty("publicDependency")) { + if (message.publicDependency != null && Object.hasOwnProperty.call(message, "publicDependency")) { if (!Array.isArray(message.publicDependency)) return "publicDependency: array expected"; for (var i = 0; i < message.publicDependency.length; ++i) if (!$util.isInteger(message.publicDependency[i])) return "publicDependency: integer[] expected"; } - if (message.weakDependency != null && message.hasOwnProperty("weakDependency")) { + if (message.weakDependency != null && Object.hasOwnProperty.call(message, "weakDependency")) { if (!Array.isArray(message.weakDependency)) return "weakDependency: array expected"; for (var i = 0; i < message.weakDependency.length; ++i) if (!$util.isInteger(message.weakDependency[i])) return "weakDependency: integer[] expected"; } - if (message.optionDependency != null && message.hasOwnProperty("optionDependency")) { + if (message.optionDependency != null && Object.hasOwnProperty.call(message, "optionDependency")) { if (!Array.isArray(message.optionDependency)) return "optionDependency: array expected"; for (var i = 0; i < message.optionDependency.length; ++i) if (!$util.isString(message.optionDependency[i])) return "optionDependency: string[] expected"; } - if (message.messageType != null && message.hasOwnProperty("messageType")) { + if (message.messageType != null && Object.hasOwnProperty.call(message, "messageType")) { if (!Array.isArray(message.messageType)) return "messageType: array expected"; for (var i = 0; i < message.messageType.length; ++i) { @@ -36678,7 +37746,7 @@ return "messageType." + error; } } - if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (message.enumType != null && Object.hasOwnProperty.call(message, "enumType")) { if (!Array.isArray(message.enumType)) return "enumType: array expected"; for (var i = 0; i < message.enumType.length; ++i) { @@ -36687,7 +37755,7 @@ return "enumType." + error; } } - if (message.service != null && message.hasOwnProperty("service")) { + if (message.service != null && Object.hasOwnProperty.call(message, "service")) { if (!Array.isArray(message.service)) return "service: array expected"; for (var i = 0; i < message.service.length; ++i) { @@ -36696,7 +37764,7 @@ return "service." + error; } } - if (message.extension != null && message.hasOwnProperty("extension")) { + if (message.extension != null && Object.hasOwnProperty.call(message, "extension")) { if (!Array.isArray(message.extension)) return "extension: array expected"; for (var i = 0; i < message.extension.length; ++i) { @@ -36705,20 +37773,20 @@ return "extension." + error; } } - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.FileOptions.verify(message.options, long + 1); if (error) return "options." + error; } - if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) { + if (message.sourceCodeInfo != null && Object.hasOwnProperty.call(message, "sourceCodeInfo")) { var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo, long + 1); if (error) return "sourceCodeInfo." + error; } - if (message.syntax != null && message.hasOwnProperty("syntax")) + if (message.syntax != null && Object.hasOwnProperty.call(message, "syntax")) if (!$util.isString(message.syntax)) return "syntax: string expected"; - if (message.edition != null && message.hasOwnProperty("edition")) + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) switch (message.edition) { default: return "edition: enum value expected"; @@ -36750,6 +37818,8 @@ FileDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FileDescriptorProto) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FileDescriptorProto: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -36792,7 +37862,7 @@ throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected"); message.messageType = []; for (var i = 0; i < object.messageType.length; ++i) { - if (typeof object.messageType[i] !== "object") + if (!$util.isObject(object.messageType[i])) throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected"); message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i], long + 1); } @@ -36802,7 +37872,7 @@ throw TypeError(".google.protobuf.FileDescriptorProto.enumType: array expected"); message.enumType = []; for (var i = 0; i < object.enumType.length; ++i) { - if (typeof object.enumType[i] !== "object") + if (!$util.isObject(object.enumType[i])) throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected"); message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1); } @@ -36812,7 +37882,7 @@ throw TypeError(".google.protobuf.FileDescriptorProto.service: array expected"); message.service = []; for (var i = 0; i < object.service.length; ++i) { - if (typeof object.service[i] !== "object") + if (!$util.isObject(object.service[i])) throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected"); message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i], long + 1); } @@ -36822,18 +37892,18 @@ throw TypeError(".google.protobuf.FileDescriptorProto.extension: array expected"); message.extension = []; for (var i = 0; i < object.extension.length; ++i) { - if (typeof object.extension[i] !== "object") + if (!$util.isObject(object.extension[i])) throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected"); message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1); } } if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected"); message.options = $root.google.protobuf.FileOptions.fromObject(object.options, long + 1); } if (object.sourceCodeInfo != null) { - if (typeof object.sourceCodeInfo !== "object") + if (!$util.isObject(object.sourceCodeInfo)) throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected"); message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo, long + 1); } @@ -36907,9 +37977,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FileDescriptorProto.toObject = function toObject(message, options) { + FileDescriptorProto.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.dependency = []; @@ -36929,9 +38003,9 @@ object.syntax = ""; object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message["package"] != null && message.hasOwnProperty("package")) + if (message["package"] != null && Object.hasOwnProperty.call(message, "package")) object["package"] = message["package"]; if (message.dependency && message.dependency.length) { object.dependency = []; @@ -36941,27 +38015,27 @@ if (message.messageType && message.messageType.length) { object.messageType = []; for (var j = 0; j < message.messageType.length; ++j) - object.messageType[j] = $root.google.protobuf.DescriptorProto.toObject(message.messageType[j], options); + object.messageType[j] = $root.google.protobuf.DescriptorProto.toObject(message.messageType[j], options, q + 1); } if (message.enumType && message.enumType.length) { object.enumType = []; for (var j = 0; j < message.enumType.length; ++j) - object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); + object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options, q + 1); } if (message.service && message.service.length) { object.service = []; for (var j = 0; j < message.service.length; ++j) - object.service[j] = $root.google.protobuf.ServiceDescriptorProto.toObject(message.service[j], options); + object.service[j] = $root.google.protobuf.ServiceDescriptorProto.toObject(message.service[j], options, q + 1); } if (message.extension && message.extension.length) { object.extension = []; for (var j = 0; j < message.extension.length; ++j) - object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); + object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options, q + 1); } - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.FileOptions.toObject(message.options, options); - if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) - object.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.toObject(message.sourceCodeInfo, options); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.FileOptions.toObject(message.options, options, q + 1); + if (message.sourceCodeInfo != null && Object.hasOwnProperty.call(message, "sourceCodeInfo")) + object.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.toObject(message.sourceCodeInfo, options, q + 1); if (message.publicDependency && message.publicDependency.length) { object.publicDependency = []; for (var j = 0; j < message.publicDependency.length; ++j) @@ -36972,9 +38046,9 @@ for (var j = 0; j < message.weakDependency.length; ++j) object.weakDependency[j] = message.weakDependency[j]; } - if (message.syntax != null && message.hasOwnProperty("syntax")) + if (message.syntax != null && Object.hasOwnProperty.call(message, "syntax")) object.syntax = message.syntax; - if (message.edition != null && message.hasOwnProperty("edition")) + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition; if (message.optionDependency && message.optionDependency.length) { object.optionDependency = []; @@ -37164,34 +38238,38 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - DescriptorProto.encode = function encode(message, writer) { + DescriptorProto.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.field != null && message.field.length) for (var i = 0; i < message.field.length; ++i) - $root.google.protobuf.FieldDescriptorProto.encode(message.field[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.FieldDescriptorProto.encode(message.field[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.nestedType != null && message.nestedType.length) for (var i = 0; i < message.nestedType.length; ++i) - $root.google.protobuf.DescriptorProto.encode(message.nestedType[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.protobuf.DescriptorProto.encode(message.nestedType[i], writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.enumType != null && message.enumType.length) for (var i = 0; i < message.enumType.length; ++i) - $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.extensionRange != null && message.extensionRange.length) for (var i = 0; i < message.extensionRange.length; ++i) - $root.google.protobuf.DescriptorProto.ExtensionRange.encode(message.extensionRange[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.protobuf.DescriptorProto.ExtensionRange.encode(message.extensionRange[i], writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.extension != null && message.extension.length) for (var i = 0; i < message.extension.length; ++i) - $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.MessageOptions.encode(message.options, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.google.protobuf.MessageOptions.encode(message.options, writer.uint32(/* id 7, wireType 2 =*/58).fork(), q + 1).ldelim(); if (message.oneofDecl != null && message.oneofDecl.length) for (var i = 0; i < message.oneofDecl.length; ++i) - $root.google.protobuf.OneofDescriptorProto.encode(message.oneofDecl[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + $root.google.protobuf.OneofDescriptorProto.encode(message.oneofDecl[i], writer.uint32(/* id 8, wireType 2 =*/66).fork(), q + 1).ldelim(); if (message.reservedRange != null && message.reservedRange.length) for (var i = 0; i < message.reservedRange.length; ++i) - $root.google.protobuf.DescriptorProto.ReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + $root.google.protobuf.DescriptorProto.ReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 9, wireType 2 =*/74).fork(), q + 1).ldelim(); if (message.reservedName != null && message.reservedName.length) for (var i = 0; i < message.reservedName.length; ++i) writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]); @@ -37210,7 +38288,7 @@ * @returns {$protobuf.Writer} Writer */ DescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -37336,10 +38414,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.field != null && message.hasOwnProperty("field")) { + if (message.field != null && Object.hasOwnProperty.call(message, "field")) { if (!Array.isArray(message.field)) return "field: array expected"; for (var i = 0; i < message.field.length; ++i) { @@ -37348,7 +38426,7 @@ return "field." + error; } } - if (message.extension != null && message.hasOwnProperty("extension")) { + if (message.extension != null && Object.hasOwnProperty.call(message, "extension")) { if (!Array.isArray(message.extension)) return "extension: array expected"; for (var i = 0; i < message.extension.length; ++i) { @@ -37357,7 +38435,7 @@ return "extension." + error; } } - if (message.nestedType != null && message.hasOwnProperty("nestedType")) { + if (message.nestedType != null && Object.hasOwnProperty.call(message, "nestedType")) { if (!Array.isArray(message.nestedType)) return "nestedType: array expected"; for (var i = 0; i < message.nestedType.length; ++i) { @@ -37366,7 +38444,7 @@ return "nestedType." + error; } } - if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (message.enumType != null && Object.hasOwnProperty.call(message, "enumType")) { if (!Array.isArray(message.enumType)) return "enumType: array expected"; for (var i = 0; i < message.enumType.length; ++i) { @@ -37375,7 +38453,7 @@ return "enumType." + error; } } - if (message.extensionRange != null && message.hasOwnProperty("extensionRange")) { + if (message.extensionRange != null && Object.hasOwnProperty.call(message, "extensionRange")) { if (!Array.isArray(message.extensionRange)) return "extensionRange: array expected"; for (var i = 0; i < message.extensionRange.length; ++i) { @@ -37384,7 +38462,7 @@ return "extensionRange." + error; } } - if (message.oneofDecl != null && message.hasOwnProperty("oneofDecl")) { + if (message.oneofDecl != null && Object.hasOwnProperty.call(message, "oneofDecl")) { if (!Array.isArray(message.oneofDecl)) return "oneofDecl: array expected"; for (var i = 0; i < message.oneofDecl.length; ++i) { @@ -37393,12 +38471,12 @@ return "oneofDecl." + error; } } - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.MessageOptions.verify(message.options, long + 1); if (error) return "options." + error; } - if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { + if (message.reservedRange != null && Object.hasOwnProperty.call(message, "reservedRange")) { if (!Array.isArray(message.reservedRange)) return "reservedRange: array expected"; for (var i = 0; i < message.reservedRange.length; ++i) { @@ -37407,14 +38485,14 @@ return "reservedRange." + error; } } - if (message.reservedName != null && message.hasOwnProperty("reservedName")) { + if (message.reservedName != null && Object.hasOwnProperty.call(message, "reservedName")) { if (!Array.isArray(message.reservedName)) return "reservedName: array expected"; for (var i = 0; i < message.reservedName.length; ++i) if (!$util.isString(message.reservedName[i])) return "reservedName: string[] expected"; } - if (message.visibility != null && message.hasOwnProperty("visibility")) + if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility")) switch (message.visibility) { default: return "visibility: enum value expected"; @@ -37437,6 +38515,8 @@ DescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.DescriptorProto) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.DescriptorProto: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -37449,7 +38529,7 @@ throw TypeError(".google.protobuf.DescriptorProto.field: array expected"); message.field = []; for (var i = 0; i < object.field.length; ++i) { - if (typeof object.field[i] !== "object") + if (!$util.isObject(object.field[i])) throw TypeError(".google.protobuf.DescriptorProto.field: object expected"); message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i], long + 1); } @@ -37459,7 +38539,7 @@ throw TypeError(".google.protobuf.DescriptorProto.extension: array expected"); message.extension = []; for (var i = 0; i < object.extension.length; ++i) { - if (typeof object.extension[i] !== "object") + if (!$util.isObject(object.extension[i])) throw TypeError(".google.protobuf.DescriptorProto.extension: object expected"); message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1); } @@ -37469,7 +38549,7 @@ throw TypeError(".google.protobuf.DescriptorProto.nestedType: array expected"); message.nestedType = []; for (var i = 0; i < object.nestedType.length; ++i) { - if (typeof object.nestedType[i] !== "object") + if (!$util.isObject(object.nestedType[i])) throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected"); message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i], long + 1); } @@ -37479,7 +38559,7 @@ throw TypeError(".google.protobuf.DescriptorProto.enumType: array expected"); message.enumType = []; for (var i = 0; i < object.enumType.length; ++i) { - if (typeof object.enumType[i] !== "object") + if (!$util.isObject(object.enumType[i])) throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected"); message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1); } @@ -37489,7 +38569,7 @@ throw TypeError(".google.protobuf.DescriptorProto.extensionRange: array expected"); message.extensionRange = []; for (var i = 0; i < object.extensionRange.length; ++i) { - if (typeof object.extensionRange[i] !== "object") + if (!$util.isObject(object.extensionRange[i])) throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected"); message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i], long + 1); } @@ -37499,13 +38579,13 @@ throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: array expected"); message.oneofDecl = []; for (var i = 0; i < object.oneofDecl.length; ++i) { - if (typeof object.oneofDecl[i] !== "object") + if (!$util.isObject(object.oneofDecl[i])) throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected"); message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i], long + 1); } } if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.DescriptorProto.options: object expected"); message.options = $root.google.protobuf.MessageOptions.fromObject(object.options, long + 1); } @@ -37514,7 +38594,7 @@ throw TypeError(".google.protobuf.DescriptorProto.reservedRange: array expected"); message.reservedRange = []; for (var i = 0; i < object.reservedRange.length; ++i) { - if (typeof object.reservedRange[i] !== "object") + if (!$util.isObject(object.reservedRange[i])) throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected"); message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i], long + 1); } @@ -37558,9 +38638,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - DescriptorProto.toObject = function toObject(message, options) { + DescriptorProto.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.field = []; @@ -37577,51 +38661,51 @@ object.options = null; object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; if (message.field && message.field.length) { object.field = []; for (var j = 0; j < message.field.length; ++j) - object.field[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.field[j], options); + object.field[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.field[j], options, q + 1); } if (message.nestedType && message.nestedType.length) { object.nestedType = []; for (var j = 0; j < message.nestedType.length; ++j) - object.nestedType[j] = $root.google.protobuf.DescriptorProto.toObject(message.nestedType[j], options); + object.nestedType[j] = $root.google.protobuf.DescriptorProto.toObject(message.nestedType[j], options, q + 1); } if (message.enumType && message.enumType.length) { object.enumType = []; for (var j = 0; j < message.enumType.length; ++j) - object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); + object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options, q + 1); } if (message.extensionRange && message.extensionRange.length) { object.extensionRange = []; for (var j = 0; j < message.extensionRange.length; ++j) - object.extensionRange[j] = $root.google.protobuf.DescriptorProto.ExtensionRange.toObject(message.extensionRange[j], options); + object.extensionRange[j] = $root.google.protobuf.DescriptorProto.ExtensionRange.toObject(message.extensionRange[j], options, q + 1); } if (message.extension && message.extension.length) { object.extension = []; for (var j = 0; j < message.extension.length; ++j) - object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); + object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options, q + 1); } - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.MessageOptions.toObject(message.options, options); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.MessageOptions.toObject(message.options, options, q + 1); if (message.oneofDecl && message.oneofDecl.length) { object.oneofDecl = []; for (var j = 0; j < message.oneofDecl.length; ++j) - object.oneofDecl[j] = $root.google.protobuf.OneofDescriptorProto.toObject(message.oneofDecl[j], options); + object.oneofDecl[j] = $root.google.protobuf.OneofDescriptorProto.toObject(message.oneofDecl[j], options, q + 1); } if (message.reservedRange && message.reservedRange.length) { object.reservedRange = []; for (var j = 0; j < message.reservedRange.length; ++j) - object.reservedRange[j] = $root.google.protobuf.DescriptorProto.ReservedRange.toObject(message.reservedRange[j], options); + object.reservedRange[j] = $root.google.protobuf.DescriptorProto.ReservedRange.toObject(message.reservedRange[j], options, q + 1); } if (message.reservedName && message.reservedName.length) { object.reservedName = []; for (var j = 0; j < message.reservedName.length; ++j) object.reservedName[j] = message.reservedName[j]; } - if (message.visibility != null && message.hasOwnProperty("visibility")) + if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility")) object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility; return object; }; @@ -37723,15 +38807,19 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExtensionRange.encode = function encode(message, writer) { + ExtensionRange.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.start != null && Object.hasOwnProperty.call(message, "start")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); if (message.end != null && Object.hasOwnProperty.call(message, "end")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.ExtensionRangeOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.protobuf.ExtensionRangeOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); return writer; }; @@ -37745,7 +38833,7 @@ * @returns {$protobuf.Writer} Writer */ ExtensionRange.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -37823,13 +38911,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) if (!$util.isInteger(message.start)) return "start: integer expected"; - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) if (!$util.isInteger(message.end)) return "end: integer expected"; - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options, long + 1); if (error) return "options." + error; @@ -37848,6 +38936,8 @@ ExtensionRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -37858,7 +38948,7 @@ if (object.end != null) message.end = object.end | 0; if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected"); message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options, long + 1); } @@ -37874,21 +38964,25 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ExtensionRange.toObject = function toObject(message, options) { + ExtensionRange.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.start = 0; object.end = 0; object.options = null; } - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) object.start = message.start; - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) object.end = message.end; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.ExtensionRangeOptions.toObject(message.options, options); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.ExtensionRangeOptions.toObject(message.options, options, q + 1); return object; }; @@ -37983,9 +39077,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ReservedRange.encode = function encode(message, writer) { + ReservedRange.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.start != null && Object.hasOwnProperty.call(message, "start")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); if (message.end != null && Object.hasOwnProperty.call(message, "end")) @@ -38003,7 +39101,7 @@ * @returns {$protobuf.Writer} Writer */ ReservedRange.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -38077,10 +39175,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) if (!$util.isInteger(message.start)) return "start: integer expected"; - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) if (!$util.isInteger(message.end)) return "end: integer expected"; return null; @@ -38097,6 +39195,8 @@ ReservedRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.DescriptorProto.ReservedRange: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -38118,17 +39218,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ReservedRange.toObject = function toObject(message, options) { + ReservedRange.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.start = 0; object.end = 0; } - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) object.start = message.start; - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) object.end = message.end; return object; }; @@ -38247,19 +39351,23 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ExtensionRangeOptions.encode = function encode(message, writer) { + ExtensionRangeOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.declaration != null && message.declaration.length) for (var i = 0; i < message.declaration.length; ++i) - $root.google.protobuf.ExtensionRangeOptions.Declaration.encode(message.declaration[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.ExtensionRangeOptions.Declaration.encode(message.declaration[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.verification != null && Object.hasOwnProperty.call(message, "verification")) writer.uint32(/* id 3, wireType 0 =*/24).int32(message.verification); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 50, wireType 2 =*/402).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 50, wireType 2 =*/402).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); return writer; }; @@ -38273,7 +39381,7 @@ * @returns {$protobuf.Writer} Writer */ ExtensionRangeOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -38359,7 +39467,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -38368,7 +39476,7 @@ return "uninterpretedOption." + error; } } - if (message.declaration != null && message.hasOwnProperty("declaration")) { + if (message.declaration != null && Object.hasOwnProperty.call(message, "declaration")) { if (!Array.isArray(message.declaration)) return "declaration: array expected"; for (var i = 0; i < message.declaration.length; ++i) { @@ -38377,12 +39485,12 @@ return "declaration." + error; } } - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.verification != null && message.hasOwnProperty("verification")) + if (message.verification != null && Object.hasOwnProperty.call(message, "verification")) switch (message.verification) { default: return "verification: enum value expected"; @@ -38404,6 +39512,8 @@ ExtensionRangeOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ExtensionRangeOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.ExtensionRangeOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -38414,7 +39524,7 @@ throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } @@ -38424,13 +39534,13 @@ throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: array expected"); message.declaration = []; for (var i = 0; i < object.declaration.length; ++i) { - if (typeof object.declaration[i] !== "object") + if (!$util.isObject(object.declaration[i])) throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected"); message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i], long + 1); } } if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } @@ -38462,9 +39572,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ExtensionRangeOptions.toObject = function toObject(message, options) { + ExtensionRangeOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.declaration = []; @@ -38477,16 +39591,16 @@ if (message.declaration && message.declaration.length) { object.declaration = []; for (var j = 0; j < message.declaration.length; ++j) - object.declaration[j] = $root.google.protobuf.ExtensionRangeOptions.Declaration.toObject(message.declaration[j], options); + object.declaration[j] = $root.google.protobuf.ExtensionRangeOptions.Declaration.toObject(message.declaration[j], options, q + 1); } - if (message.verification != null && message.hasOwnProperty("verification")) + if (message.verification != null && Object.hasOwnProperty.call(message, "verification")) object.verification = options.enums === String ? $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] === undefined ? message.verification : $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] : message.verification; - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } return object; }; @@ -38606,9 +39720,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Declaration.encode = function encode(message, writer) { + Declaration.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.number != null && Object.hasOwnProperty.call(message, "number")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.number); if (message.fullName != null && Object.hasOwnProperty.call(message, "fullName")) @@ -38632,7 +39750,7 @@ * @returns {$protobuf.Writer} Writer */ Declaration.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -38718,19 +39836,19 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.number != null && message.hasOwnProperty("number")) + if (message.number != null && Object.hasOwnProperty.call(message, "number")) if (!$util.isInteger(message.number)) return "number: integer expected"; - if (message.fullName != null && message.hasOwnProperty("fullName")) + if (message.fullName != null && Object.hasOwnProperty.call(message, "fullName")) if (!$util.isString(message.fullName)) return "fullName: string expected"; - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) if (!$util.isString(message.type)) return "type: string expected"; - if (message.reserved != null && message.hasOwnProperty("reserved")) + if (message.reserved != null && Object.hasOwnProperty.call(message, "reserved")) if (typeof message.reserved !== "boolean") return "reserved: boolean expected"; - if (message.repeated != null && message.hasOwnProperty("repeated")) + if (message.repeated != null && Object.hasOwnProperty.call(message, "repeated")) if (typeof message.repeated !== "boolean") return "repeated: boolean expected"; return null; @@ -38747,6 +39865,8 @@ Declaration.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.ExtensionRangeOptions.Declaration: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -38774,9 +39894,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Declaration.toObject = function toObject(message, options) { + Declaration.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.number = 0; @@ -38785,15 +39909,15 @@ object.reserved = false; object.repeated = false; } - if (message.number != null && message.hasOwnProperty("number")) + if (message.number != null && Object.hasOwnProperty.call(message, "number")) object.number = message.number; - if (message.fullName != null && message.hasOwnProperty("fullName")) + if (message.fullName != null && Object.hasOwnProperty.call(message, "fullName")) object.fullName = message.fullName; - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) object.type = message.type; - if (message.reserved != null && message.hasOwnProperty("reserved")) + if (message.reserved != null && Object.hasOwnProperty.call(message, "reserved")) object.reserved = message.reserved; - if (message.repeated != null && message.hasOwnProperty("repeated")) + if (message.repeated != null && Object.hasOwnProperty.call(message, "repeated")) object.repeated = message.repeated; return object; }; @@ -38987,9 +40111,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FieldDescriptorProto.encode = function encode(message, writer) { + FieldDescriptorProto.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.extendee != null && Object.hasOwnProperty.call(message, "extendee")) @@ -39005,7 +40133,7 @@ if (message.defaultValue != null && Object.hasOwnProperty.call(message, "defaultValue")) writer.uint32(/* id 7, wireType 2 =*/58).string(message.defaultValue); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.FieldOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + $root.google.protobuf.FieldOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork(), q + 1).ldelim(); if (message.oneofIndex != null && Object.hasOwnProperty.call(message, "oneofIndex")) writer.uint32(/* id 9, wireType 0 =*/72).int32(message.oneofIndex); if (message.jsonName != null && Object.hasOwnProperty.call(message, "jsonName")) @@ -39025,7 +40153,7 @@ * @returns {$protobuf.Writer} Writer */ FieldDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -39135,13 +40263,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.number != null && message.hasOwnProperty("number")) + if (message.number != null && Object.hasOwnProperty.call(message, "number")) if (!$util.isInteger(message.number)) return "number: integer expected"; - if (message.label != null && message.hasOwnProperty("label")) + if (message.label != null && Object.hasOwnProperty.call(message, "label")) switch (message.label) { default: return "label: enum value expected"; @@ -39150,7 +40278,7 @@ case 2: break; } - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) switch (message.type) { default: return "type: enum value expected"; @@ -39174,27 +40302,27 @@ case 18: break; } - if (message.typeName != null && message.hasOwnProperty("typeName")) + if (message.typeName != null && Object.hasOwnProperty.call(message, "typeName")) if (!$util.isString(message.typeName)) return "typeName: string expected"; - if (message.extendee != null && message.hasOwnProperty("extendee")) + if (message.extendee != null && Object.hasOwnProperty.call(message, "extendee")) if (!$util.isString(message.extendee)) return "extendee: string expected"; - if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + if (message.defaultValue != null && Object.hasOwnProperty.call(message, "defaultValue")) if (!$util.isString(message.defaultValue)) return "defaultValue: string expected"; - if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + if (message.oneofIndex != null && Object.hasOwnProperty.call(message, "oneofIndex")) if (!$util.isInteger(message.oneofIndex)) return "oneofIndex: integer expected"; - if (message.jsonName != null && message.hasOwnProperty("jsonName")) + if (message.jsonName != null && Object.hasOwnProperty.call(message, "jsonName")) if (!$util.isString(message.jsonName)) return "jsonName: string expected"; - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.FieldOptions.verify(message.options, long + 1); if (error) return "options." + error; } - if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional")) + if (message.proto3Optional != null && Object.hasOwnProperty.call(message, "proto3Optional")) if (typeof message.proto3Optional !== "boolean") return "proto3Optional: boolean expected"; return null; @@ -39211,6 +40339,8 @@ FieldDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldDescriptorProto) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FieldDescriptorProto: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -39331,7 +40461,7 @@ if (object.jsonName != null) message.jsonName = String(object.jsonName); if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected"); message.options = $root.google.protobuf.FieldOptions.fromObject(object.options, long + 1); } @@ -39349,9 +40479,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FieldDescriptorProto.toObject = function toObject(message, options) { + FieldDescriptorProto.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; @@ -39366,27 +40500,27 @@ object.jsonName = ""; object.proto3Optional = false; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.extendee != null && message.hasOwnProperty("extendee")) + if (message.extendee != null && Object.hasOwnProperty.call(message, "extendee")) object.extendee = message.extendee; - if (message.number != null && message.hasOwnProperty("number")) + if (message.number != null && Object.hasOwnProperty.call(message, "number")) object.number = message.number; - if (message.label != null && message.hasOwnProperty("label")) + if (message.label != null && Object.hasOwnProperty.call(message, "label")) object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] === undefined ? message.label : $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label; - if (message.type != null && message.hasOwnProperty("type")) + if (message.type != null && Object.hasOwnProperty.call(message, "type")) object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] === undefined ? message.type : $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type; - if (message.typeName != null && message.hasOwnProperty("typeName")) + if (message.typeName != null && Object.hasOwnProperty.call(message, "typeName")) object.typeName = message.typeName; - if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + if (message.defaultValue != null && Object.hasOwnProperty.call(message, "defaultValue")) object.defaultValue = message.defaultValue; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.FieldOptions.toObject(message.options, options); - if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.FieldOptions.toObject(message.options, options, q + 1); + if (message.oneofIndex != null && Object.hasOwnProperty.call(message, "oneofIndex")) object.oneofIndex = message.oneofIndex; - if (message.jsonName != null && message.hasOwnProperty("jsonName")) + if (message.jsonName != null && Object.hasOwnProperty.call(message, "jsonName")) object.jsonName = message.jsonName; - if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional")) + if (message.proto3Optional != null && Object.hasOwnProperty.call(message, "proto3Optional")) object.proto3Optional = message.proto3Optional; return object; }; @@ -39544,13 +40678,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OneofDescriptorProto.encode = function encode(message, writer) { + OneofDescriptorProto.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.OneofOptions.encode(message.options, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.OneofOptions.encode(message.options, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); return writer; }; @@ -39564,7 +40702,7 @@ * @returns {$protobuf.Writer} Writer */ OneofDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -39638,10 +40776,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.OneofOptions.verify(message.options, long + 1); if (error) return "options." + error; @@ -39660,6 +40798,8 @@ OneofDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.OneofDescriptorProto) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.OneofDescriptorProto: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -39668,7 +40808,7 @@ if (object.name != null) message.name = String(object.name); if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected"); message.options = $root.google.protobuf.OneofOptions.fromObject(object.options, long + 1); } @@ -39684,18 +40824,22 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - OneofDescriptorProto.toObject = function toObject(message, options) { + OneofDescriptorProto.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; object.options = null; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.OneofOptions.toObject(message.options, options); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.OneofOptions.toObject(message.options, options, q + 1); return object; }; @@ -39829,19 +40973,23 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumDescriptorProto.encode = function encode(message, writer) { + EnumDescriptorProto.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.value != null && message.value.length) for (var i = 0; i < message.value.length; ++i) - $root.google.protobuf.EnumValueDescriptorProto.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.EnumValueDescriptorProto.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.EnumOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.protobuf.EnumOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); if (message.reservedRange != null && message.reservedRange.length) for (var i = 0; i < message.reservedRange.length; ++i) - $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.reservedName != null && message.reservedName.length) for (var i = 0; i < message.reservedName.length; ++i) writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]); @@ -39860,7 +41008,7 @@ * @returns {$protobuf.Writer} Writer */ EnumDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -39956,10 +41104,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.value != null && message.hasOwnProperty("value")) { + if (message.value != null && Object.hasOwnProperty.call(message, "value")) { if (!Array.isArray(message.value)) return "value: array expected"; for (var i = 0; i < message.value.length; ++i) { @@ -39968,12 +41116,12 @@ return "value." + error; } } - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.EnumOptions.verify(message.options, long + 1); if (error) return "options." + error; } - if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { + if (message.reservedRange != null && Object.hasOwnProperty.call(message, "reservedRange")) { if (!Array.isArray(message.reservedRange)) return "reservedRange: array expected"; for (var i = 0; i < message.reservedRange.length; ++i) { @@ -39982,14 +41130,14 @@ return "reservedRange." + error; } } - if (message.reservedName != null && message.hasOwnProperty("reservedName")) { + if (message.reservedName != null && Object.hasOwnProperty.call(message, "reservedName")) { if (!Array.isArray(message.reservedName)) return "reservedName: array expected"; for (var i = 0; i < message.reservedName.length; ++i) if (!$util.isString(message.reservedName[i])) return "reservedName: string[] expected"; } - if (message.visibility != null && message.hasOwnProperty("visibility")) + if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility")) switch (message.visibility) { default: return "visibility: enum value expected"; @@ -40012,6 +41160,8 @@ EnumDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumDescriptorProto) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.EnumDescriptorProto: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -40024,13 +41174,13 @@ throw TypeError(".google.protobuf.EnumDescriptorProto.value: array expected"); message.value = []; for (var i = 0; i < object.value.length; ++i) { - if (typeof object.value[i] !== "object") + if (!$util.isObject(object.value[i])) throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected"); message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i], long + 1); } } if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected"); message.options = $root.google.protobuf.EnumOptions.fromObject(object.options, long + 1); } @@ -40039,7 +41189,7 @@ throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: array expected"); message.reservedRange = []; for (var i = 0; i < object.reservedRange.length; ++i) { - if (typeof object.reservedRange[i] !== "object") + if (!$util.isObject(object.reservedRange[i])) throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected"); message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i], long + 1); } @@ -40083,9 +41233,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EnumDescriptorProto.toObject = function toObject(message, options) { + EnumDescriptorProto.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.value = []; @@ -40097,26 +41251,26 @@ object.options = null; object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; if (message.value && message.value.length) { object.value = []; for (var j = 0; j < message.value.length; ++j) - object.value[j] = $root.google.protobuf.EnumValueDescriptorProto.toObject(message.value[j], options); + object.value[j] = $root.google.protobuf.EnumValueDescriptorProto.toObject(message.value[j], options, q + 1); } - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.EnumOptions.toObject(message.options, options); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.EnumOptions.toObject(message.options, options, q + 1); if (message.reservedRange && message.reservedRange.length) { object.reservedRange = []; for (var j = 0; j < message.reservedRange.length; ++j) - object.reservedRange[j] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.toObject(message.reservedRange[j], options); + object.reservedRange[j] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.toObject(message.reservedRange[j], options, q + 1); } if (message.reservedName && message.reservedName.length) { object.reservedName = []; for (var j = 0; j < message.reservedName.length; ++j) object.reservedName[j] = message.reservedName[j]; } - if (message.visibility != null && message.hasOwnProperty("visibility")) + if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility")) object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility; return object; }; @@ -40209,9 +41363,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumReservedRange.encode = function encode(message, writer) { + EnumReservedRange.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.start != null && Object.hasOwnProperty.call(message, "start")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); if (message.end != null && Object.hasOwnProperty.call(message, "end")) @@ -40229,7 +41387,7 @@ * @returns {$protobuf.Writer} Writer */ EnumReservedRange.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -40303,10 +41461,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) if (!$util.isInteger(message.start)) return "start: integer expected"; - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) if (!$util.isInteger(message.end)) return "end: integer expected"; return null; @@ -40323,6 +41481,8 @@ EnumReservedRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.EnumDescriptorProto.EnumReservedRange: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -40344,17 +41504,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EnumReservedRange.toObject = function toObject(message, options) { + EnumReservedRange.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.start = 0; object.end = 0; } - if (message.start != null && message.hasOwnProperty("start")) + if (message.start != null && Object.hasOwnProperty.call(message, "start")) object.start = message.start; - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) object.end = message.end; return object; }; @@ -40462,15 +41626,19 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumValueDescriptorProto.encode = function encode(message, writer) { + EnumValueDescriptorProto.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.number != null && Object.hasOwnProperty.call(message, "number")) writer.uint32(/* id 2, wireType 0 =*/16).int32(message.number); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.EnumValueOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.protobuf.EnumValueOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); return writer; }; @@ -40484,7 +41652,7 @@ * @returns {$protobuf.Writer} Writer */ EnumValueDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -40562,13 +41730,13 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.number != null && message.hasOwnProperty("number")) + if (message.number != null && Object.hasOwnProperty.call(message, "number")) if (!$util.isInteger(message.number)) return "number: integer expected"; - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.EnumValueOptions.verify(message.options, long + 1); if (error) return "options." + error; @@ -40587,6 +41755,8 @@ EnumValueDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumValueDescriptorProto) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.EnumValueDescriptorProto: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -40597,7 +41767,7 @@ if (object.number != null) message.number = object.number | 0; if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected"); message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options, long + 1); } @@ -40613,21 +41783,25 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EnumValueDescriptorProto.toObject = function toObject(message, options) { + EnumValueDescriptorProto.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; object.number = 0; object.options = null; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.number != null && message.hasOwnProperty("number")) + if (message.number != null && Object.hasOwnProperty.call(message, "number")) object.number = message.number; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.EnumValueOptions.toObject(message.options, options); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.EnumValueOptions.toObject(message.options, options, q + 1); return object; }; @@ -40732,16 +41906,20 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ServiceDescriptorProto.encode = function encode(message, writer) { + ServiceDescriptorProto.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.method != null && message.method.length) for (var i = 0; i < message.method.length; ++i) - $root.google.protobuf.MethodDescriptorProto.encode(message.method[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.MethodDescriptorProto.encode(message.method[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.ServiceOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.google.protobuf.ServiceOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork(), q + 1).ldelim(); return writer; }; @@ -40755,7 +41933,7 @@ * @returns {$protobuf.Writer} Writer */ ServiceDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -40835,10 +42013,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.method != null && message.hasOwnProperty("method")) { + if (message.method != null && Object.hasOwnProperty.call(message, "method")) { if (!Array.isArray(message.method)) return "method: array expected"; for (var i = 0; i < message.method.length; ++i) { @@ -40847,7 +42025,7 @@ return "method." + error; } } - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.ServiceOptions.verify(message.options, long + 1); if (error) return "options." + error; @@ -40866,6 +42044,8 @@ ServiceDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ServiceDescriptorProto) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.ServiceDescriptorProto: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -40878,13 +42058,13 @@ throw TypeError(".google.protobuf.ServiceDescriptorProto.method: array expected"); message.method = []; for (var i = 0; i < object.method.length; ++i) { - if (typeof object.method[i] !== "object") + if (!$util.isObject(object.method[i])) throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected"); message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i], long + 1); } } if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected"); message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options, long + 1); } @@ -40900,9 +42080,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ServiceDescriptorProto.toObject = function toObject(message, options) { + ServiceDescriptorProto.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.method = []; @@ -40910,15 +42094,15 @@ object.name = ""; object.options = null; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; if (message.method && message.method.length) { object.method = []; for (var j = 0; j < message.method.length; ++j) - object.method[j] = $root.google.protobuf.MethodDescriptorProto.toObject(message.method[j], options); + object.method[j] = $root.google.protobuf.MethodDescriptorProto.toObject(message.method[j], options, q + 1); } - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.ServiceOptions.toObject(message.options, options); + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.ServiceOptions.toObject(message.options, options, q + 1); return object; }; @@ -41049,9 +42233,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodDescriptorProto.encode = function encode(message, writer) { + MethodDescriptorProto.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); if (message.inputType != null && Object.hasOwnProperty.call(message, "inputType")) @@ -41059,7 +42247,7 @@ if (message.outputType != null && Object.hasOwnProperty.call(message, "outputType")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputType); if (message.options != null && Object.hasOwnProperty.call(message, "options")) - $root.google.protobuf.MethodOptions.encode(message.options, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.protobuf.MethodOptions.encode(message.options, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.clientStreaming != null && Object.hasOwnProperty.call(message, "clientStreaming")) writer.uint32(/* id 5, wireType 0 =*/40).bool(message.clientStreaming); if (message.serverStreaming != null && Object.hasOwnProperty.call(message, "serverStreaming")) @@ -41077,7 +42265,7 @@ * @returns {$protobuf.Writer} Writer */ MethodDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -41167,24 +42355,24 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) if (!$util.isString(message.name)) return "name: string expected"; - if (message.inputType != null && message.hasOwnProperty("inputType")) + if (message.inputType != null && Object.hasOwnProperty.call(message, "inputType")) if (!$util.isString(message.inputType)) return "inputType: string expected"; - if (message.outputType != null && message.hasOwnProperty("outputType")) + if (message.outputType != null && Object.hasOwnProperty.call(message, "outputType")) if (!$util.isString(message.outputType)) return "outputType: string expected"; - if (message.options != null && message.hasOwnProperty("options")) { + if (message.options != null && Object.hasOwnProperty.call(message, "options")) { var error = $root.google.protobuf.MethodOptions.verify(message.options, long + 1); if (error) return "options." + error; } - if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + if (message.clientStreaming != null && Object.hasOwnProperty.call(message, "clientStreaming")) if (typeof message.clientStreaming !== "boolean") return "clientStreaming: boolean expected"; - if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + if (message.serverStreaming != null && Object.hasOwnProperty.call(message, "serverStreaming")) if (typeof message.serverStreaming !== "boolean") return "serverStreaming: boolean expected"; return null; @@ -41201,6 +42389,8 @@ MethodDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.MethodDescriptorProto) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.MethodDescriptorProto: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -41213,7 +42403,7 @@ if (object.outputType != null) message.outputType = String(object.outputType); if (object.options != null) { - if (typeof object.options !== "object") + if (!$util.isObject(object.options)) throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected"); message.options = $root.google.protobuf.MethodOptions.fromObject(object.options, long + 1); } @@ -41233,9 +42423,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MethodDescriptorProto.toObject = function toObject(message, options) { + MethodDescriptorProto.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.name = ""; @@ -41245,17 +42439,17 @@ object.clientStreaming = false; object.serverStreaming = false; } - if (message.name != null && message.hasOwnProperty("name")) + if (message.name != null && Object.hasOwnProperty.call(message, "name")) object.name = message.name; - if (message.inputType != null && message.hasOwnProperty("inputType")) + if (message.inputType != null && Object.hasOwnProperty.call(message, "inputType")) object.inputType = message.inputType; - if (message.outputType != null && message.hasOwnProperty("outputType")) + if (message.outputType != null && Object.hasOwnProperty.call(message, "outputType")) object.outputType = message.outputType; - if (message.options != null && message.hasOwnProperty("options")) - object.options = $root.google.protobuf.MethodOptions.toObject(message.options, options); - if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + if (message.options != null && Object.hasOwnProperty.call(message, "options")) + object.options = $root.google.protobuf.MethodOptions.toObject(message.options, options, q + 1); + if (message.clientStreaming != null && Object.hasOwnProperty.call(message, "clientStreaming")) object.clientStreaming = message.clientStreaming; - if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + if (message.serverStreaming != null && Object.hasOwnProperty.call(message, "serverStreaming")) object.serverStreaming = message.serverStreaming; return object; }; @@ -41533,9 +42727,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FileOptions.encode = function encode(message, writer) { + FileOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.javaPackage != null && Object.hasOwnProperty.call(message, "javaPackage")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.javaPackage); if (message.javaOuterClassname != null && Object.hasOwnProperty.call(message, "javaOuterClassname")) @@ -41575,13 +42773,13 @@ if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage")) writer.uint32(/* id 45, wireType 2 =*/362).string(message.rubyPackage); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 50, wireType 2 =*/402).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 50, wireType 2 =*/402).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); if (message[".google.api.resourceDefinition"] != null && message[".google.api.resourceDefinition"].length) for (var i = 0; i < message[".google.api.resourceDefinition"].length; ++i) - $root.google.api.ResourceDescriptor.encode(message[".google.api.resourceDefinition"][i], writer.uint32(/* id 1053, wireType 2 =*/8426).fork()).ldelim(); + $root.google.api.ResourceDescriptor.encode(message[".google.api.resourceDefinition"][i], writer.uint32(/* id 1053, wireType 2 =*/8426).fork(), q + 1).ldelim(); return writer; }; @@ -41595,7 +42793,7 @@ * @returns {$protobuf.Writer} Writer */ FileOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -41753,22 +42951,22 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + if (message.javaPackage != null && Object.hasOwnProperty.call(message, "javaPackage")) if (!$util.isString(message.javaPackage)) return "javaPackage: string expected"; - if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + if (message.javaOuterClassname != null && Object.hasOwnProperty.call(message, "javaOuterClassname")) if (!$util.isString(message.javaOuterClassname)) return "javaOuterClassname: string expected"; - if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + if (message.javaMultipleFiles != null && Object.hasOwnProperty.call(message, "javaMultipleFiles")) if (typeof message.javaMultipleFiles !== "boolean") return "javaMultipleFiles: boolean expected"; - if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + if (message.javaGenerateEqualsAndHash != null && Object.hasOwnProperty.call(message, "javaGenerateEqualsAndHash")) if (typeof message.javaGenerateEqualsAndHash !== "boolean") return "javaGenerateEqualsAndHash: boolean expected"; - if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + if (message.javaStringCheckUtf8 != null && Object.hasOwnProperty.call(message, "javaStringCheckUtf8")) if (typeof message.javaStringCheckUtf8 !== "boolean") return "javaStringCheckUtf8: boolean expected"; - if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + if (message.optimizeFor != null && Object.hasOwnProperty.call(message, "optimizeFor")) switch (message.optimizeFor) { default: return "optimizeFor: enum value expected"; @@ -41777,51 +42975,51 @@ case 3: break; } - if (message.goPackage != null && message.hasOwnProperty("goPackage")) + if (message.goPackage != null && Object.hasOwnProperty.call(message, "goPackage")) if (!$util.isString(message.goPackage)) return "goPackage: string expected"; - if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + if (message.ccGenericServices != null && Object.hasOwnProperty.call(message, "ccGenericServices")) if (typeof message.ccGenericServices !== "boolean") return "ccGenericServices: boolean expected"; - if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + if (message.javaGenericServices != null && Object.hasOwnProperty.call(message, "javaGenericServices")) if (typeof message.javaGenericServices !== "boolean") return "javaGenericServices: boolean expected"; - if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + if (message.pyGenericServices != null && Object.hasOwnProperty.call(message, "pyGenericServices")) if (typeof message.pyGenericServices !== "boolean") return "pyGenericServices: boolean expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; - if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + if (message.ccEnableArenas != null && Object.hasOwnProperty.call(message, "ccEnableArenas")) if (typeof message.ccEnableArenas !== "boolean") return "ccEnableArenas: boolean expected"; - if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + if (message.objcClassPrefix != null && Object.hasOwnProperty.call(message, "objcClassPrefix")) if (!$util.isString(message.objcClassPrefix)) return "objcClassPrefix: string expected"; - if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + if (message.csharpNamespace != null && Object.hasOwnProperty.call(message, "csharpNamespace")) if (!$util.isString(message.csharpNamespace)) return "csharpNamespace: string expected"; - if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) + if (message.swiftPrefix != null && Object.hasOwnProperty.call(message, "swiftPrefix")) if (!$util.isString(message.swiftPrefix)) return "swiftPrefix: string expected"; - if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) + if (message.phpClassPrefix != null && Object.hasOwnProperty.call(message, "phpClassPrefix")) if (!$util.isString(message.phpClassPrefix)) return "phpClassPrefix: string expected"; - if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) + if (message.phpNamespace != null && Object.hasOwnProperty.call(message, "phpNamespace")) if (!$util.isString(message.phpNamespace)) return "phpNamespace: string expected"; - if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) + if (message.phpMetadataNamespace != null && Object.hasOwnProperty.call(message, "phpMetadataNamespace")) if (!$util.isString(message.phpMetadataNamespace)) return "phpMetadataNamespace: string expected"; - if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) + if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage")) if (!$util.isString(message.rubyPackage)) return "rubyPackage: string expected"; - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -41830,7 +43028,7 @@ return "uninterpretedOption." + error; } } - if (message[".google.api.resourceDefinition"] != null && message.hasOwnProperty(".google.api.resourceDefinition")) { + if (message[".google.api.resourceDefinition"] != null && Object.hasOwnProperty.call(message, ".google.api.resourceDefinition")) { if (!Array.isArray(message[".google.api.resourceDefinition"])) return ".google.api.resourceDefinition: array expected"; for (var i = 0; i < message[".google.api.resourceDefinition"].length; ++i) { @@ -41853,6 +43051,8 @@ FileOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FileOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FileOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -41915,7 +43115,7 @@ if (object.rubyPackage != null) message.rubyPackage = String(object.rubyPackage); if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.FileOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } @@ -41924,7 +43124,7 @@ throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } @@ -41934,7 +43134,7 @@ throw TypeError(".google.protobuf.FileOptions..google.api.resourceDefinition: array expected"); message[".google.api.resourceDefinition"] = []; for (var i = 0; i < object[".google.api.resourceDefinition"].length; ++i) { - if (typeof object[".google.api.resourceDefinition"][i] !== "object") + if (!$util.isObject(object[".google.api.resourceDefinition"][i])) throw TypeError(".google.protobuf.FileOptions..google.api.resourceDefinition: object expected"); message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i], long + 1); } @@ -41951,9 +43151,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FileOptions.toObject = function toObject(message, options) { + FileOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.uninterpretedOption = []; @@ -41981,55 +43185,55 @@ object.rubyPackage = ""; object.features = null; } - if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + if (message.javaPackage != null && Object.hasOwnProperty.call(message, "javaPackage")) object.javaPackage = message.javaPackage; - if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + if (message.javaOuterClassname != null && Object.hasOwnProperty.call(message, "javaOuterClassname")) object.javaOuterClassname = message.javaOuterClassname; - if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + if (message.optimizeFor != null && Object.hasOwnProperty.call(message, "optimizeFor")) object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] === undefined ? message.optimizeFor : $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor; - if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + if (message.javaMultipleFiles != null && Object.hasOwnProperty.call(message, "javaMultipleFiles")) object.javaMultipleFiles = message.javaMultipleFiles; - if (message.goPackage != null && message.hasOwnProperty("goPackage")) + if (message.goPackage != null && Object.hasOwnProperty.call(message, "goPackage")) object.goPackage = message.goPackage; - if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + if (message.ccGenericServices != null && Object.hasOwnProperty.call(message, "ccGenericServices")) object.ccGenericServices = message.ccGenericServices; - if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + if (message.javaGenericServices != null && Object.hasOwnProperty.call(message, "javaGenericServices")) object.javaGenericServices = message.javaGenericServices; - if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + if (message.pyGenericServices != null && Object.hasOwnProperty.call(message, "pyGenericServices")) object.pyGenericServices = message.pyGenericServices; - if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + if (message.javaGenerateEqualsAndHash != null && Object.hasOwnProperty.call(message, "javaGenerateEqualsAndHash")) object.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) object.deprecated = message.deprecated; - if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + if (message.javaStringCheckUtf8 != null && Object.hasOwnProperty.call(message, "javaStringCheckUtf8")) object.javaStringCheckUtf8 = message.javaStringCheckUtf8; - if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + if (message.ccEnableArenas != null && Object.hasOwnProperty.call(message, "ccEnableArenas")) object.ccEnableArenas = message.ccEnableArenas; - if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + if (message.objcClassPrefix != null && Object.hasOwnProperty.call(message, "objcClassPrefix")) object.objcClassPrefix = message.objcClassPrefix; - if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + if (message.csharpNamespace != null && Object.hasOwnProperty.call(message, "csharpNamespace")) object.csharpNamespace = message.csharpNamespace; - if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix")) + if (message.swiftPrefix != null && Object.hasOwnProperty.call(message, "swiftPrefix")) object.swiftPrefix = message.swiftPrefix; - if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix")) + if (message.phpClassPrefix != null && Object.hasOwnProperty.call(message, "phpClassPrefix")) object.phpClassPrefix = message.phpClassPrefix; - if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace")) + if (message.phpNamespace != null && Object.hasOwnProperty.call(message, "phpNamespace")) object.phpNamespace = message.phpNamespace; - if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace")) + if (message.phpMetadataNamespace != null && Object.hasOwnProperty.call(message, "phpMetadataNamespace")) object.phpMetadataNamespace = message.phpMetadataNamespace; - if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage")) + if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage")) object.rubyPackage = message.rubyPackage; - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } if (message[".google.api.resourceDefinition"] && message[".google.api.resourceDefinition"].length) { object[".google.api.resourceDefinition"] = []; for (var j = 0; j < message[".google.api.resourceDefinition"].length; ++j) - object[".google.api.resourceDefinition"][j] = $root.google.api.ResourceDescriptor.toObject(message[".google.api.resourceDefinition"][j], options); + object[".google.api.resourceDefinition"][j] = $root.google.api.ResourceDescriptor.toObject(message[".google.api.resourceDefinition"][j], options, q + 1); } return object; }; @@ -42196,9 +43400,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MessageOptions.encode = function encode(message, writer) { + MessageOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.messageSetWireFormat != null && Object.hasOwnProperty.call(message, "messageSetWireFormat")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.messageSetWireFormat); if (message.noStandardDescriptorAccessor != null && Object.hasOwnProperty.call(message, "noStandardDescriptorAccessor")) @@ -42210,12 +43418,12 @@ if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) writer.uint32(/* id 11, wireType 0 =*/88).bool(message.deprecatedLegacyJsonFieldConflicts); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 12, wireType 2 =*/98).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); if (message[".google.api.resource"] != null && Object.hasOwnProperty.call(message, ".google.api.resource")) - $root.google.api.ResourceDescriptor.encode(message[".google.api.resource"], writer.uint32(/* id 1053, wireType 2 =*/8426).fork()).ldelim(); + $root.google.api.ResourceDescriptor.encode(message[".google.api.resource"], writer.uint32(/* id 1053, wireType 2 =*/8426).fork(), q + 1).ldelim(); return writer; }; @@ -42229,7 +43437,7 @@ * @returns {$protobuf.Writer} Writer */ MessageOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -42329,27 +43537,27 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + if (message.messageSetWireFormat != null && Object.hasOwnProperty.call(message, "messageSetWireFormat")) if (typeof message.messageSetWireFormat !== "boolean") return "messageSetWireFormat: boolean expected"; - if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + if (message.noStandardDescriptorAccessor != null && Object.hasOwnProperty.call(message, "noStandardDescriptorAccessor")) if (typeof message.noStandardDescriptorAccessor !== "boolean") return "noStandardDescriptorAccessor: boolean expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; - if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + if (message.mapEntry != null && Object.hasOwnProperty.call(message, "mapEntry")) if (typeof message.mapEntry !== "boolean") return "mapEntry: boolean expected"; - if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) + if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean") return "deprecatedLegacyJsonFieldConflicts: boolean expected"; - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -42358,7 +43566,7 @@ return "uninterpretedOption." + error; } } - if (message[".google.api.resource"] != null && message.hasOwnProperty(".google.api.resource")) { + if (message[".google.api.resource"] != null && Object.hasOwnProperty.call(message, ".google.api.resource")) { var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"], long + 1); if (error) return ".google.api.resource." + error; @@ -42377,6 +43585,8 @@ MessageOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.MessageOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.MessageOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -42393,7 +43603,7 @@ if (object.deprecatedLegacyJsonFieldConflicts != null) message.deprecatedLegacyJsonFieldConflicts = Boolean(object.deprecatedLegacyJsonFieldConflicts); if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.MessageOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } @@ -42402,13 +43612,13 @@ throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } if (object[".google.api.resource"] != null) { - if (typeof object[".google.api.resource"] !== "object") + if (!$util.isObject(object[".google.api.resource"])) throw TypeError(".google.protobuf.MessageOptions..google.api.resource: object expected"); message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"], long + 1); } @@ -42424,9 +43634,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MessageOptions.toObject = function toObject(message, options) { + MessageOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.uninterpretedOption = []; @@ -42439,25 +43653,25 @@ object.features = null; object[".google.api.resource"] = null; } - if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + if (message.messageSetWireFormat != null && Object.hasOwnProperty.call(message, "messageSetWireFormat")) object.messageSetWireFormat = message.messageSetWireFormat; - if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + if (message.noStandardDescriptorAccessor != null && Object.hasOwnProperty.call(message, "noStandardDescriptorAccessor")) object.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) object.deprecated = message.deprecated; - if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + if (message.mapEntry != null && Object.hasOwnProperty.call(message, "mapEntry")) object.mapEntry = message.mapEntry; - if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) + if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) object.deprecatedLegacyJsonFieldConflicts = message.deprecatedLegacyJsonFieldConflicts; - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } - if (message[".google.api.resource"] != null && message.hasOwnProperty(".google.api.resource")) - object[".google.api.resource"] = $root.google.api.ResourceDescriptor.toObject(message[".google.api.resource"], options); + if (message[".google.api.resource"] != null && Object.hasOwnProperty.call(message, ".google.api.resource")) + object[".google.api.resource"] = $root.google.api.ResourceDescriptor.toObject(message[".google.api.resource"], options, q + 1); return object; }; @@ -42682,9 +43896,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FieldOptions.encode = function encode(message, writer) { + FieldOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.ctype != null && Object.hasOwnProperty.call(message, "ctype")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ctype); if (message.packed != null && Object.hasOwnProperty.call(message, "packed")) @@ -42708,19 +43926,19 @@ writer.uint32(/* id 19, wireType 0 =*/152).int32(message.targets[i]); if (message.editionDefaults != null && message.editionDefaults.length) for (var i = 0; i < message.editionDefaults.length; ++i) - $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); + $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork(), q + 1).ldelim(); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork(), q + 1).ldelim(); if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport")) - $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim(); + $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 22, wireType 2 =*/178).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); if (message[".google.api.fieldBehavior"] != null && message[".google.api.fieldBehavior"].length) for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) writer.uint32(/* id 1052, wireType 0 =*/8416).int32(message[".google.api.fieldBehavior"][i]); if (message[".google.api.resourceReference"] != null && Object.hasOwnProperty.call(message, ".google.api.resourceReference")) - $root.google.api.ResourceReference.encode(message[".google.api.resourceReference"], writer.uint32(/* id 1055, wireType 2 =*/8442).fork()).ldelim(); + $root.google.api.ResourceReference.encode(message[".google.api.resourceReference"], writer.uint32(/* id 1055, wireType 2 =*/8442).fork(), q + 1).ldelim(); return writer; }; @@ -42734,7 +43952,7 @@ * @returns {$protobuf.Writer} Writer */ FieldOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -42882,7 +44100,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.ctype != null && message.hasOwnProperty("ctype")) + if (message.ctype != null && Object.hasOwnProperty.call(message, "ctype")) switch (message.ctype) { default: return "ctype: enum value expected"; @@ -42891,10 +44109,10 @@ case 2: break; } - if (message.packed != null && message.hasOwnProperty("packed")) + if (message.packed != null && Object.hasOwnProperty.call(message, "packed")) if (typeof message.packed !== "boolean") return "packed: boolean expected"; - if (message.jstype != null && message.hasOwnProperty("jstype")) + if (message.jstype != null && Object.hasOwnProperty.call(message, "jstype")) switch (message.jstype) { default: return "jstype: enum value expected"; @@ -42903,22 +44121,22 @@ case 2: break; } - if (message.lazy != null && message.hasOwnProperty("lazy")) + if (message.lazy != null && Object.hasOwnProperty.call(message, "lazy")) if (typeof message.lazy !== "boolean") return "lazy: boolean expected"; - if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy")) + if (message.unverifiedLazy != null && Object.hasOwnProperty.call(message, "unverifiedLazy")) if (typeof message.unverifiedLazy !== "boolean") return "unverifiedLazy: boolean expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; - if (message.weak != null && message.hasOwnProperty("weak")) + if (message.weak != null && Object.hasOwnProperty.call(message, "weak")) if (typeof message.weak !== "boolean") return "weak: boolean expected"; - if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) + if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact")) if (typeof message.debugRedact !== "boolean") return "debugRedact: boolean expected"; - if (message.retention != null && message.hasOwnProperty("retention")) + if (message.retention != null && Object.hasOwnProperty.call(message, "retention")) switch (message.retention) { default: return "retention: enum value expected"; @@ -42927,7 +44145,7 @@ case 2: break; } - if (message.targets != null && message.hasOwnProperty("targets")) { + if (message.targets != null && Object.hasOwnProperty.call(message, "targets")) { if (!Array.isArray(message.targets)) return "targets: array expected"; for (var i = 0; i < message.targets.length; ++i) @@ -42947,7 +44165,7 @@ break; } } - if (message.editionDefaults != null && message.hasOwnProperty("editionDefaults")) { + if (message.editionDefaults != null && Object.hasOwnProperty.call(message, "editionDefaults")) { if (!Array.isArray(message.editionDefaults)) return "editionDefaults: array expected"; for (var i = 0; i < message.editionDefaults.length; ++i) { @@ -42956,17 +44174,17 @@ return "editionDefaults." + error; } } - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) { + if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport")) { var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1); if (error) return "featureSupport." + error; } - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -42975,7 +44193,7 @@ return "uninterpretedOption." + error; } } - if (message[".google.api.fieldBehavior"] != null && message.hasOwnProperty(".google.api.fieldBehavior")) { + if (message[".google.api.fieldBehavior"] != null && Object.hasOwnProperty.call(message, ".google.api.fieldBehavior")) { if (!Array.isArray(message[".google.api.fieldBehavior"])) return ".google.api.fieldBehavior: array expected"; for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i) @@ -42994,7 +44212,7 @@ break; } } - if (message[".google.api.resourceReference"] != null && message.hasOwnProperty(".google.api.resourceReference")) { + if (message[".google.api.resourceReference"] != null && Object.hasOwnProperty.call(message, ".google.api.resourceReference")) { var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"], long + 1); if (error) return ".google.api.resourceReference." + error; @@ -43013,6 +44231,8 @@ FieldOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FieldOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -43148,18 +44368,18 @@ throw TypeError(".google.protobuf.FieldOptions.editionDefaults: array expected"); message.editionDefaults = []; for (var i = 0; i < object.editionDefaults.length; ++i) { - if (typeof object.editionDefaults[i] !== "object") + if (!$util.isObject(object.editionDefaults[i])) throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected"); message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i], long + 1); } } if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.FieldOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.featureSupport != null) { - if (typeof object.featureSupport !== "object") + if (!$util.isObject(object.featureSupport)) throw TypeError(".google.protobuf.FieldOptions.featureSupport: object expected"); message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1); } @@ -43168,7 +44388,7 @@ throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } @@ -43223,7 +44443,7 @@ } } if (object[".google.api.resourceReference"] != null) { - if (typeof object[".google.api.resourceReference"] !== "object") + if (!$util.isObject(object[".google.api.resourceReference"])) throw TypeError(".google.protobuf.FieldOptions..google.api.resourceReference: object expected"); message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"], long + 1); } @@ -43239,9 +44459,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FieldOptions.toObject = function toObject(message, options) { + FieldOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.targets = []; @@ -43263,23 +44487,23 @@ object.featureSupport = null; object[".google.api.resourceReference"] = null; } - if (message.ctype != null && message.hasOwnProperty("ctype")) + if (message.ctype != null && Object.hasOwnProperty.call(message, "ctype")) object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] === undefined ? message.ctype : $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; - if (message.packed != null && message.hasOwnProperty("packed")) + if (message.packed != null && Object.hasOwnProperty.call(message, "packed")) object.packed = message.packed; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) object.deprecated = message.deprecated; - if (message.lazy != null && message.hasOwnProperty("lazy")) + if (message.lazy != null && Object.hasOwnProperty.call(message, "lazy")) object.lazy = message.lazy; - if (message.jstype != null && message.hasOwnProperty("jstype")) + if (message.jstype != null && Object.hasOwnProperty.call(message, "jstype")) object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] === undefined ? message.jstype : $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype; - if (message.weak != null && message.hasOwnProperty("weak")) + if (message.weak != null && Object.hasOwnProperty.call(message, "weak")) object.weak = message.weak; - if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy")) + if (message.unverifiedLazy != null && Object.hasOwnProperty.call(message, "unverifiedLazy")) object.unverifiedLazy = message.unverifiedLazy; - if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) + if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact")) object.debugRedact = message.debugRedact; - if (message.retention != null && message.hasOwnProperty("retention")) + if (message.retention != null && Object.hasOwnProperty.call(message, "retention")) object.retention = options.enums === String ? $root.google.protobuf.FieldOptions.OptionRetention[message.retention] === undefined ? message.retention : $root.google.protobuf.FieldOptions.OptionRetention[message.retention] : message.retention; if (message.targets && message.targets.length) { object.targets = []; @@ -43289,24 +44513,24 @@ if (message.editionDefaults && message.editionDefaults.length) { object.editionDefaults = []; for (var j = 0; j < message.editionDefaults.length; ++j) - object.editionDefaults[j] = $root.google.protobuf.FieldOptions.EditionDefault.toObject(message.editionDefaults[j], options); + object.editionDefaults[j] = $root.google.protobuf.FieldOptions.EditionDefault.toObject(message.editionDefaults[j], options, q + 1); } - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); - if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) - object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); + if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport")) + object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } if (message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length) { object[".google.api.fieldBehavior"] = []; for (var j = 0; j < message[".google.api.fieldBehavior"].length; ++j) object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] === undefined ? message[".google.api.fieldBehavior"][j] : $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j]; } - if (message[".google.api.resourceReference"] != null && message.hasOwnProperty(".google.api.resourceReference")) - object[".google.api.resourceReference"] = $root.google.api.ResourceReference.toObject(message[".google.api.resourceReference"], options); + if (message[".google.api.resourceReference"] != null && Object.hasOwnProperty.call(message, ".google.api.resourceReference")) + object[".google.api.resourceReference"] = $root.google.api.ResourceReference.toObject(message[".google.api.resourceReference"], options, q + 1); return object; }; @@ -43476,9 +44700,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EditionDefault.encode = function encode(message, writer) { + EditionDefault.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.value != null && Object.hasOwnProperty.call(message, "value")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.value); if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) @@ -43496,7 +44724,7 @@ * @returns {$protobuf.Writer} Writer */ EditionDefault.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -43570,7 +44798,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.edition != null && message.hasOwnProperty("edition")) + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) switch (message.edition) { default: return "edition: enum value expected"; @@ -43588,7 +44816,7 @@ case 2147483647: break; } - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) if (!$util.isString(message.value)) return "value: string expected"; return null; @@ -43605,6 +44833,8 @@ EditionDefault.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FieldOptions.EditionDefault: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -43680,17 +44910,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EditionDefault.toObject = function toObject(message, options) { + EditionDefault.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.value = ""; object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0; } - if (message.value != null && message.hasOwnProperty("value")) + if (message.value != null && Object.hasOwnProperty.call(message, "value")) object.value = message.value; - if (message.edition != null && message.hasOwnProperty("edition")) + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition; return object; }; @@ -43804,9 +45038,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FeatureSupport.encode = function encode(message, writer) { + FeatureSupport.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.editionIntroduced != null && Object.hasOwnProperty.call(message, "editionIntroduced")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.editionIntroduced); if (message.editionDeprecated != null && Object.hasOwnProperty.call(message, "editionDeprecated")) @@ -43828,7 +45066,7 @@ * @returns {$protobuf.Writer} Writer */ FeatureSupport.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -43910,7 +45148,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced")) + if (message.editionIntroduced != null && Object.hasOwnProperty.call(message, "editionIntroduced")) switch (message.editionIntroduced) { default: return "editionIntroduced: enum value expected"; @@ -43928,7 +45166,7 @@ case 2147483647: break; } - if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated")) + if (message.editionDeprecated != null && Object.hasOwnProperty.call(message, "editionDeprecated")) switch (message.editionDeprecated) { default: return "editionDeprecated: enum value expected"; @@ -43946,10 +45184,10 @@ case 2147483647: break; } - if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning")) + if (message.deprecationWarning != null && Object.hasOwnProperty.call(message, "deprecationWarning")) if (!$util.isString(message.deprecationWarning)) return "deprecationWarning: string expected"; - if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved")) + if (message.editionRemoved != null && Object.hasOwnProperty.call(message, "editionRemoved")) switch (message.editionRemoved) { default: return "editionRemoved: enum value expected"; @@ -43981,6 +45219,8 @@ FeatureSupport.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldOptions.FeatureSupport) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FieldOptions.FeatureSupport: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -44168,9 +45408,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FeatureSupport.toObject = function toObject(message, options) { + FeatureSupport.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.editionIntroduced = options.enums === String ? "EDITION_UNKNOWN" : 0; @@ -44178,13 +45422,13 @@ object.deprecationWarning = ""; object.editionRemoved = options.enums === String ? "EDITION_UNKNOWN" : 0; } - if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced")) + if (message.editionIntroduced != null && Object.hasOwnProperty.call(message, "editionIntroduced")) object.editionIntroduced = options.enums === String ? $root.google.protobuf.Edition[message.editionIntroduced] === undefined ? message.editionIntroduced : $root.google.protobuf.Edition[message.editionIntroduced] : message.editionIntroduced; - if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated")) + if (message.editionDeprecated != null && Object.hasOwnProperty.call(message, "editionDeprecated")) object.editionDeprecated = options.enums === String ? $root.google.protobuf.Edition[message.editionDeprecated] === undefined ? message.editionDeprecated : $root.google.protobuf.Edition[message.editionDeprecated] : message.editionDeprecated; - if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning")) + if (message.deprecationWarning != null && Object.hasOwnProperty.call(message, "deprecationWarning")) object.deprecationWarning = message.deprecationWarning; - if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved")) + if (message.editionRemoved != null && Object.hasOwnProperty.call(message, "editionRemoved")) object.editionRemoved = options.enums === String ? $root.google.protobuf.Edition[message.editionRemoved] === undefined ? message.editionRemoved : $root.google.protobuf.Edition[message.editionRemoved] : message.editionRemoved; return object; }; @@ -44284,14 +45528,18 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - OneofOptions.encode = function encode(message, writer) { + OneofOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); return writer; }; @@ -44305,7 +45553,7 @@ * @returns {$protobuf.Writer} Writer */ OneofOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -44381,12 +45629,12 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -44409,13 +45657,15 @@ OneofOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.OneofOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.OneofOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.OneofOptions(); if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.OneofOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } @@ -44424,7 +45674,7 @@ throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } @@ -44441,20 +45691,24 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - OneofOptions.toObject = function toObject(message, options) { + OneofOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.uninterpretedOption = []; if (options.defaults) object.features = null; - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } return object; }; @@ -44578,9 +45832,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumOptions.encode = function encode(message, writer) { + EnumOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.allowAlias != null && Object.hasOwnProperty.call(message, "allowAlias")) writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowAlias); if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) @@ -44588,10 +45846,10 @@ if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) writer.uint32(/* id 6, wireType 0 =*/48).bool(message.deprecatedLegacyJsonFieldConflicts); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 7, wireType 2 =*/58).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); return writer; }; @@ -44605,7 +45863,7 @@ * @returns {$protobuf.Writer} Writer */ EnumOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -44693,21 +45951,21 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + if (message.allowAlias != null && Object.hasOwnProperty.call(message, "allowAlias")) if (typeof message.allowAlias !== "boolean") return "allowAlias: boolean expected"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; - if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) + if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean") return "deprecatedLegacyJsonFieldConflicts: boolean expected"; - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -44730,6 +45988,8 @@ EnumOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.EnumOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -44742,7 +46002,7 @@ if (object.deprecatedLegacyJsonFieldConflicts != null) message.deprecatedLegacyJsonFieldConflicts = Boolean(object.deprecatedLegacyJsonFieldConflicts); if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.EnumOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } @@ -44751,7 +46011,7 @@ throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } @@ -44768,9 +46028,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EnumOptions.toObject = function toObject(message, options) { + EnumOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.uninterpretedOption = []; @@ -44780,18 +46044,18 @@ object.deprecatedLegacyJsonFieldConflicts = false; object.features = null; } - if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + if (message.allowAlias != null && Object.hasOwnProperty.call(message, "allowAlias")) object.allowAlias = message.allowAlias; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) object.deprecated = message.deprecated; - if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts")) + if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts")) object.deprecatedLegacyJsonFieldConflicts = message.deprecatedLegacyJsonFieldConflicts; - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } return object; }; @@ -44915,20 +46179,24 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - EnumValueOptions.encode = function encode(message, writer) { + EnumValueOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 1, wireType 0 =*/8).bool(message.deprecated); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact")) writer.uint32(/* id 3, wireType 0 =*/24).bool(message.debugRedact); if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport")) - $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); return writer; }; @@ -44942,7 +46210,7 @@ * @returns {$protobuf.Writer} Writer */ EnumValueOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -45030,23 +46298,23 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) + if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact")) if (typeof message.debugRedact !== "boolean") return "debugRedact: boolean expected"; - if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) { + if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport")) { var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1); if (error) return "featureSupport." + error; } - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -45069,6 +46337,8 @@ EnumValueOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumValueOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.EnumValueOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -45077,14 +46347,14 @@ if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.EnumValueOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.debugRedact != null) message.debugRedact = Boolean(object.debugRedact); if (object.featureSupport != null) { - if (typeof object.featureSupport !== "object") + if (!$util.isObject(object.featureSupport)) throw TypeError(".google.protobuf.EnumValueOptions.featureSupport: object expected"); message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1); } @@ -45093,7 +46363,7 @@ throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } @@ -45110,9 +46380,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - EnumValueOptions.toObject = function toObject(message, options) { + EnumValueOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.uninterpretedOption = []; @@ -45122,18 +46396,18 @@ object.debugRedact = false; object.featureSupport = null; } - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) object.deprecated = message.deprecated; - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); - if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); + if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact")) object.debugRedact = message.debugRedact; - if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) - object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options); + if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport")) + object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } return object; }; @@ -45266,16 +46540,20 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ServiceOptions.encode = function encode(message, writer) { + ServiceOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 34, wireType 2 =*/274).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 34, wireType 2 =*/274).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); if (message[".google.api.defaultHost"] != null && Object.hasOwnProperty.call(message, ".google.api.defaultHost")) writer.uint32(/* id 1049, wireType 2 =*/8394).string(message[".google.api.defaultHost"]); if (message[".google.api.oauthScopes"] != null && Object.hasOwnProperty.call(message, ".google.api.oauthScopes")) @@ -45295,7 +46573,7 @@ * @returns {$protobuf.Writer} Writer */ ServiceOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -45387,15 +46665,15 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -45404,13 +46682,13 @@ return "uninterpretedOption." + error; } } - if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) + if (message[".google.api.defaultHost"] != null && Object.hasOwnProperty.call(message, ".google.api.defaultHost")) if (!$util.isString(message[".google.api.defaultHost"])) return ".google.api.defaultHost: string expected"; - if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) + if (message[".google.api.oauthScopes"] != null && Object.hasOwnProperty.call(message, ".google.api.oauthScopes")) if (!$util.isString(message[".google.api.oauthScopes"])) return ".google.api.oauthScopes: string expected"; - if (message[".google.api.apiVersion"] != null && message.hasOwnProperty(".google.api.apiVersion")) + if (message[".google.api.apiVersion"] != null && Object.hasOwnProperty.call(message, ".google.api.apiVersion")) if (!$util.isString(message[".google.api.apiVersion"])) return ".google.api.apiVersion: string expected"; return null; @@ -45427,13 +46705,15 @@ ServiceOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ServiceOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.ServiceOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.ServiceOptions(); if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.ServiceOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } @@ -45444,7 +46724,7 @@ throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } @@ -45467,9 +46747,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ServiceOptions.toObject = function toObject(message, options) { + ServiceOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.uninterpretedOption = []; @@ -45480,20 +46764,20 @@ object[".google.api.oauthScopes"] = ""; object[".google.api.apiVersion"] = ""; } - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) object.deprecated = message.deprecated; - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } - if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost")) + if (message[".google.api.defaultHost"] != null && Object.hasOwnProperty.call(message, ".google.api.defaultHost")) object[".google.api.defaultHost"] = message[".google.api.defaultHost"]; - if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes")) + if (message[".google.api.oauthScopes"] != null && Object.hasOwnProperty.call(message, ".google.api.oauthScopes")) object[".google.api.oauthScopes"] = message[".google.api.oauthScopes"]; - if (message[".google.api.apiVersion"] != null && message.hasOwnProperty(".google.api.apiVersion")) + if (message[".google.api.apiVersion"] != null && Object.hasOwnProperty.call(message, ".google.api.apiVersion")) object[".google.api.apiVersion"] = message[".google.api.apiVersion"]; return object; }; @@ -45627,23 +46911,27 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - MethodOptions.encode = function encode(message, writer) { + MethodOptions.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); if (message.idempotencyLevel != null && Object.hasOwnProperty.call(message, "idempotencyLevel")) writer.uint32(/* id 34, wireType 0 =*/272).int32(message.idempotencyLevel); if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 35, wireType 2 =*/282).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 35, wireType 2 =*/282).fork(), q + 1).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) - $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork(), q + 1).ldelim(); if (message[".google.api.methodSignature"] != null && message[".google.api.methodSignature"].length) for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) writer.uint32(/* id 1051, wireType 2 =*/8410).string(message[".google.api.methodSignature"][i]); if (message[".google.api.http"] != null && Object.hasOwnProperty.call(message, ".google.api.http")) - $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork()).ldelim(); + $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork(), q + 1).ldelim(); return writer; }; @@ -45657,7 +46945,7 @@ * @returns {$protobuf.Writer} Writer */ MethodOptions.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -45751,10 +47039,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; - if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) + if (message.idempotencyLevel != null && Object.hasOwnProperty.call(message, "idempotencyLevel")) switch (message.idempotencyLevel) { default: return "idempotencyLevel: enum value expected"; @@ -45763,12 +47051,12 @@ case 2: break; } - if (message.features != null && message.hasOwnProperty("features")) { + if (message.features != null && Object.hasOwnProperty.call(message, "features")) { var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } - if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (message.uninterpretedOption != null && Object.hasOwnProperty.call(message, "uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { @@ -45777,12 +47065,12 @@ return "uninterpretedOption." + error; } } - if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) { + if (message[".google.api.http"] != null && Object.hasOwnProperty.call(message, ".google.api.http")) { var error = $root.google.api.HttpRule.verify(message[".google.api.http"], long + 1); if (error) return ".google.api.http." + error; } - if (message[".google.api.methodSignature"] != null && message.hasOwnProperty(".google.api.methodSignature")) { + if (message[".google.api.methodSignature"] != null && Object.hasOwnProperty.call(message, ".google.api.methodSignature")) { if (!Array.isArray(message[".google.api.methodSignature"])) return ".google.api.methodSignature: array expected"; for (var i = 0; i < message[".google.api.methodSignature"].length; ++i) @@ -45803,6 +47091,8 @@ MethodOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.MethodOptions) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.MethodOptions: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -45831,7 +47121,7 @@ break; } if (object.features != null) { - if (typeof object.features !== "object") + if (!$util.isObject(object.features)) throw TypeError(".google.protobuf.MethodOptions.features: object expected"); message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } @@ -45840,13 +47130,13 @@ throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: array expected"); message.uninterpretedOption = []; for (var i = 0; i < object.uninterpretedOption.length; ++i) { - if (typeof object.uninterpretedOption[i] !== "object") + if (!$util.isObject(object.uninterpretedOption[i])) throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected"); message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } if (object[".google.api.http"] != null) { - if (typeof object[".google.api.http"] !== "object") + if (!$util.isObject(object[".google.api.http"])) throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected"); message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"], long + 1); } @@ -45869,9 +47159,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - MethodOptions.toObject = function toObject(message, options) { + MethodOptions.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.uninterpretedOption = []; @@ -45883,24 +47177,24 @@ object.features = null; object[".google.api.http"] = null; } - if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated")) object.deprecated = message.deprecated; - if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel")) + if (message.idempotencyLevel != null && Object.hasOwnProperty.call(message, "idempotencyLevel")) object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] === undefined ? message.idempotencyLevel : $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel; - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.features != null && Object.hasOwnProperty.call(message, "features")) + object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options, q + 1); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) - object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options, q + 1); } if (message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length) { object[".google.api.methodSignature"] = []; for (var j = 0; j < message[".google.api.methodSignature"].length; ++j) object[".google.api.methodSignature"][j] = message[".google.api.methodSignature"][j]; } - if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) - object[".google.api.http"] = $root.google.api.HttpRule.toObject(message[".google.api.http"], options); + if (message[".google.api.http"] != null && Object.hasOwnProperty.call(message, ".google.api.http")) + object[".google.api.http"] = $root.google.api.HttpRule.toObject(message[".google.api.http"], options, q + 1); return object; }; @@ -46057,12 +47351,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - UninterpretedOption.encode = function encode(message, writer) { + UninterpretedOption.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.name != null && message.name.length) for (var i = 0; i < message.name.length; ++i) - $root.google.protobuf.UninterpretedOption.NamePart.encode(message.name[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + $root.google.protobuf.UninterpretedOption.NamePart.encode(message.name[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim(); if (message.identifierValue != null && Object.hasOwnProperty.call(message, "identifierValue")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.identifierValue); if (message.positiveIntValue != null && Object.hasOwnProperty.call(message, "positiveIntValue")) @@ -46088,7 +47386,7 @@ * @returns {$protobuf.Writer} Writer */ UninterpretedOption.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -46184,7 +47482,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.name != null && message.hasOwnProperty("name")) { + if (message.name != null && Object.hasOwnProperty.call(message, "name")) { if (!Array.isArray(message.name)) return "name: array expected"; for (var i = 0; i < message.name.length; ++i) { @@ -46193,22 +47491,22 @@ return "name." + error; } } - if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + if (message.identifierValue != null && Object.hasOwnProperty.call(message, "identifierValue")) if (!$util.isString(message.identifierValue)) return "identifierValue: string expected"; - if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + if (message.positiveIntValue != null && Object.hasOwnProperty.call(message, "positiveIntValue")) if (!$util.isInteger(message.positiveIntValue) && !(message.positiveIntValue && $util.isInteger(message.positiveIntValue.low) && $util.isInteger(message.positiveIntValue.high))) return "positiveIntValue: integer|Long expected"; - if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + if (message.negativeIntValue != null && Object.hasOwnProperty.call(message, "negativeIntValue")) if (!$util.isInteger(message.negativeIntValue) && !(message.negativeIntValue && $util.isInteger(message.negativeIntValue.low) && $util.isInteger(message.negativeIntValue.high))) return "negativeIntValue: integer|Long expected"; - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) if (typeof message.doubleValue !== "number") return "doubleValue: number expected"; - if (message.stringValue != null && message.hasOwnProperty("stringValue")) + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) if (!(message.stringValue && typeof message.stringValue.length === "number" || $util.isString(message.stringValue))) return "stringValue: buffer expected"; - if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + if (message.aggregateValue != null && Object.hasOwnProperty.call(message, "aggregateValue")) if (!$util.isString(message.aggregateValue)) return "aggregateValue: string expected"; return null; @@ -46225,6 +47523,8 @@ UninterpretedOption.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.UninterpretedOption) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.UninterpretedOption: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -46235,7 +47535,7 @@ throw TypeError(".google.protobuf.UninterpretedOption.name: array expected"); message.name = []; for (var i = 0; i < object.name.length; ++i) { - if (typeof object.name[i] !== "object") + if (!$util.isObject(object.name[i])) throw TypeError(".google.protobuf.UninterpretedOption.name: object expected"); message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i], long + 1); } @@ -46244,7 +47544,7 @@ message.identifierValue = String(object.identifierValue); if (object.positiveIntValue != null) if ($util.Long) - (message.positiveIntValue = $util.Long.fromValue(object.positiveIntValue)).unsigned = true; + message.positiveIntValue = $util.Long.fromValue(object.positiveIntValue, true); else if (typeof object.positiveIntValue === "string") message.positiveIntValue = parseInt(object.positiveIntValue, 10); else if (typeof object.positiveIntValue === "number") @@ -46253,7 +47553,7 @@ message.positiveIntValue = new $util.LongBits(object.positiveIntValue.low >>> 0, object.positiveIntValue.high >>> 0).toNumber(true); if (object.negativeIntValue != null) if ($util.Long) - (message.negativeIntValue = $util.Long.fromValue(object.negativeIntValue)).unsigned = false; + message.negativeIntValue = $util.Long.fromValue(object.negativeIntValue, false); else if (typeof object.negativeIntValue === "string") message.negativeIntValue = parseInt(object.negativeIntValue, 10); else if (typeof object.negativeIntValue === "number") @@ -46281,9 +47581,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - UninterpretedOption.toObject = function toObject(message, options) { + UninterpretedOption.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.name = []; @@ -46291,14 +47595,14 @@ object.identifierValue = ""; if ($util.Long) { var long = new $util.Long(0, 0, true); - object.positiveIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.positiveIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.positiveIntValue = options.longs === String ? "0" : 0; + object.positiveIntValue = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; if ($util.Long) { var long = new $util.Long(0, 0, false); - object.negativeIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.negativeIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.negativeIntValue = options.longs === String ? "0" : 0; + object.negativeIntValue = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; object.doubleValue = 0; if (options.bytes === String) object.stringValue = ""; @@ -46312,25 +47616,29 @@ if (message.name && message.name.length) { object.name = []; for (var j = 0; j < message.name.length; ++j) - object.name[j] = $root.google.protobuf.UninterpretedOption.NamePart.toObject(message.name[j], options); + object.name[j] = $root.google.protobuf.UninterpretedOption.NamePart.toObject(message.name[j], options, q + 1); } - if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + if (message.identifierValue != null && Object.hasOwnProperty.call(message, "identifierValue")) object.identifierValue = message.identifierValue; - if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) - if (typeof message.positiveIntValue === "number") + if (message.positiveIntValue != null && Object.hasOwnProperty.call(message, "positiveIntValue")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.positiveIntValue = typeof message.positiveIntValue === "number" ? BigInt(message.positiveIntValue) : $util.Long.fromBits(message.positiveIntValue.low >>> 0, message.positiveIntValue.high >>> 0, true).toBigInt(); + else if (typeof message.positiveIntValue === "number") object.positiveIntValue = options.longs === String ? String(message.positiveIntValue) : message.positiveIntValue; else object.positiveIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.positiveIntValue) : options.longs === Number ? new $util.LongBits(message.positiveIntValue.low >>> 0, message.positiveIntValue.high >>> 0).toNumber(true) : message.positiveIntValue; - if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) - if (typeof message.negativeIntValue === "number") + if (message.negativeIntValue != null && Object.hasOwnProperty.call(message, "negativeIntValue")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.negativeIntValue = typeof message.negativeIntValue === "number" ? BigInt(message.negativeIntValue) : $util.Long.fromBits(message.negativeIntValue.low >>> 0, message.negativeIntValue.high >>> 0, false).toBigInt(); + else if (typeof message.negativeIntValue === "number") object.negativeIntValue = options.longs === String ? String(message.negativeIntValue) : message.negativeIntValue; else object.negativeIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.negativeIntValue) : options.longs === Number ? new $util.LongBits(message.negativeIntValue.low >>> 0, message.negativeIntValue.high >>> 0).toNumber() : message.negativeIntValue; - if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue")) object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue; - if (message.stringValue != null && message.hasOwnProperty("stringValue")) + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) object.stringValue = options.bytes === String ? $util.base64.encode(message.stringValue, 0, message.stringValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.stringValue) : message.stringValue; - if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + if (message.aggregateValue != null && Object.hasOwnProperty.call(message, "aggregateValue")) object.aggregateValue = message.aggregateValue; return object; }; @@ -46423,9 +47731,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - NamePart.encode = function encode(message, writer) { + NamePart.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); writer.uint32(/* id 1, wireType 2 =*/10).string(message.namePart); writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isExtension); return writer; @@ -46441,7 +47753,7 @@ * @returns {$protobuf.Writer} Writer */ NamePart.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -46481,9 +47793,9 @@ break; } } - if (!message.hasOwnProperty("namePart")) + if (!Object.hasOwnProperty.call(message, "namePart")) throw $util.ProtocolError("missing required 'namePart'", { instance: message }); - if (!message.hasOwnProperty("isExtension")) + if (!Object.hasOwnProperty.call(message, "isExtension")) throw $util.ProtocolError("missing required 'isExtension'", { instance: message }); return message; }; @@ -46537,6 +47849,8 @@ NamePart.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.UninterpretedOption.NamePart: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -46558,17 +47872,21 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - NamePart.toObject = function toObject(message, options) { + NamePart.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.namePart = ""; object.isExtension = false; } - if (message.namePart != null && message.hasOwnProperty("namePart")) + if (message.namePart != null && Object.hasOwnProperty.call(message, "namePart")) object.namePart = message.namePart; - if (message.isExtension != null && message.hasOwnProperty("isExtension")) + if (message.isExtension != null && Object.hasOwnProperty.call(message, "isExtension")) object.isExtension = message.isExtension; return object; }; @@ -46721,9 +48039,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FeatureSet.encode = function encode(message, writer) { + FeatureSet.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.fieldPresence != null && Object.hasOwnProperty.call(message, "fieldPresence")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.fieldPresence); if (message.enumType != null && Object.hasOwnProperty.call(message, "enumType")) @@ -46753,7 +48075,7 @@ * @returns {$protobuf.Writer} Writer */ FeatureSet.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -46851,7 +48173,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence")) + if (message.fieldPresence != null && Object.hasOwnProperty.call(message, "fieldPresence")) switch (message.fieldPresence) { default: return "fieldPresence: enum value expected"; @@ -46861,7 +48183,7 @@ case 3: break; } - if (message.enumType != null && message.hasOwnProperty("enumType")) + if (message.enumType != null && Object.hasOwnProperty.call(message, "enumType")) switch (message.enumType) { default: return "enumType: enum value expected"; @@ -46870,7 +48192,7 @@ case 2: break; } - if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding")) + if (message.repeatedFieldEncoding != null && Object.hasOwnProperty.call(message, "repeatedFieldEncoding")) switch (message.repeatedFieldEncoding) { default: return "repeatedFieldEncoding: enum value expected"; @@ -46879,7 +48201,7 @@ case 2: break; } - if (message.utf8Validation != null && message.hasOwnProperty("utf8Validation")) + if (message.utf8Validation != null && Object.hasOwnProperty.call(message, "utf8Validation")) switch (message.utf8Validation) { default: return "utf8Validation: enum value expected"; @@ -46888,7 +48210,7 @@ case 3: break; } - if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding")) + if (message.messageEncoding != null && Object.hasOwnProperty.call(message, "messageEncoding")) switch (message.messageEncoding) { default: return "messageEncoding: enum value expected"; @@ -46897,7 +48219,7 @@ case 2: break; } - if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat")) + if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat")) switch (message.jsonFormat) { default: return "jsonFormat: enum value expected"; @@ -46906,7 +48228,7 @@ case 2: break; } - if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle")) + if (message.enforceNamingStyle != null && Object.hasOwnProperty.call(message, "enforceNamingStyle")) switch (message.enforceNamingStyle) { default: return "enforceNamingStyle: enum value expected"; @@ -46915,7 +48237,7 @@ case 2: break; } - if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility")) + if (message.defaultSymbolVisibility != null && Object.hasOwnProperty.call(message, "defaultSymbolVisibility")) switch (message.defaultSymbolVisibility) { default: return "defaultSymbolVisibility: enum value expected"; @@ -46940,6 +48262,8 @@ FeatureSet.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FeatureSet) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FeatureSet: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -47129,9 +48453,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FeatureSet.toObject = function toObject(message, options) { + FeatureSet.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.fieldPresence = options.enums === String ? "FIELD_PRESENCE_UNKNOWN" : 0; @@ -47143,21 +48471,21 @@ object.enforceNamingStyle = options.enums === String ? "ENFORCE_NAMING_STYLE_UNKNOWN" : 0; object.defaultSymbolVisibility = options.enums === String ? "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN" : 0; } - if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence")) + if (message.fieldPresence != null && Object.hasOwnProperty.call(message, "fieldPresence")) object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence; - if (message.enumType != null && message.hasOwnProperty("enumType")) + if (message.enumType != null && Object.hasOwnProperty.call(message, "enumType")) object.enumType = options.enums === String ? $root.google.protobuf.FeatureSet.EnumType[message.enumType] === undefined ? message.enumType : $root.google.protobuf.FeatureSet.EnumType[message.enumType] : message.enumType; - if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding")) + if (message.repeatedFieldEncoding != null && Object.hasOwnProperty.call(message, "repeatedFieldEncoding")) object.repeatedFieldEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] === undefined ? message.repeatedFieldEncoding : $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] : message.repeatedFieldEncoding; - if (message.utf8Validation != null && message.hasOwnProperty("utf8Validation")) + if (message.utf8Validation != null && Object.hasOwnProperty.call(message, "utf8Validation")) object.utf8Validation = options.enums === String ? $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] === undefined ? message.utf8Validation : $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] : message.utf8Validation; - if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding")) + if (message.messageEncoding != null && Object.hasOwnProperty.call(message, "messageEncoding")) object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding; - if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat")) + if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat")) object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat; - if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle")) + if (message.enforceNamingStyle != null && Object.hasOwnProperty.call(message, "enforceNamingStyle")) object.enforceNamingStyle = options.enums === String ? $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] === undefined ? message.enforceNamingStyle : $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] : message.enforceNamingStyle; - if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility")) + if (message.defaultSymbolVisibility != null && Object.hasOwnProperty.call(message, "defaultSymbolVisibility")) object.defaultSymbolVisibility = options.enums === String ? $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] === undefined ? message.defaultSymbolVisibility : $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] : message.defaultSymbolVisibility; return object; }; @@ -47346,9 +48674,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - VisibilityFeature.encode = function encode(message, writer) { + VisibilityFeature.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -47362,7 +48694,7 @@ * @returns {$protobuf.Writer} Writer */ VisibilityFeature.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -47442,10 +48774,6 @@ VisibilityFeature.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FeatureSet.VisibilityFeature) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.protobuf.FeatureSet.VisibilityFeature(); }; @@ -47586,12 +48914,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FeatureSetDefaults.encode = function encode(message, writer) { + FeatureSetDefaults.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.defaults != null && message.defaults.length) for (var i = 0; i < message.defaults.length; ++i) - $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.encode(message.defaults[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.encode(message.defaults[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); if (message.minimumEdition != null && Object.hasOwnProperty.call(message, "minimumEdition")) writer.uint32(/* id 4, wireType 0 =*/32).int32(message.minimumEdition); if (message.maximumEdition != null && Object.hasOwnProperty.call(message, "maximumEdition")) @@ -47609,7 +48941,7 @@ * @returns {$protobuf.Writer} Writer */ FeatureSetDefaults.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -47689,7 +49021,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.defaults != null && message.hasOwnProperty("defaults")) { + if (message.defaults != null && Object.hasOwnProperty.call(message, "defaults")) { if (!Array.isArray(message.defaults)) return "defaults: array expected"; for (var i = 0; i < message.defaults.length; ++i) { @@ -47698,7 +49030,7 @@ return "defaults." + error; } } - if (message.minimumEdition != null && message.hasOwnProperty("minimumEdition")) + if (message.minimumEdition != null && Object.hasOwnProperty.call(message, "minimumEdition")) switch (message.minimumEdition) { default: return "minimumEdition: enum value expected"; @@ -47716,7 +49048,7 @@ case 2147483647: break; } - if (message.maximumEdition != null && message.hasOwnProperty("maximumEdition")) + if (message.maximumEdition != null && Object.hasOwnProperty.call(message, "maximumEdition")) switch (message.maximumEdition) { default: return "maximumEdition: enum value expected"; @@ -47748,6 +49080,8 @@ FeatureSetDefaults.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FeatureSetDefaults) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FeatureSetDefaults: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -47758,7 +49092,7 @@ throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: array expected"); message.defaults = []; for (var i = 0; i < object.defaults.length; ++i) { - if (typeof object.defaults[i] !== "object") + if (!$util.isObject(object.defaults[i])) throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected"); message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i], long + 1); } @@ -47887,9 +49221,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FeatureSetDefaults.toObject = function toObject(message, options) { + FeatureSetDefaults.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.defaults = []; @@ -47900,11 +49238,11 @@ if (message.defaults && message.defaults.length) { object.defaults = []; for (var j = 0; j < message.defaults.length; ++j) - object.defaults[j] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.toObject(message.defaults[j], options); + object.defaults[j] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.toObject(message.defaults[j], options, q + 1); } - if (message.minimumEdition != null && message.hasOwnProperty("minimumEdition")) + if (message.minimumEdition != null && Object.hasOwnProperty.call(message, "minimumEdition")) object.minimumEdition = options.enums === String ? $root.google.protobuf.Edition[message.minimumEdition] === undefined ? message.minimumEdition : $root.google.protobuf.Edition[message.minimumEdition] : message.minimumEdition; - if (message.maximumEdition != null && message.hasOwnProperty("maximumEdition")) + if (message.maximumEdition != null && Object.hasOwnProperty.call(message, "maximumEdition")) object.maximumEdition = options.enums === String ? $root.google.protobuf.Edition[message.maximumEdition] === undefined ? message.maximumEdition : $root.google.protobuf.Edition[message.maximumEdition] : message.maximumEdition; return object; }; @@ -48006,15 +49344,19 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FeatureSetEditionDefault.encode = function encode(message, writer) { + FeatureSetEditionDefault.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition); if (message.overridableFeatures != null && Object.hasOwnProperty.call(message, "overridableFeatures")) - $root.google.protobuf.FeatureSet.encode(message.overridableFeatures, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.overridableFeatures, writer.uint32(/* id 4, wireType 2 =*/34).fork(), q + 1).ldelim(); if (message.fixedFeatures != null && Object.hasOwnProperty.call(message, "fixedFeatures")) - $root.google.protobuf.FeatureSet.encode(message.fixedFeatures, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.protobuf.FeatureSet.encode(message.fixedFeatures, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); return writer; }; @@ -48028,7 +49370,7 @@ * @returns {$protobuf.Writer} Writer */ FeatureSetEditionDefault.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -48106,7 +49448,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.edition != null && message.hasOwnProperty("edition")) + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) switch (message.edition) { default: return "edition: enum value expected"; @@ -48124,12 +49466,12 @@ case 2147483647: break; } - if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) { + if (message.overridableFeatures != null && Object.hasOwnProperty.call(message, "overridableFeatures")) { var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures, long + 1); if (error) return "overridableFeatures." + error; } - if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) { + if (message.fixedFeatures != null && Object.hasOwnProperty.call(message, "fixedFeatures")) { var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures, long + 1); if (error) return "fixedFeatures." + error; @@ -48148,6 +49490,8 @@ FeatureSetEditionDefault.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -48210,12 +49554,12 @@ break; } if (object.overridableFeatures != null) { - if (typeof object.overridableFeatures !== "object") + if (!$util.isObject(object.overridableFeatures)) throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridableFeatures: object expected"); message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures, long + 1); } if (object.fixedFeatures != null) { - if (typeof object.fixedFeatures !== "object") + if (!$util.isObject(object.fixedFeatures)) throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixedFeatures: object expected"); message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures, long + 1); } @@ -48231,21 +49575,25 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FeatureSetEditionDefault.toObject = function toObject(message, options) { + FeatureSetEditionDefault.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0; object.overridableFeatures = null; object.fixedFeatures = null; } - if (message.edition != null && message.hasOwnProperty("edition")) + if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition; - if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) - object.overridableFeatures = $root.google.protobuf.FeatureSet.toObject(message.overridableFeatures, options); - if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) - object.fixedFeatures = $root.google.protobuf.FeatureSet.toObject(message.fixedFeatures, options); + if (message.overridableFeatures != null && Object.hasOwnProperty.call(message, "overridableFeatures")) + object.overridableFeatures = $root.google.protobuf.FeatureSet.toObject(message.overridableFeatures, options, q + 1); + if (message.fixedFeatures != null && Object.hasOwnProperty.call(message, "fixedFeatures")) + object.fixedFeatures = $root.google.protobuf.FeatureSet.toObject(message.fixedFeatures, options, q + 1); return object; }; @@ -48335,12 +49683,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - SourceCodeInfo.encode = function encode(message, writer) { + SourceCodeInfo.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.location != null && message.location.length) for (var i = 0; i < message.location.length; ++i) - $root.google.protobuf.SourceCodeInfo.Location.encode(message.location[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.SourceCodeInfo.Location.encode(message.location[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -48354,7 +49706,7 @@ * @returns {$protobuf.Writer} Writer */ SourceCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -48426,7 +49778,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.location != null && message.hasOwnProperty("location")) { + if (message.location != null && Object.hasOwnProperty.call(message, "location")) { if (!Array.isArray(message.location)) return "location: array expected"; for (var i = 0; i < message.location.length; ++i) { @@ -48449,6 +49801,8 @@ SourceCodeInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.SourceCodeInfo) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.SourceCodeInfo: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -48459,7 +49813,7 @@ throw TypeError(".google.protobuf.SourceCodeInfo.location: array expected"); message.location = []; for (var i = 0; i < object.location.length; ++i) { - if (typeof object.location[i] !== "object") + if (!$util.isObject(object.location[i])) throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected"); message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i], long + 1); } @@ -48476,16 +49830,20 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - SourceCodeInfo.toObject = function toObject(message, options) { + SourceCodeInfo.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.location = []; if (message.location && message.location.length) { object.location = []; for (var j = 0; j < message.location.length; ++j) - object.location[j] = $root.google.protobuf.SourceCodeInfo.Location.toObject(message.location[j], options); + object.location[j] = $root.google.protobuf.SourceCodeInfo.Location.toObject(message.location[j], options, q + 1); } return object; }; @@ -48608,9 +49966,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Location.encode = function encode(message, writer) { + Location.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.path != null && message.path.length) { writer.uint32(/* id 1, wireType 2 =*/10).fork(); for (var i = 0; i < message.path.length; ++i) @@ -48643,7 +50005,7 @@ * @returns {$protobuf.Writer} Writer */ Location.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -48745,27 +50107,27 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.path != null && message.hasOwnProperty("path")) { + if (message.path != null && Object.hasOwnProperty.call(message, "path")) { if (!Array.isArray(message.path)) return "path: array expected"; for (var i = 0; i < message.path.length; ++i) if (!$util.isInteger(message.path[i])) return "path: integer[] expected"; } - if (message.span != null && message.hasOwnProperty("span")) { + if (message.span != null && Object.hasOwnProperty.call(message, "span")) { if (!Array.isArray(message.span)) return "span: array expected"; for (var i = 0; i < message.span.length; ++i) if (!$util.isInteger(message.span[i])) return "span: integer[] expected"; } - if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + if (message.leadingComments != null && Object.hasOwnProperty.call(message, "leadingComments")) if (!$util.isString(message.leadingComments)) return "leadingComments: string expected"; - if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + if (message.trailingComments != null && Object.hasOwnProperty.call(message, "trailingComments")) if (!$util.isString(message.trailingComments)) return "trailingComments: string expected"; - if (message.leadingDetachedComments != null && message.hasOwnProperty("leadingDetachedComments")) { + if (message.leadingDetachedComments != null && Object.hasOwnProperty.call(message, "leadingDetachedComments")) { if (!Array.isArray(message.leadingDetachedComments)) return "leadingDetachedComments: array expected"; for (var i = 0; i < message.leadingDetachedComments.length; ++i) @@ -48786,6 +50148,8 @@ Location.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.SourceCodeInfo.Location) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -48828,9 +50192,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Location.toObject = function toObject(message, options) { + Location.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) { object.path = []; @@ -48851,9 +50219,9 @@ for (var j = 0; j < message.span.length; ++j) object.span[j] = message.span[j]; } - if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + if (message.leadingComments != null && Object.hasOwnProperty.call(message, "leadingComments")) object.leadingComments = message.leadingComments; - if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + if (message.trailingComments != null && Object.hasOwnProperty.call(message, "trailingComments")) object.trailingComments = message.trailingComments; if (message.leadingDetachedComments && message.leadingDetachedComments.length) { object.leadingDetachedComments = []; @@ -48949,12 +50317,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - GeneratedCodeInfo.encode = function encode(message, writer) { + GeneratedCodeInfo.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.annotation != null && message.annotation.length) for (var i = 0; i < message.annotation.length; ++i) - $root.google.protobuf.GeneratedCodeInfo.Annotation.encode(message.annotation[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.GeneratedCodeInfo.Annotation.encode(message.annotation[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -48968,7 +50340,7 @@ * @returns {$protobuf.Writer} Writer */ GeneratedCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -49040,7 +50412,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.annotation != null && message.hasOwnProperty("annotation")) { + if (message.annotation != null && Object.hasOwnProperty.call(message, "annotation")) { if (!Array.isArray(message.annotation)) return "annotation: array expected"; for (var i = 0; i < message.annotation.length; ++i) { @@ -49063,6 +50435,8 @@ GeneratedCodeInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.GeneratedCodeInfo) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.GeneratedCodeInfo: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -49073,7 +50447,7 @@ throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: array expected"); message.annotation = []; for (var i = 0; i < object.annotation.length; ++i) { - if (typeof object.annotation[i] !== "object") + if (!$util.isObject(object.annotation[i])) throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected"); message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i], long + 1); } @@ -49090,16 +50464,20 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - GeneratedCodeInfo.toObject = function toObject(message, options) { + GeneratedCodeInfo.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.annotation = []; if (message.annotation && message.annotation.length) { object.annotation = []; for (var j = 0; j < message.annotation.length; ++j) - object.annotation[j] = $root.google.protobuf.GeneratedCodeInfo.Annotation.toObject(message.annotation[j], options); + object.annotation[j] = $root.google.protobuf.GeneratedCodeInfo.Annotation.toObject(message.annotation[j], options, q + 1); } return object; }; @@ -49220,9 +50598,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Annotation.encode = function encode(message, writer) { + Annotation.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.path != null && message.path.length) { writer.uint32(/* id 1, wireType 2 =*/10).fork(); for (var i = 0; i < message.path.length; ++i) @@ -49250,7 +50632,7 @@ * @returns {$protobuf.Writer} Writer */ Annotation.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -49343,23 +50725,23 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.path != null && message.hasOwnProperty("path")) { + if (message.path != null && Object.hasOwnProperty.call(message, "path")) { if (!Array.isArray(message.path)) return "path: array expected"; for (var i = 0; i < message.path.length; ++i) if (!$util.isInteger(message.path[i])) return "path: integer[] expected"; } - if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + if (message.sourceFile != null && Object.hasOwnProperty.call(message, "sourceFile")) if (!$util.isString(message.sourceFile)) return "sourceFile: string expected"; - if (message.begin != null && message.hasOwnProperty("begin")) + if (message.begin != null && Object.hasOwnProperty.call(message, "begin")) if (!$util.isInteger(message.begin)) return "begin: integer expected"; - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) if (!$util.isInteger(message.end)) return "end: integer expected"; - if (message.semantic != null && message.hasOwnProperty("semantic")) + if (message.semantic != null && Object.hasOwnProperty.call(message, "semantic")) switch (message.semantic) { default: return "semantic: enum value expected"; @@ -49382,6 +50764,8 @@ Annotation.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.GeneratedCodeInfo.Annotation: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -49432,9 +50816,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Annotation.toObject = function toObject(message, options) { + Annotation.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.path = []; @@ -49449,13 +50837,13 @@ for (var j = 0; j < message.path.length; ++j) object.path[j] = message.path[j]; } - if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + if (message.sourceFile != null && Object.hasOwnProperty.call(message, "sourceFile")) object.sourceFile = message.sourceFile; - if (message.begin != null && message.hasOwnProperty("begin")) + if (message.begin != null && Object.hasOwnProperty.call(message, "begin")) object.begin = message.begin; - if (message.end != null && message.hasOwnProperty("end")) + if (message.end != null && Object.hasOwnProperty.call(message, "end")) object.end = message.end; - if (message.semantic != null && message.hasOwnProperty("semantic")) + if (message.semantic != null && Object.hasOwnProperty.call(message, "semantic")) object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] === undefined ? message.semantic : $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic; return object; }; @@ -49586,9 +50974,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Duration.encode = function encode(message, writer) { + Duration.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) @@ -49606,7 +50998,7 @@ * @returns {$protobuf.Writer} Writer */ Duration.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -49680,10 +51072,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.seconds != null && message.hasOwnProperty("seconds")) + if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) return "seconds: integer|Long expected"; - if (message.nanos != null && message.hasOwnProperty("nanos")) + if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) if (!$util.isInteger(message.nanos)) return "nanos: integer expected"; return null; @@ -49700,6 +51092,8 @@ Duration.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Duration) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.Duration: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -49707,7 +51101,7 @@ var message = new $root.google.protobuf.Duration(); if (object.seconds != null) if ($util.Long) - (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false; + message.seconds = $util.Long.fromValue(object.seconds, false); else if (typeof object.seconds === "string") message.seconds = parseInt(object.seconds, 10); else if (typeof object.seconds === "number") @@ -49728,24 +51122,30 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Duration.toObject = function toObject(message, options) { + Duration.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, false); - object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.seconds = options.longs === String ? "0" : 0; + object.seconds = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; object.nanos = 0; } - if (message.seconds != null && message.hasOwnProperty("seconds")) - if (typeof message.seconds === "number") + if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.seconds = typeof message.seconds === "number" ? BigInt(message.seconds) : $util.Long.fromBits(message.seconds.low >>> 0, message.seconds.high >>> 0, false).toBigInt(); + else if (typeof message.seconds === "number") object.seconds = options.longs === String ? String(message.seconds) : message.seconds; else object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds; - if (message.nanos != null && message.hasOwnProperty("nanos")) + if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) object.nanos = message.nanos; return object; }; @@ -49823,9 +51223,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Empty.encode = function encode(message, writer) { + Empty.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); return writer; }; @@ -49839,7 +51243,7 @@ * @returns {$protobuf.Writer} Writer */ Empty.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -49919,10 +51323,6 @@ Empty.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Empty) return object; - if (long === undefined) - long = 0; - if (long > $util.recursionLimit) - throw Error("maximum nesting depth exceeded"); return new $root.google.protobuf.Empty(); }; @@ -50022,9 +51422,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - FieldMask.encode = function encode(message, writer) { + FieldMask.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.paths != null && message.paths.length) for (var i = 0; i < message.paths.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.paths[i]); @@ -50041,7 +51445,7 @@ * @returns {$protobuf.Writer} Writer */ FieldMask.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -50113,7 +51517,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.paths != null && message.hasOwnProperty("paths")) { + if (message.paths != null && Object.hasOwnProperty.call(message, "paths")) { if (!Array.isArray(message.paths)) return "paths: array expected"; for (var i = 0; i < message.paths.length; ++i) @@ -50134,6 +51538,8 @@ FieldMask.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldMask) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.FieldMask: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -50158,9 +51564,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - FieldMask.toObject = function toObject(message, options) { + FieldMask.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.paths = []; @@ -50255,13 +51665,17 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Struct.encode = function encode(message, writer) { + Struct.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.fields != null && Object.hasOwnProperty.call(message, "fields")) for (var keys = Object.keys(message.fields), i = 0; i < keys.length; ++i) { writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]); - $root.google.protobuf.Value.encode(message.fields[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + $root.google.protobuf.Value.encode(message.fields[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork(), q + 1).ldelim().ldelim(); } return writer; }; @@ -50276,7 +51690,7 @@ * @returns {$protobuf.Writer} Writer */ Struct.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -50367,7 +51781,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.fields != null && message.hasOwnProperty("fields")) { + if (message.fields != null && Object.hasOwnProperty.call(message, "fields")) { if (!$util.isObject(message.fields)) return "fields: object expected"; var key = Object.keys(message.fields); @@ -50391,19 +51805,21 @@ Struct.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Struct) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.Struct: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.Struct(); if (object.fields) { - if (typeof object.fields !== "object") + if (!$util.isObject(object.fields)) throw TypeError(".google.protobuf.Struct.fields: object expected"); message.fields = {}; for (var keys = Object.keys(object.fields), i = 0; i < keys.length; ++i) { if (keys[i] === "__proto__") $util.makeProp(message.fields, keys[i]); - if (typeof object.fields[keys[i]] !== "object") + if (!$util.isObject(object.fields[keys[i]])) throw TypeError(".google.protobuf.Struct.fields: object expected"); message.fields[keys[i]] = $root.google.protobuf.Value.fromObject(object.fields[keys[i]], long + 1); } @@ -50420,9 +51836,13 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Struct.toObject = function toObject(message, options) { + Struct.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.objects || options.defaults) object.fields = {}; @@ -50432,7 +51852,7 @@ for (var j = 0; j < keys2.length; ++j) { if (keys2[j] === "__proto__") $util.makeProp(object.fields, keys2[j]); - object.fields[keys2[j]] = $root.google.protobuf.Value.toObject(message.fields[keys2[j]], options); + object.fields[keys2[j]] = $root.google.protobuf.Value.toObject(message.fields[keys2[j]], options, q + 1); } } return object; @@ -50579,9 +51999,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Value.encode = function encode(message, writer) { + Value.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.nullValue); if (message.numberValue != null && Object.hasOwnProperty.call(message, "numberValue")) @@ -50591,9 +52015,9 @@ if (message.boolValue != null && Object.hasOwnProperty.call(message, "boolValue")) writer.uint32(/* id 4, wireType 0 =*/32).bool(message.boolValue); if (message.structValue != null && Object.hasOwnProperty.call(message, "structValue")) - $root.google.protobuf.Struct.encode(message.structValue, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + $root.google.protobuf.Struct.encode(message.structValue, writer.uint32(/* id 5, wireType 2 =*/42).fork(), q + 1).ldelim(); if (message.listValue != null && Object.hasOwnProperty.call(message, "listValue")) - $root.google.protobuf.ListValue.encode(message.listValue, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + $root.google.protobuf.ListValue.encode(message.listValue, writer.uint32(/* id 6, wireType 2 =*/50).fork(), q + 1).ldelim(); return writer; }; @@ -50607,7 +52031,7 @@ * @returns {$protobuf.Writer} Writer */ Value.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -50698,7 +52122,7 @@ if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; var properties = {}; - if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) { properties.kind = 1; switch (message.nullValue) { default: @@ -50707,28 +52131,28 @@ break; } } - if (message.numberValue != null && message.hasOwnProperty("numberValue")) { + if (message.numberValue != null && Object.hasOwnProperty.call(message, "numberValue")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; if (typeof message.numberValue !== "number") return "numberValue: number expected"; } - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; if (!$util.isString(message.stringValue)) return "stringValue: string expected"; } - if (message.boolValue != null && message.hasOwnProperty("boolValue")) { + if (message.boolValue != null && Object.hasOwnProperty.call(message, "boolValue")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; if (typeof message.boolValue !== "boolean") return "boolValue: boolean expected"; } - if (message.structValue != null && message.hasOwnProperty("structValue")) { + if (message.structValue != null && Object.hasOwnProperty.call(message, "structValue")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; @@ -50738,7 +52162,7 @@ return "structValue." + error; } } - if (message.listValue != null && message.hasOwnProperty("listValue")) { + if (message.listValue != null && Object.hasOwnProperty.call(message, "listValue")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; @@ -50762,6 +52186,8 @@ Value.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Value) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.Value: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -50786,12 +52212,12 @@ if (object.boolValue != null) message.boolValue = Boolean(object.boolValue); if (object.structValue != null) { - if (typeof object.structValue !== "object") + if (!$util.isObject(object.structValue)) throw TypeError(".google.protobuf.Value.structValue: object expected"); message.structValue = $root.google.protobuf.Struct.fromObject(object.structValue, long + 1); } if (object.listValue != null) { - if (typeof object.listValue !== "object") + if (!$util.isObject(object.listValue)) throw TypeError(".google.protobuf.Value.listValue: object expected"); message.listValue = $root.google.protobuf.ListValue.fromObject(object.listValue, long + 1); } @@ -50807,37 +52233,41 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Value.toObject = function toObject(message, options) { + Value.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; - if (message.nullValue != null && message.hasOwnProperty("nullValue")) { + if (message.nullValue != null && Object.hasOwnProperty.call(message, "nullValue")) { object.nullValue = options.enums === String ? $root.google.protobuf.NullValue[message.nullValue] === undefined ? message.nullValue : $root.google.protobuf.NullValue[message.nullValue] : message.nullValue; if (options.oneofs) object.kind = "nullValue"; } - if (message.numberValue != null && message.hasOwnProperty("numberValue")) { + if (message.numberValue != null && Object.hasOwnProperty.call(message, "numberValue")) { object.numberValue = options.json && !isFinite(message.numberValue) ? String(message.numberValue) : message.numberValue; if (options.oneofs) object.kind = "numberValue"; } - if (message.stringValue != null && message.hasOwnProperty("stringValue")) { + if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue")) { object.stringValue = message.stringValue; if (options.oneofs) object.kind = "stringValue"; } - if (message.boolValue != null && message.hasOwnProperty("boolValue")) { + if (message.boolValue != null && Object.hasOwnProperty.call(message, "boolValue")) { object.boolValue = message.boolValue; if (options.oneofs) object.kind = "boolValue"; } - if (message.structValue != null && message.hasOwnProperty("structValue")) { - object.structValue = $root.google.protobuf.Struct.toObject(message.structValue, options); + if (message.structValue != null && Object.hasOwnProperty.call(message, "structValue")) { + object.structValue = $root.google.protobuf.Struct.toObject(message.structValue, options, q + 1); if (options.oneofs) object.kind = "structValue"; } - if (message.listValue != null && message.hasOwnProperty("listValue")) { - object.listValue = $root.google.protobuf.ListValue.toObject(message.listValue, options); + if (message.listValue != null && Object.hasOwnProperty.call(message, "listValue")) { + object.listValue = $root.google.protobuf.ListValue.toObject(message.listValue, options, q + 1); if (options.oneofs) object.kind = "listValue"; } @@ -50939,12 +52369,16 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - ListValue.encode = function encode(message, writer) { + ListValue.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.values != null && message.values.length) for (var i = 0; i < message.values.length; ++i) - $root.google.protobuf.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + $root.google.protobuf.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork(), q + 1).ldelim(); return writer; }; @@ -50958,7 +52392,7 @@ * @returns {$protobuf.Writer} Writer */ ListValue.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -51030,7 +52464,7 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.values != null && message.hasOwnProperty("values")) { + if (message.values != null && Object.hasOwnProperty.call(message, "values")) { if (!Array.isArray(message.values)) return "values: array expected"; for (var i = 0; i < message.values.length; ++i) { @@ -51053,6 +52487,8 @@ ListValue.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ListValue) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.ListValue: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -51063,7 +52499,7 @@ throw TypeError(".google.protobuf.ListValue.values: array expected"); message.values = []; for (var i = 0; i < object.values.length; ++i) { - if (typeof object.values[i] !== "object") + if (!$util.isObject(object.values[i])) throw TypeError(".google.protobuf.ListValue.values: object expected"); message.values[i] = $root.google.protobuf.Value.fromObject(object.values[i], long + 1); } @@ -51080,16 +52516,20 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - ListValue.toObject = function toObject(message, options) { + ListValue.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.arrays || options.defaults) object.values = []; if (message.values && message.values.length) { object.values = []; for (var j = 0; j < message.values.length; ++j) - object.values[j] = $root.google.protobuf.Value.toObject(message.values[j], options); + object.values[j] = $root.google.protobuf.Value.toObject(message.values[j], options, q + 1); } return object; }; @@ -51185,9 +52625,13 @@ * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Timestamp.encode = function encode(message, writer) { + Timestamp.encode = function encode(message, writer, q) { if (!writer) writer = $Writer.create(); + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) @@ -51205,7 +52649,7 @@ * @returns {$protobuf.Writer} Writer */ Timestamp.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); + return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim(); }; /** @@ -51279,10 +52723,10 @@ long = 0; if (long > $util.recursionLimit) return "maximum nesting depth exceeded"; - if (message.seconds != null && message.hasOwnProperty("seconds")) + if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) return "seconds: integer|Long expected"; - if (message.nanos != null && message.hasOwnProperty("nanos")) + if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) if (!$util.isInteger(message.nanos)) return "nanos: integer expected"; return null; @@ -51299,6 +52743,8 @@ Timestamp.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Timestamp) return object; + if (!$util.isObject(object)) + throw TypeError(".google.protobuf.Timestamp: object expected"); if (long === undefined) long = 0; if (long > $util.recursionLimit) @@ -51306,7 +52752,7 @@ var message = new $root.google.protobuf.Timestamp(); if (object.seconds != null) if ($util.Long) - (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false; + message.seconds = $util.Long.fromValue(object.seconds, false); else if (typeof object.seconds === "string") message.seconds = parseInt(object.seconds, 10); else if (typeof object.seconds === "number") @@ -51327,24 +52773,30 @@ * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Timestamp.toObject = function toObject(message, options) { + Timestamp.toObject = function toObject(message, options, q) { if (!options) options = {}; + if (q === undefined) + q = 0; + if (q > $util.recursionLimit) + throw Error("max depth exceeded"); var object = {}; if (options.defaults) { if ($util.Long) { var long = new $util.Long(0, 0, false); - object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : typeof BigInt !== "undefined" && options.longs === BigInt ? long.toBigInt() : long; } else - object.seconds = options.longs === String ? "0" : 0; + object.seconds = options.longs === String ? "0" : typeof BigInt !== "undefined" && options.longs === BigInt ? BigInt("0") : 0; object.nanos = 0; } - if (message.seconds != null && message.hasOwnProperty("seconds")) - if (typeof message.seconds === "number") + if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds")) + if (typeof BigInt !== "undefined" && options.longs === BigInt) + object.seconds = typeof message.seconds === "number" ? BigInt(message.seconds) : $util.Long.fromBits(message.seconds.low >>> 0, message.seconds.high >>> 0, false).toBigInt(); + else if (typeof message.seconds === "number") object.seconds = options.longs === String ? String(message.seconds) : message.seconds; else object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds; - if (message.nanos != null && message.hasOwnProperty("nanos")) + if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos")) object.nanos = message.nanos; return object; }; diff --git a/handwritten/pubsub/protos/protos.json b/handwritten/pubsub/protos/protos.json index d377e386e9f0..9e26dfeeb6e6 100644 --- a/handwritten/pubsub/protos/protos.json +++ b/handwritten/pubsub/protos/protos.json @@ -1,5588 +1 @@ -{ - "nested": { - "google": { - "nested": { - "pubsub": { - "nested": { - "v1": { - "options": { - "csharp_namespace": "Google.Cloud.PubSub.V1", - "go_package": "cloud.google.com/go/pubsub/v2/apiv1/pubsubpb;pubsubpb", - "java_multiple_files": true, - "java_outer_classname": "SchemaProto", - "java_package": "com.google.pubsub.v1", - "php_namespace": "Google\\Cloud\\PubSub\\V1", - "ruby_package": "Google::Cloud::PubSub::V1", - "(google.api.resource_definition).type": "analyticshub.googleapis.com/Listing", - "(google.api.resource_definition).pattern": "projects/{project}/locations/{location}/dataExchanges/{data_exchange}/listings/{listing}" - }, - "nested": { - "Publisher": { - "options": { - "(google.api.default_host)": "pubsub.googleapis.com", - "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsub" - }, - "methods": { - "CreateTopic": { - "requestType": "Topic", - "responseType": "Topic", - "options": { - "(google.api.http).put": "/v1/{name=projects/*/topics/*}", - "(google.api.http).body": "*", - "(google.api.method_signature)": "name" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "put": "/v1/{name=projects/*/topics/*}", - "body": "*" - } - }, - { - "(google.api.method_signature)": "name" - } - ] - }, - "UpdateTopic": { - "requestType": "UpdateTopicRequest", - "responseType": "Topic", - "options": { - "(google.api.http).patch": "/v1/{topic.name=projects/*/topics/*}", - "(google.api.http).body": "*", - "(google.api.method_signature)": "topic,update_mask" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "patch": "/v1/{topic.name=projects/*/topics/*}", - "body": "*" - } - }, - { - "(google.api.method_signature)": "topic,update_mask" - } - ] - }, - "Publish": { - "requestType": "PublishRequest", - "responseType": "PublishResponse", - "options": { - "(google.api.http).post": "/v1/{topic=projects/*/topics/*}:publish", - "(google.api.http).body": "*", - "(google.api.method_signature)": "topic,messages" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{topic=projects/*/topics/*}:publish", - "body": "*" - } - }, - { - "(google.api.method_signature)": "topic,messages" - } - ] - }, - "GetTopic": { - "requestType": "GetTopicRequest", - "responseType": "Topic", - "options": { - "(google.api.http).get": "/v1/{topic=projects/*/topics/*}", - "(google.api.method_signature)": "topic" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{topic=projects/*/topics/*}" - } - }, - { - "(google.api.method_signature)": "topic" - } - ] - }, - "ListTopics": { - "requestType": "ListTopicsRequest", - "responseType": "ListTopicsResponse", - "options": { - "(google.api.http).get": "/v1/{project=projects/*}/topics", - "(google.api.method_signature)": "project" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{project=projects/*}/topics" - } - }, - { - "(google.api.method_signature)": "project" - } - ] - }, - "ListTopicSubscriptions": { - "requestType": "ListTopicSubscriptionsRequest", - "responseType": "ListTopicSubscriptionsResponse", - "options": { - "(google.api.http).get": "/v1/{topic=projects/*/topics/*}/subscriptions", - "(google.api.method_signature)": "topic" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{topic=projects/*/topics/*}/subscriptions" - } - }, - { - "(google.api.method_signature)": "topic" - } - ] - }, - "ListTopicSnapshots": { - "requestType": "ListTopicSnapshotsRequest", - "responseType": "ListTopicSnapshotsResponse", - "options": { - "(google.api.http).get": "/v1/{topic=projects/*/topics/*}/snapshots", - "(google.api.method_signature)": "topic" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{topic=projects/*/topics/*}/snapshots" - } - }, - { - "(google.api.method_signature)": "topic" - } - ] - }, - "DeleteTopic": { - "requestType": "DeleteTopicRequest", - "responseType": "google.protobuf.Empty", - "options": { - "(google.api.http).delete": "/v1/{topic=projects/*/topics/*}", - "(google.api.method_signature)": "topic" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "delete": "/v1/{topic=projects/*/topics/*}" - } - }, - { - "(google.api.method_signature)": "topic" - } - ] - }, - "DetachSubscription": { - "requestType": "DetachSubscriptionRequest", - "responseType": "DetachSubscriptionResponse", - "options": { - "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:detach" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{subscription=projects/*/subscriptions/*}:detach" - } - } - ] - } - } - }, - "MessageStoragePolicy": { - "fields": { - "allowedPersistenceRegions": { - "rule": "repeated", - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "enforceInTransit": { - "type": "bool", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "SchemaSettings": { - "fields": { - "schema": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" - } - }, - "encoding": { - "type": "Encoding", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "firstRevisionId": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "lastRevisionId": { - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "IngestionDataSourceSettings": { - "oneofs": { - "source": { - "oneof": [ - "awsKinesis", - "cloudStorage", - "azureEventHubs", - "awsMsk", - "confluentCloud" - ] - } - }, - "fields": { - "awsKinesis": { - "type": "AwsKinesis", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "cloudStorage": { - "type": "CloudStorage", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "azureEventHubs": { - "type": "AzureEventHubs", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "awsMsk": { - "type": "AwsMsk", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "confluentCloud": { - "type": "ConfluentCloud", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "platformLogsSettings": { - "type": "PlatformLogsSettings", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "AwsKinesis": { - "fields": { - "state": { - "type": "State", - "id": 1, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "streamArn": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "consumerArn": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "awsRoleArn": { - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "gcpServiceAccount": { - "type": "string", - "id": 5, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "KINESIS_PERMISSION_DENIED": 2, - "PUBLISH_PERMISSION_DENIED": 3, - "STREAM_NOT_FOUND": 4, - "CONSUMER_NOT_FOUND": 5 - } - } - } - }, - "CloudStorage": { - "oneofs": { - "inputFormat": { - "oneof": [ - "textFormat", - "avroFormat", - "pubsubAvroFormat" - ] - } - }, - "fields": { - "state": { - "type": "State", - "id": 1, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "bucket": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "textFormat": { - "type": "TextFormat", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "avroFormat": { - "type": "AvroFormat", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "pubsubAvroFormat": { - "type": "PubSubAvroFormat", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "minimumObjectCreateTime": { - "type": "google.protobuf.Timestamp", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "matchGlob": { - "type": "string", - "id": 9, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "CLOUD_STORAGE_PERMISSION_DENIED": 2, - "PUBLISH_PERMISSION_DENIED": 3, - "BUCKET_NOT_FOUND": 4, - "TOO_MANY_OBJECTS": 5 - } - }, - "TextFormat": { - "oneofs": { - "_delimiter": { - "oneof": [ - "delimiter" - ] - } - }, - "fields": { - "delimiter": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL", - "proto3_optional": true - } - } - } - }, - "AvroFormat": { - "fields": {} - }, - "PubSubAvroFormat": { - "fields": {} - } - } - }, - "AzureEventHubs": { - "fields": { - "state": { - "type": "State", - "id": 1, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "resourceGroup": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "namespace": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "eventHub": { - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "clientId": { - "type": "string", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "tenantId": { - "type": "string", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "subscriptionId": { - "type": "string", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "gcpServiceAccount": { - "type": "string", - "id": 8, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "EVENT_HUBS_PERMISSION_DENIED": 2, - "PUBLISH_PERMISSION_DENIED": 3, - "NAMESPACE_NOT_FOUND": 4, - "EVENT_HUB_NOT_FOUND": 5, - "SUBSCRIPTION_NOT_FOUND": 6, - "RESOURCE_GROUP_NOT_FOUND": 7 - } - } - } - }, - "AwsMsk": { - "fields": { - "state": { - "type": "State", - "id": 1, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "clusterArn": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "topic": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - }, - "awsRoleArn": { - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "gcpServiceAccount": { - "type": "string", - "id": 5, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "MSK_PERMISSION_DENIED": 2, - "PUBLISH_PERMISSION_DENIED": 3, - "CLUSTER_NOT_FOUND": 4, - "TOPIC_NOT_FOUND": 5 - } - } - } - }, - "ConfluentCloud": { - "fields": { - "state": { - "type": "State", - "id": 1, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "bootstrapServer": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "clusterId": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "topic": { - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "identityPoolId": { - "type": "string", - "id": 5, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "gcpServiceAccount": { - "type": "string", - "id": 6, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "CONFLUENT_CLOUD_PERMISSION_DENIED": 2, - "PUBLISH_PERMISSION_DENIED": 3, - "UNREACHABLE_BOOTSTRAP_SERVER": 4, - "CLUSTER_NOT_FOUND": 5, - "TOPIC_NOT_FOUND": 6 - } - } - } - } - } - }, - "PlatformLogsSettings": { - "fields": { - "severity": { - "type": "Severity", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "Severity": { - "values": { - "SEVERITY_UNSPECIFIED": 0, - "DISABLED": 1, - "DEBUG": 2, - "INFO": 3, - "WARNING": 4, - "ERROR": 5 - } - } - } - }, - "IngestionFailureEvent": { - "oneofs": { - "failure": { - "oneof": [ - "cloudStorageFailure", - "awsMskFailure", - "azureEventHubsFailure", - "confluentCloudFailure", - "awsKinesisFailure" - ] - } - }, - "fields": { - "topic": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - }, - "errorMessage": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "cloudStorageFailure": { - "type": "CloudStorageFailure", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "awsMskFailure": { - "type": "AwsMskFailureReason", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "azureEventHubsFailure": { - "type": "AzureEventHubsFailureReason", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "confluentCloudFailure": { - "type": "ConfluentCloudFailureReason", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "awsKinesisFailure": { - "type": "AwsKinesisFailureReason", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "ApiViolationReason": { - "fields": {} - }, - "AvroFailureReason": { - "fields": {} - }, - "SchemaViolationReason": { - "fields": {} - }, - "MessageTransformationFailureReason": { - "fields": {} - }, - "CloudStorageFailure": { - "oneofs": { - "reason": { - "oneof": [ - "avroFailureReason", - "apiViolationReason", - "schemaViolationReason", - "messageTransformationFailureReason" - ] - } - }, - "fields": { - "bucket": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "objectName": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "objectGeneration": { - "type": "int64", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "avroFailureReason": { - "type": "AvroFailureReason", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "apiViolationReason": { - "type": "ApiViolationReason", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "schemaViolationReason": { - "type": "SchemaViolationReason", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageTransformationFailureReason": { - "type": "MessageTransformationFailureReason", - "id": 8, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "AwsMskFailureReason": { - "oneofs": { - "reason": { - "oneof": [ - "apiViolationReason", - "schemaViolationReason", - "messageTransformationFailureReason" - ] - } - }, - "fields": { - "clusterArn": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "kafkaTopic": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "partitionId": { - "type": "int64", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "offset": { - "type": "int64", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "apiViolationReason": { - "type": "ApiViolationReason", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "schemaViolationReason": { - "type": "SchemaViolationReason", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageTransformationFailureReason": { - "type": "MessageTransformationFailureReason", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "AzureEventHubsFailureReason": { - "oneofs": { - "reason": { - "oneof": [ - "apiViolationReason", - "schemaViolationReason", - "messageTransformationFailureReason" - ] - } - }, - "fields": { - "namespace": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "eventHub": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "partitionId": { - "type": "int64", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "offset": { - "type": "int64", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "apiViolationReason": { - "type": "ApiViolationReason", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "schemaViolationReason": { - "type": "SchemaViolationReason", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageTransformationFailureReason": { - "type": "MessageTransformationFailureReason", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ConfluentCloudFailureReason": { - "oneofs": { - "reason": { - "oneof": [ - "apiViolationReason", - "schemaViolationReason", - "messageTransformationFailureReason" - ] - } - }, - "fields": { - "clusterId": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "kafkaTopic": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "partitionId": { - "type": "int64", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "offset": { - "type": "int64", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "apiViolationReason": { - "type": "ApiViolationReason", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "schemaViolationReason": { - "type": "SchemaViolationReason", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageTransformationFailureReason": { - "type": "MessageTransformationFailureReason", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "AwsKinesisFailureReason": { - "oneofs": { - "reason": { - "oneof": [ - "schemaViolationReason", - "messageTransformationFailureReason", - "apiViolationReason" - ] - } - }, - "fields": { - "streamArn": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "partitionKey": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "sequenceNumber": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "schemaViolationReason": { - "type": "SchemaViolationReason", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageTransformationFailureReason": { - "type": "MessageTransformationFailureReason", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "apiViolationReason": { - "type": "ApiViolationReason", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - } - } - }, - "JavaScriptUDF": { - "fields": { - "functionName": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "code": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "AIInference": { - "oneofs": { - "inferenceMode": { - "oneof": [ - "unstructuredInference" - ] - } - }, - "fields": { - "endpoint": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "unstructuredInference": { - "type": "UnstructuredInference", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "serviceAccountEmail": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "UnstructuredInference": { - "fields": { - "parameters": { - "type": "google.protobuf.Struct", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - } - } - }, - "MessageTransform": { - "oneofs": { - "transform": { - "oneof": [ - "javascriptUdf", - "aiInference" - ] - } - }, - "fields": { - "javascriptUdf": { - "type": "JavaScriptUDF", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "aiInference": { - "type": "AIInference", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "enabled": { - "type": "bool", - "id": 3, - "options": { - "deprecated": true, - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "disabled": { - "type": "bool", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "Topic": { - "options": { - "(google.api.resource).type": "pubsub.googleapis.com/Topic", - "(google.api.resource).pattern": "_deleted-topic_", - "(google.api.resource).plural": "topics", - "(google.api.resource).singular": "topic" - }, - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "IDENTIFIER" - } - }, - "labels": { - "keyType": "string", - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageStoragePolicy": { - "type": "MessageStoragePolicy", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "kmsKeyName": { - "type": "string", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL", - "(google.api.resource_reference).type": "cloudkms.googleapis.com/CryptoKey" - } - }, - "schemaSettings": { - "type": "SchemaSettings", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "satisfiesPzs": { - "type": "bool", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageRetentionDuration": { - "type": "google.protobuf.Duration", - "id": 8, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "state": { - "type": "State", - "id": 9, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "ingestionDataSourceSettings": { - "type": "IngestionDataSourceSettings", - "id": 10, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageTransforms": { - "rule": "repeated", - "type": "MessageTransform", - "id": 13, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "tags": { - "keyType": "string", - "type": "string", - "id": 14, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "INGESTION_RESOURCE_ERROR": 2 - } - } - } - }, - "PubsubMessage": { - "fields": { - "data": { - "type": "bytes", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "attributes": { - "keyType": "string", - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageId": { - "type": "string", - "id": 3 - }, - "publishTime": { - "type": "google.protobuf.Timestamp", - "id": 4 - }, - "orderingKey": { - "type": "string", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "GetTopicRequest": { - "fields": { - "topic": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - } - } - }, - "UpdateTopicRequest": { - "fields": { - "topic": { - "type": "Topic", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "updateMask": { - "type": "google.protobuf.FieldMask", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "PublishRequest": { - "fields": { - "topic": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - }, - "messages": { - "rule": "repeated", - "type": "PubsubMessage", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "PublishResponse": { - "fields": { - "messageIds": { - "rule": "repeated", - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ListTopicsRequest": { - "fields": { - "project": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" - } - }, - "pageSize": { - "type": "int32", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "pageToken": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ListTopicsResponse": { - "fields": { - "topics": { - "rule": "repeated", - "type": "Topic", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "nextPageToken": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ListTopicSubscriptionsRequest": { - "fields": { - "topic": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - }, - "pageSize": { - "type": "int32", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "pageToken": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ListTopicSubscriptionsResponse": { - "fields": { - "subscriptions": { - "rule": "repeated", - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - }, - "nextPageToken": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ListTopicSnapshotsRequest": { - "fields": { - "topic": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - }, - "pageSize": { - "type": "int32", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "pageToken": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ListTopicSnapshotsResponse": { - "fields": { - "snapshots": { - "rule": "repeated", - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" - } - }, - "nextPageToken": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "DeleteTopicRequest": { - "fields": { - "topic": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - } - } - }, - "DetachSubscriptionRequest": { - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - } - } - }, - "DetachSubscriptionResponse": { - "fields": {} - }, - "Subscriber": { - "options": { - "(google.api.default_host)": "pubsub.googleapis.com", - "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsub" - }, - "methods": { - "CreateSubscription": { - "requestType": "Subscription", - "responseType": "Subscription", - "options": { - "(google.api.http).put": "/v1/{name=projects/*/subscriptions/*}", - "(google.api.http).body": "*", - "(google.api.method_signature)": "name,topic,push_config,ack_deadline_seconds" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "put": "/v1/{name=projects/*/subscriptions/*}", - "body": "*" - } - }, - { - "(google.api.method_signature)": "name,topic,push_config,ack_deadline_seconds" - } - ] - }, - "GetSubscription": { - "requestType": "GetSubscriptionRequest", - "responseType": "Subscription", - "options": { - "(google.api.http).get": "/v1/{subscription=projects/*/subscriptions/*}", - "(google.api.method_signature)": "subscription" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{subscription=projects/*/subscriptions/*}" - } - }, - { - "(google.api.method_signature)": "subscription" - } - ] - }, - "UpdateSubscription": { - "requestType": "UpdateSubscriptionRequest", - "responseType": "Subscription", - "options": { - "(google.api.http).patch": "/v1/{subscription.name=projects/*/subscriptions/*}", - "(google.api.http).body": "*", - "(google.api.method_signature)": "subscription,update_mask" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "patch": "/v1/{subscription.name=projects/*/subscriptions/*}", - "body": "*" - } - }, - { - "(google.api.method_signature)": "subscription,update_mask" - } - ] - }, - "ListSubscriptions": { - "requestType": "ListSubscriptionsRequest", - "responseType": "ListSubscriptionsResponse", - "options": { - "(google.api.http).get": "/v1/{project=projects/*}/subscriptions", - "(google.api.method_signature)": "project" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{project=projects/*}/subscriptions" - } - }, - { - "(google.api.method_signature)": "project" - } - ] - }, - "DeleteSubscription": { - "requestType": "DeleteSubscriptionRequest", - "responseType": "google.protobuf.Empty", - "options": { - "(google.api.http).delete": "/v1/{subscription=projects/*/subscriptions/*}", - "(google.api.method_signature)": "subscription" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "delete": "/v1/{subscription=projects/*/subscriptions/*}" - } - }, - { - "(google.api.method_signature)": "subscription" - } - ] - }, - "ModifyAckDeadline": { - "requestType": "ModifyAckDeadlineRequest", - "responseType": "google.protobuf.Empty", - "options": { - "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:modifyAckDeadline", - "(google.api.http).body": "*", - "(google.api.method_signature)": "subscription,ack_ids,ack_deadline_seconds" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{subscription=projects/*/subscriptions/*}:modifyAckDeadline", - "body": "*" - } - }, - { - "(google.api.method_signature)": "subscription,ack_ids,ack_deadline_seconds" - } - ] - }, - "Acknowledge": { - "requestType": "AcknowledgeRequest", - "responseType": "google.protobuf.Empty", - "options": { - "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:acknowledge", - "(google.api.http).body": "*", - "(google.api.method_signature)": "subscription,ack_ids" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{subscription=projects/*/subscriptions/*}:acknowledge", - "body": "*" - } - }, - { - "(google.api.method_signature)": "subscription,ack_ids" - } - ] - }, - "Pull": { - "requestType": "PullRequest", - "responseType": "PullResponse", - "options": { - "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:pull", - "(google.api.http).body": "*", - "(google.api.method_signature)": "subscription,max_messages" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{subscription=projects/*/subscriptions/*}:pull", - "body": "*" - } - }, - { - "(google.api.method_signature)": "subscription,return_immediately,max_messages" - }, - { - "(google.api.method_signature)": "subscription,max_messages" - } - ] - }, - "StreamingPull": { - "requestType": "StreamingPullRequest", - "requestStream": true, - "responseType": "StreamingPullResponse", - "responseStream": true - }, - "ModifyPushConfig": { - "requestType": "ModifyPushConfigRequest", - "responseType": "google.protobuf.Empty", - "options": { - "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:modifyPushConfig", - "(google.api.http).body": "*", - "(google.api.method_signature)": "subscription,push_config" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{subscription=projects/*/subscriptions/*}:modifyPushConfig", - "body": "*" - } - }, - { - "(google.api.method_signature)": "subscription,push_config" - } - ] - }, - "GetSnapshot": { - "requestType": "GetSnapshotRequest", - "responseType": "Snapshot", - "options": { - "(google.api.http).get": "/v1/{snapshot=projects/*/snapshots/*}", - "(google.api.method_signature)": "snapshot" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{snapshot=projects/*/snapshots/*}" - } - }, - { - "(google.api.method_signature)": "snapshot" - } - ] - }, - "ListSnapshots": { - "requestType": "ListSnapshotsRequest", - "responseType": "ListSnapshotsResponse", - "options": { - "(google.api.http).get": "/v1/{project=projects/*}/snapshots", - "(google.api.method_signature)": "project" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{project=projects/*}/snapshots" - } - }, - { - "(google.api.method_signature)": "project" - } - ] - }, - "CreateSnapshot": { - "requestType": "CreateSnapshotRequest", - "responseType": "Snapshot", - "options": { - "(google.api.http).put": "/v1/{name=projects/*/snapshots/*}", - "(google.api.http).body": "*", - "(google.api.method_signature)": "name,subscription" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "put": "/v1/{name=projects/*/snapshots/*}", - "body": "*" - } - }, - { - "(google.api.method_signature)": "name,subscription" - } - ] - }, - "UpdateSnapshot": { - "requestType": "UpdateSnapshotRequest", - "responseType": "Snapshot", - "options": { - "(google.api.http).patch": "/v1/{snapshot.name=projects/*/snapshots/*}", - "(google.api.http).body": "*", - "(google.api.method_signature)": "snapshot,update_mask" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "patch": "/v1/{snapshot.name=projects/*/snapshots/*}", - "body": "*" - } - }, - { - "(google.api.method_signature)": "snapshot,update_mask" - } - ] - }, - "DeleteSnapshot": { - "requestType": "DeleteSnapshotRequest", - "responseType": "google.protobuf.Empty", - "options": { - "(google.api.http).delete": "/v1/{snapshot=projects/*/snapshots/*}", - "(google.api.method_signature)": "snapshot" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "delete": "/v1/{snapshot=projects/*/snapshots/*}" - } - }, - { - "(google.api.method_signature)": "snapshot" - } - ] - }, - "Seek": { - "requestType": "SeekRequest", - "responseType": "SeekResponse", - "options": { - "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:seek", - "(google.api.http).body": "*" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{subscription=projects/*/subscriptions/*}:seek", - "body": "*" - } - } - ] - } - } - }, - "Subscription": { - "options": { - "(google.api.resource).type": "pubsub.googleapis.com/Subscription", - "(google.api.resource).pattern": "projects/{project}/subscriptions/{subscription}", - "(google.api.resource).plural": "subscriptions", - "(google.api.resource).singular": "subscription" - }, - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "IDENTIFIER" - } - }, - "topic": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - }, - "pushConfig": { - "type": "PushConfig", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "bigqueryConfig": { - "type": "BigQueryConfig", - "id": 18, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "cloudStorageConfig": { - "type": "CloudStorageConfig", - "id": 22, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "bigtableConfig": { - "type": "BigtableConfig", - "id": 27, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "ackDeadlineSeconds": { - "type": "int32", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "retainAckedMessages": { - "type": "bool", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageRetentionDuration": { - "type": "google.protobuf.Duration", - "id": 8, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "labels": { - "keyType": "string", - "type": "string", - "id": 9, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "enableMessageOrdering": { - "type": "bool", - "id": 10, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "expirationPolicy": { - "type": "ExpirationPolicy", - "id": 11, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "filter": { - "type": "string", - "id": 12, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "deadLetterPolicy": { - "type": "DeadLetterPolicy", - "id": 13, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "retryPolicy": { - "type": "RetryPolicy", - "id": 14, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "detached": { - "type": "bool", - "id": 15, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "enableExactlyOnceDelivery": { - "type": "bool", - "id": 16, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "topicMessageRetentionDuration": { - "type": "google.protobuf.Duration", - "id": 17, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "state": { - "type": "State", - "id": 19, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "analyticsHubSubscriptionInfo": { - "type": "AnalyticsHubSubscriptionInfo", - "id": 23, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "messageTransforms": { - "rule": "repeated", - "type": "MessageTransform", - "id": 25, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "tags": { - "keyType": "string", - "type": "string", - "id": 26, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "RESOURCE_ERROR": 2 - } - }, - "AnalyticsHubSubscriptionInfo": { - "fields": { - "listing": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL", - "(google.api.resource_reference).type": "analyticshub.googleapis.com/Listing" - } - }, - "subscription": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - } - } - }, - "RetryPolicy": { - "fields": { - "minimumBackoff": { - "type": "google.protobuf.Duration", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "maximumBackoff": { - "type": "google.protobuf.Duration", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "DeadLetterPolicy": { - "fields": { - "deadLetterTopic": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - }, - "maxDeliveryAttempts": { - "type": "int32", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ExpirationPolicy": { - "fields": { - "ttl": { - "type": "google.protobuf.Duration", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "PushConfig": { - "oneofs": { - "authenticationMethod": { - "oneof": [ - "oidcToken" - ] - }, - "wrapper": { - "oneof": [ - "pubsubWrapper", - "noWrapper" - ] - } - }, - "fields": { - "pushEndpoint": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "attributes": { - "keyType": "string", - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "oidcToken": { - "type": "OidcToken", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "pubsubWrapper": { - "type": "PubsubWrapper", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "noWrapper": { - "type": "NoWrapper", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "OidcToken": { - "fields": { - "serviceAccountEmail": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "audience": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "PubsubWrapper": { - "fields": {} - }, - "NoWrapper": { - "fields": { - "writeMetadata": { - "type": "bool", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - } - } - }, - "BigQueryConfig": { - "fields": { - "table": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "useTopicSchema": { - "type": "bool", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "writeMetadata": { - "type": "bool", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "dropUnknownFields": { - "type": "bool", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "state": { - "type": "State", - "id": 5, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "useTableSchema": { - "type": "bool", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "serviceAccountEmail": { - "type": "string", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "PERMISSION_DENIED": 2, - "NOT_FOUND": 3, - "SCHEMA_MISMATCH": 4, - "IN_TRANSIT_LOCATION_RESTRICTION": 5, - "VERTEX_AI_LOCATION_RESTRICTION": 6 - } - } - } - }, - "BigtableConfig": { - "fields": { - "table": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "appProfileId": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "serviceAccountEmail": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "writeMetadata": { - "type": "bool", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "state": { - "type": "State", - "id": 4, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - } - }, - "nested": { - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "NOT_FOUND": 2, - "APP_PROFILE_MISCONFIGURED": 3, - "PERMISSION_DENIED": 4, - "SCHEMA_MISMATCH": 5, - "IN_TRANSIT_LOCATION_RESTRICTION": 6, - "VERTEX_AI_LOCATION_RESTRICTION": 7 - } - } - } - }, - "CloudStorageConfig": { - "oneofs": { - "outputFormat": { - "oneof": [ - "textConfig", - "avroConfig" - ] - } - }, - "fields": { - "bucket": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "filenamePrefix": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "filenameSuffix": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "filenameDatetimeFormat": { - "type": "string", - "id": 10, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "textConfig": { - "type": "TextConfig", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "avroConfig": { - "type": "AvroConfig", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "maxDuration": { - "type": "google.protobuf.Duration", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "maxBytes": { - "type": "int64", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "maxMessages": { - "type": "int64", - "id": 8, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "state": { - "type": "State", - "id": 9, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "serviceAccountEmail": { - "type": "string", - "id": 11, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "TextConfig": { - "fields": {} - }, - "AvroConfig": { - "fields": { - "writeMetadata": { - "type": "bool", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "useTopicSchema": { - "type": "bool", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "State": { - "values": { - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "PERMISSION_DENIED": 2, - "NOT_FOUND": 3, - "IN_TRANSIT_LOCATION_RESTRICTION": 4, - "SCHEMA_MISMATCH": 5, - "VERTEX_AI_LOCATION_RESTRICTION": 6 - } - } - } - }, - "ReceivedMessage": { - "fields": { - "ackId": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "message": { - "type": "PubsubMessage", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "deliveryAttempt": { - "type": "int32", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "GetSubscriptionRequest": { - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - } - } - }, - "UpdateSubscriptionRequest": { - "fields": { - "subscription": { - "type": "Subscription", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "updateMask": { - "type": "google.protobuf.FieldMask", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "ListSubscriptionsRequest": { - "fields": { - "project": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" - } - }, - "pageSize": { - "type": "int32", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "pageToken": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ListSubscriptionsResponse": { - "fields": { - "subscriptions": { - "rule": "repeated", - "type": "Subscription", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "nextPageToken": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "DeleteSubscriptionRequest": { - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - } - } - }, - "ModifyPushConfigRequest": { - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - }, - "pushConfig": { - "type": "PushConfig", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "PullRequest": { - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - }, - "returnImmediately": { - "type": "bool", - "id": 2, - "options": { - "deprecated": true, - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "maxMessages": { - "type": "int32", - "id": 3, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "PullResponse": { - "fields": { - "receivedMessages": { - "rule": "repeated", - "type": "ReceivedMessage", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ModifyAckDeadlineRequest": { - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - }, - "ackIds": { - "rule": "repeated", - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "ackDeadlineSeconds": { - "type": "int32", - "id": 3, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "AcknowledgeRequest": { - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - }, - "ackIds": { - "rule": "repeated", - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "StreamingPullRequest": { - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - }, - "ackIds": { - "rule": "repeated", - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "modifyDeadlineSeconds": { - "rule": "repeated", - "type": "int32", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "modifyDeadlineAckIds": { - "rule": "repeated", - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "streamAckDeadlineSeconds": { - "type": "int32", - "id": 5, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "clientId": { - "type": "string", - "id": 6, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "maxOutstandingMessages": { - "type": "int64", - "id": 7, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "maxOutstandingBytes": { - "type": "int64", - "id": 8, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "protocolVersion": { - "type": "int64", - "id": 10, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "StreamingPullResponse": { - "fields": { - "receivedMessages": { - "rule": "repeated", - "type": "ReceivedMessage", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "acknowledgeConfirmation": { - "type": "AcknowledgeConfirmation", - "id": 5, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "modifyAckDeadlineConfirmation": { - "type": "ModifyAckDeadlineConfirmation", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "subscriptionProperties": { - "type": "SubscriptionProperties", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "AcknowledgeConfirmation": { - "fields": { - "ackIds": { - "rule": "repeated", - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "invalidAckIds": { - "rule": "repeated", - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "unorderedAckIds": { - "rule": "repeated", - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "temporaryFailedAckIds": { - "rule": "repeated", - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ModifyAckDeadlineConfirmation": { - "fields": { - "ackIds": { - "rule": "repeated", - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "invalidAckIds": { - "rule": "repeated", - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "temporaryFailedAckIds": { - "rule": "repeated", - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "SubscriptionProperties": { - "fields": { - "exactlyOnceDeliveryEnabled": { - "type": "bool", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "messageOrderingEnabled": { - "type": "bool", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - } - } - }, - "CreateSnapshotRequest": { - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" - } - }, - "subscription": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - }, - "labels": { - "keyType": "string", - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "tags": { - "keyType": "string", - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "UpdateSnapshotRequest": { - "fields": { - "snapshot": { - "type": "Snapshot", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "updateMask": { - "type": "google.protobuf.FieldMask", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "Snapshot": { - "options": { - "(google.api.resource).type": "pubsub.googleapis.com/Snapshot", - "(google.api.resource).pattern": "projects/{project}/snapshots/{snapshot}", - "(google.api.resource).plural": "snapshots", - "(google.api.resource).singular": "snapshot" - }, - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "topic": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" - } - }, - "expireTime": { - "type": "google.protobuf.Timestamp", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "labels": { - "keyType": "string", - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "GetSnapshotRequest": { - "fields": { - "snapshot": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" - } - } - } - }, - "ListSnapshotsRequest": { - "fields": { - "project": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" - } - }, - "pageSize": { - "type": "int32", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "pageToken": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "ListSnapshotsResponse": { - "fields": { - "snapshots": { - "rule": "repeated", - "type": "Snapshot", - "id": 1, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "nextPageToken": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "DeleteSnapshotRequest": { - "fields": { - "snapshot": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" - } - } - } - }, - "SeekRequest": { - "oneofs": { - "target": { - "oneof": [ - "time", - "snapshot" - ] - } - }, - "fields": { - "subscription": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" - } - }, - "time": { - "type": "google.protobuf.Timestamp", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - }, - "snapshot": { - "type": "string", - "id": 3, - "options": { - "(google.api.field_behavior)": "OPTIONAL", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" - } - } - } - }, - "SeekResponse": { - "fields": {} - }, - "SchemaService": { - "options": { - "(google.api.default_host)": "pubsub.googleapis.com", - "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsub" - }, - "methods": { - "CreateSchema": { - "requestType": "CreateSchemaRequest", - "responseType": "Schema", - "options": { - "(google.api.http).post": "/v1/{parent=projects/*}/schemas", - "(google.api.http).body": "schema", - "(google.api.method_signature)": "parent,schema,schema_id" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{parent=projects/*}/schemas", - "body": "schema" - } - }, - { - "(google.api.method_signature)": "parent,schema,schema_id" - } - ] - }, - "GetSchema": { - "requestType": "GetSchemaRequest", - "responseType": "Schema", - "options": { - "(google.api.http).get": "/v1/{name=projects/*/schemas/*}", - "(google.api.method_signature)": "name" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{name=projects/*/schemas/*}" - } - }, - { - "(google.api.method_signature)": "name" - } - ] - }, - "ListSchemas": { - "requestType": "ListSchemasRequest", - "responseType": "ListSchemasResponse", - "options": { - "(google.api.http).get": "/v1/{parent=projects/*}/schemas", - "(google.api.method_signature)": "parent" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{parent=projects/*}/schemas" - } - }, - { - "(google.api.method_signature)": "parent" - } - ] - }, - "ListSchemaRevisions": { - "requestType": "ListSchemaRevisionsRequest", - "responseType": "ListSchemaRevisionsResponse", - "options": { - "(google.api.http).get": "/v1/{name=projects/*/schemas/*}:listRevisions", - "(google.api.method_signature)": "name" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "get": "/v1/{name=projects/*/schemas/*}:listRevisions" - } - }, - { - "(google.api.method_signature)": "name" - } - ] - }, - "CommitSchema": { - "requestType": "CommitSchemaRequest", - "responseType": "Schema", - "options": { - "(google.api.http).post": "/v1/{name=projects/*/schemas/*}:commit", - "(google.api.http).body": "*", - "(google.api.method_signature)": "name,schema" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{name=projects/*/schemas/*}:commit", - "body": "*" - } - }, - { - "(google.api.method_signature)": "name,schema" - } - ] - }, - "RollbackSchema": { - "requestType": "RollbackSchemaRequest", - "responseType": "Schema", - "options": { - "(google.api.http).post": "/v1/{name=projects/*/schemas/*}:rollback", - "(google.api.http).body": "*", - "(google.api.method_signature)": "name,revision_id" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{name=projects/*/schemas/*}:rollback", - "body": "*" - } - }, - { - "(google.api.method_signature)": "name,revision_id" - } - ] - }, - "DeleteSchemaRevision": { - "requestType": "DeleteSchemaRevisionRequest", - "responseType": "Schema", - "options": { - "(google.api.http).delete": "/v1/{name=projects/*/schemas/*}:deleteRevision", - "(google.api.method_signature)": "name,revision_id" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "delete": "/v1/{name=projects/*/schemas/*}:deleteRevision" - } - }, - { - "(google.api.method_signature)": "name,revision_id" - } - ] - }, - "DeleteSchema": { - "requestType": "DeleteSchemaRequest", - "responseType": "google.protobuf.Empty", - "options": { - "(google.api.http).delete": "/v1/{name=projects/*/schemas/*}", - "(google.api.method_signature)": "name" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "delete": "/v1/{name=projects/*/schemas/*}" - } - }, - { - "(google.api.method_signature)": "name" - } - ] - }, - "ValidateSchema": { - "requestType": "ValidateSchemaRequest", - "responseType": "ValidateSchemaResponse", - "options": { - "(google.api.http).post": "/v1/{parent=projects/*}/schemas:validate", - "(google.api.http).body": "*", - "(google.api.method_signature)": "parent,schema" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{parent=projects/*}/schemas:validate", - "body": "*" - } - }, - { - "(google.api.method_signature)": "parent,schema" - } - ] - }, - "ValidateMessage": { - "requestType": "ValidateMessageRequest", - "responseType": "ValidateMessageResponse", - "options": { - "(google.api.http).post": "/v1/{parent=projects/*}/schemas:validateMessage", - "(google.api.http).body": "*" - }, - "parsedOptions": [ - { - "(google.api.http)": { - "post": "/v1/{parent=projects/*}/schemas:validateMessage", - "body": "*" - } - } - ] - } - } - }, - "Schema": { - "options": { - "(google.api.resource).type": "pubsub.googleapis.com/Schema", - "(google.api.resource).pattern": "projects/{project}/schemas/{schema}" - }, - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "type": { - "type": "Type", - "id": 2 - }, - "definition": { - "type": "string", - "id": 3 - }, - "revisionId": { - "type": "string", - "id": 4, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - }, - "revisionCreateTime": { - "type": "google.protobuf.Timestamp", - "id": 6, - "options": { - "(google.api.field_behavior)": "OUTPUT_ONLY" - } - } - }, - "nested": { - "Type": { - "values": { - "TYPE_UNSPECIFIED": 0, - "PROTOCOL_BUFFER": 1, - "AVRO": 2 - } - } - } - }, - "SchemaView": { - "values": { - "SCHEMA_VIEW_UNSPECIFIED": 0, - "BASIC": 1, - "FULL": 2 - } - }, - "CreateSchemaRequest": { - "fields": { - "parent": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).child_type": "pubsub.googleapis.com/Schema" - } - }, - "schema": { - "type": "Schema", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - }, - "schemaId": { - "type": "string", - "id": 3 - } - } - }, - "GetSchemaRequest": { - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" - } - }, - "view": { - "type": "SchemaView", - "id": 2 - } - } - }, - "ListSchemasRequest": { - "fields": { - "parent": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" - } - }, - "view": { - "type": "SchemaView", - "id": 2 - }, - "pageSize": { - "type": "int32", - "id": 3 - }, - "pageToken": { - "type": "string", - "id": 4 - } - } - }, - "ListSchemasResponse": { - "fields": { - "schemas": { - "rule": "repeated", - "type": "Schema", - "id": 1 - }, - "nextPageToken": { - "type": "string", - "id": 2 - } - } - }, - "ListSchemaRevisionsRequest": { - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" - } - }, - "view": { - "type": "SchemaView", - "id": 2 - }, - "pageSize": { - "type": "int32", - "id": 3 - }, - "pageToken": { - "type": "string", - "id": 4 - } - } - }, - "ListSchemaRevisionsResponse": { - "fields": { - "schemas": { - "rule": "repeated", - "type": "Schema", - "id": 1 - }, - "nextPageToken": { - "type": "string", - "id": 2 - } - } - }, - "CommitSchemaRequest": { - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" - } - }, - "schema": { - "type": "Schema", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "RollbackSchemaRequest": { - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" - } - }, - "revisionId": { - "type": "string", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "DeleteSchemaRevisionRequest": { - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" - } - }, - "revisionId": { - "type": "string", - "id": 2, - "options": { - "deprecated": true, - "(google.api.field_behavior)": "OPTIONAL" - } - } - } - }, - "DeleteSchemaRequest": { - "fields": { - "name": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" - } - } - } - }, - "ValidateSchemaRequest": { - "fields": { - "parent": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" - } - }, - "schema": { - "type": "Schema", - "id": 2, - "options": { - "(google.api.field_behavior)": "REQUIRED" - } - } - } - }, - "ValidateSchemaResponse": { - "fields": {} - }, - "ValidateMessageRequest": { - "oneofs": { - "schemaSpec": { - "oneof": [ - "name", - "schema" - ] - } - }, - "fields": { - "parent": { - "type": "string", - "id": 1, - "options": { - "(google.api.field_behavior)": "REQUIRED", - "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" - } - }, - "name": { - "type": "string", - "id": 2, - "options": { - "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" - } - }, - "schema": { - "type": "Schema", - "id": 3 - }, - "message": { - "type": "bytes", - "id": 4 - }, - "encoding": { - "type": "Encoding", - "id": 5 - } - } - }, - "ValidateMessageResponse": { - "fields": {} - }, - "Encoding": { - "values": { - "ENCODING_UNSPECIFIED": 0, - "JSON": 1, - "BINARY": 2 - } - } - } - } - } - }, - "api": { - "options": { - "go_package": "google.golang.org/genproto/googleapis/api/annotations;annotations", - "java_multiple_files": true, - "java_outer_classname": "ResourceProto", - "java_package": "com.google.api", - "objc_class_prefix": "GAPI" - }, - "nested": { - "http": { - "type": "HttpRule", - "id": 72295728, - "extend": "google.protobuf.MethodOptions" - }, - "Http": { - "fields": { - "rules": { - "rule": "repeated", - "type": "HttpRule", - "id": 1 - }, - "fullyDecodeReservedExpansion": { - "type": "bool", - "id": 2 - } - } - }, - "HttpRule": { - "oneofs": { - "pattern": { - "oneof": [ - "get", - "put", - "post", - "delete", - "patch", - "custom" - ] - } - }, - "fields": { - "selector": { - "type": "string", - "id": 1 - }, - "get": { - "type": "string", - "id": 2 - }, - "put": { - "type": "string", - "id": 3 - }, - "post": { - "type": "string", - "id": 4 - }, - "delete": { - "type": "string", - "id": 5 - }, - "patch": { - "type": "string", - "id": 6 - }, - "custom": { - "type": "CustomHttpPattern", - "id": 8 - }, - "body": { - "type": "string", - "id": 7 - }, - "responseBody": { - "type": "string", - "id": 12 - }, - "additionalBindings": { - "rule": "repeated", - "type": "HttpRule", - "id": 11 - } - } - }, - "CustomHttpPattern": { - "fields": { - "kind": { - "type": "string", - "id": 1 - }, - "path": { - "type": "string", - "id": 2 - } - } - }, - "methodSignature": { - "rule": "repeated", - "type": "string", - "id": 1051, - "extend": "google.protobuf.MethodOptions" - }, - "defaultHost": { - "type": "string", - "id": 1049, - "extend": "google.protobuf.ServiceOptions" - }, - "oauthScopes": { - "type": "string", - "id": 1050, - "extend": "google.protobuf.ServiceOptions" - }, - "apiVersion": { - "type": "string", - "id": 525000001, - "extend": "google.protobuf.ServiceOptions" - }, - "CommonLanguageSettings": { - "fields": { - "referenceDocsUri": { - "type": "string", - "id": 1, - "options": { - "deprecated": true - } - }, - "destinations": { - "rule": "repeated", - "type": "ClientLibraryDestination", - "id": 2 - }, - "selectiveGapicGeneration": { - "type": "SelectiveGapicGeneration", - "id": 3 - } - } - }, - "ClientLibrarySettings": { - "fields": { - "version": { - "type": "string", - "id": 1 - }, - "launchStage": { - "type": "LaunchStage", - "id": 2 - }, - "restNumericEnums": { - "type": "bool", - "id": 3 - }, - "javaSettings": { - "type": "JavaSettings", - "id": 21 - }, - "cppSettings": { - "type": "CppSettings", - "id": 22 - }, - "phpSettings": { - "type": "PhpSettings", - "id": 23 - }, - "pythonSettings": { - "type": "PythonSettings", - "id": 24 - }, - "nodeSettings": { - "type": "NodeSettings", - "id": 25 - }, - "dotnetSettings": { - "type": "DotnetSettings", - "id": 26 - }, - "rubySettings": { - "type": "RubySettings", - "id": 27 - }, - "goSettings": { - "type": "GoSettings", - "id": 28 - } - } - }, - "Publishing": { - "fields": { - "methodSettings": { - "rule": "repeated", - "type": "MethodSettings", - "id": 2 - }, - "newIssueUri": { - "type": "string", - "id": 101 - }, - "documentationUri": { - "type": "string", - "id": 102 - }, - "apiShortName": { - "type": "string", - "id": 103 - }, - "githubLabel": { - "type": "string", - "id": 104 - }, - "codeownerGithubTeams": { - "rule": "repeated", - "type": "string", - "id": 105 - }, - "docTagPrefix": { - "type": "string", - "id": 106 - }, - "organization": { - "type": "ClientLibraryOrganization", - "id": 107 - }, - "librarySettings": { - "rule": "repeated", - "type": "ClientLibrarySettings", - "id": 109 - }, - "protoReferenceDocumentationUri": { - "type": "string", - "id": 110 - }, - "restReferenceDocumentationUri": { - "type": "string", - "id": 111 - } - } - }, - "JavaSettings": { - "fields": { - "libraryPackage": { - "type": "string", - "id": 1 - }, - "serviceClassNames": { - "keyType": "string", - "type": "string", - "id": 2 - }, - "common": { - "type": "CommonLanguageSettings", - "id": 3 - } - } - }, - "CppSettings": { - "fields": { - "common": { - "type": "CommonLanguageSettings", - "id": 1 - } - } - }, - "PhpSettings": { - "fields": { - "common": { - "type": "CommonLanguageSettings", - "id": 1 - } - } - }, - "PythonSettings": { - "fields": { - "common": { - "type": "CommonLanguageSettings", - "id": 1 - }, - "experimentalFeatures": { - "type": "ExperimentalFeatures", - "id": 2 - } - }, - "nested": { - "ExperimentalFeatures": { - "fields": { - "restAsyncIoEnabled": { - "type": "bool", - "id": 1 - }, - "protobufPythonicTypesEnabled": { - "type": "bool", - "id": 2 - }, - "unversionedPackageDisabled": { - "type": "bool", - "id": 3 - } - } - } - } - }, - "NodeSettings": { - "fields": { - "common": { - "type": "CommonLanguageSettings", - "id": 1 - } - } - }, - "DotnetSettings": { - "fields": { - "common": { - "type": "CommonLanguageSettings", - "id": 1 - }, - "renamedServices": { - "keyType": "string", - "type": "string", - "id": 2 - }, - "renamedResources": { - "keyType": "string", - "type": "string", - "id": 3 - }, - "ignoredResources": { - "rule": "repeated", - "type": "string", - "id": 4 - }, - "forcedNamespaceAliases": { - "rule": "repeated", - "type": "string", - "id": 5 - }, - "handwrittenSignatures": { - "rule": "repeated", - "type": "string", - "id": 6 - } - } - }, - "RubySettings": { - "fields": { - "common": { - "type": "CommonLanguageSettings", - "id": 1 - } - } - }, - "GoSettings": { - "fields": { - "common": { - "type": "CommonLanguageSettings", - "id": 1 - }, - "renamedServices": { - "keyType": "string", - "type": "string", - "id": 2 - } - } - }, - "MethodSettings": { - "fields": { - "selector": { - "type": "string", - "id": 1 - }, - "longRunning": { - "type": "LongRunning", - "id": 2 - }, - "autoPopulatedFields": { - "rule": "repeated", - "type": "string", - "id": 3 - } - }, - "nested": { - "LongRunning": { - "fields": { - "initialPollDelay": { - "type": "google.protobuf.Duration", - "id": 1 - }, - "pollDelayMultiplier": { - "type": "float", - "id": 2 - }, - "maxPollDelay": { - "type": "google.protobuf.Duration", - "id": 3 - }, - "totalPollTimeout": { - "type": "google.protobuf.Duration", - "id": 4 - } - } - } - } - }, - "ClientLibraryOrganization": { - "values": { - "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED": 0, - "CLOUD": 1, - "ADS": 2, - "PHOTOS": 3, - "STREET_VIEW": 4, - "SHOPPING": 5, - "GEO": 6, - "GENERATIVE_AI": 7 - } - }, - "ClientLibraryDestination": { - "values": { - "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED": 0, - "GITHUB": 10, - "PACKAGE_MANAGER": 20 - } - }, - "SelectiveGapicGeneration": { - "fields": { - "methods": { - "rule": "repeated", - "type": "string", - "id": 1 - }, - "generateOmittedAsInternal": { - "type": "bool", - "id": 2 - } - } - }, - "LaunchStage": { - "values": { - "LAUNCH_STAGE_UNSPECIFIED": 0, - "UNIMPLEMENTED": 6, - "PRELAUNCH": 7, - "EARLY_ACCESS": 1, - "ALPHA": 2, - "BETA": 3, - "GA": 4, - "DEPRECATED": 5 - } - }, - "fieldBehavior": { - "rule": "repeated", - "type": "google.api.FieldBehavior", - "id": 1052, - "extend": "google.protobuf.FieldOptions", - "options": { - "packed": false - } - }, - "FieldBehavior": { - "values": { - "FIELD_BEHAVIOR_UNSPECIFIED": 0, - "OPTIONAL": 1, - "REQUIRED": 2, - "OUTPUT_ONLY": 3, - "INPUT_ONLY": 4, - "IMMUTABLE": 5, - "UNORDERED_LIST": 6, - "NON_EMPTY_DEFAULT": 7, - "IDENTIFIER": 8 - } - }, - "resourceReference": { - "type": "google.api.ResourceReference", - "id": 1055, - "extend": "google.protobuf.FieldOptions" - }, - "resourceDefinition": { - "rule": "repeated", - "type": "google.api.ResourceDescriptor", - "id": 1053, - "extend": "google.protobuf.FileOptions" - }, - "resource": { - "type": "google.api.ResourceDescriptor", - "id": 1053, - "extend": "google.protobuf.MessageOptions" - }, - "ResourceDescriptor": { - "fields": { - "type": { - "type": "string", - "id": 1 - }, - "pattern": { - "rule": "repeated", - "type": "string", - "id": 2 - }, - "nameField": { - "type": "string", - "id": 3 - }, - "history": { - "type": "History", - "id": 4 - }, - "plural": { - "type": "string", - "id": 5 - }, - "singular": { - "type": "string", - "id": 6 - }, - "style": { - "rule": "repeated", - "type": "Style", - "id": 10 - } - }, - "nested": { - "History": { - "values": { - "HISTORY_UNSPECIFIED": 0, - "ORIGINALLY_SINGLE_PATTERN": 1, - "FUTURE_MULTI_PATTERN": 2 - } - }, - "Style": { - "values": { - "STYLE_UNSPECIFIED": 0, - "DECLARATIVE_FRIENDLY": 1 - } - } - } - }, - "ResourceReference": { - "fields": { - "type": { - "type": "string", - "id": 1 - }, - "childType": { - "type": "string", - "id": 2 - } - } - } - } - }, - "protobuf": { - "options": { - "go_package": "google.golang.org/protobuf/types/descriptorpb", - "java_package": "com.google.protobuf", - "java_outer_classname": "DescriptorProtos", - "csharp_namespace": "Google.Protobuf.Reflection", - "objc_class_prefix": "GPB", - "cc_enable_arenas": true, - "optimize_for": "SPEED" - }, - "nested": { - "FileDescriptorSet": { - "edition": "proto2", - "fields": { - "file": { - "rule": "repeated", - "type": "FileDescriptorProto", - "id": 1 - } - }, - "extensions": [ - [ - 536000000, - 536000000 - ] - ] - }, - "Edition": { - "edition": "proto2", - "values": { - "EDITION_UNKNOWN": 0, - "EDITION_LEGACY": 900, - "EDITION_PROTO2": 998, - "EDITION_PROTO3": 999, - "EDITION_2023": 1000, - "EDITION_2024": 1001, - "EDITION_1_TEST_ONLY": 1, - "EDITION_2_TEST_ONLY": 2, - "EDITION_99997_TEST_ONLY": 99997, - "EDITION_99998_TEST_ONLY": 99998, - "EDITION_99999_TEST_ONLY": 99999, - "EDITION_MAX": 2147483647 - } - }, - "FileDescriptorProto": { - "edition": "proto2", - "fields": { - "name": { - "type": "string", - "id": 1 - }, - "package": { - "type": "string", - "id": 2 - }, - "dependency": { - "rule": "repeated", - "type": "string", - "id": 3 - }, - "publicDependency": { - "rule": "repeated", - "type": "int32", - "id": 10 - }, - "weakDependency": { - "rule": "repeated", - "type": "int32", - "id": 11 - }, - "optionDependency": { - "rule": "repeated", - "type": "string", - "id": 15 - }, - "messageType": { - "rule": "repeated", - "type": "DescriptorProto", - "id": 4 - }, - "enumType": { - "rule": "repeated", - "type": "EnumDescriptorProto", - "id": 5 - }, - "service": { - "rule": "repeated", - "type": "ServiceDescriptorProto", - "id": 6 - }, - "extension": { - "rule": "repeated", - "type": "FieldDescriptorProto", - "id": 7 - }, - "options": { - "type": "FileOptions", - "id": 8 - }, - "sourceCodeInfo": { - "type": "SourceCodeInfo", - "id": 9 - }, - "syntax": { - "type": "string", - "id": 12 - }, - "edition": { - "type": "Edition", - "id": 14 - } - } - }, - "DescriptorProto": { - "edition": "proto2", - "fields": { - "name": { - "type": "string", - "id": 1 - }, - "field": { - "rule": "repeated", - "type": "FieldDescriptorProto", - "id": 2 - }, - "extension": { - "rule": "repeated", - "type": "FieldDescriptorProto", - "id": 6 - }, - "nestedType": { - "rule": "repeated", - "type": "DescriptorProto", - "id": 3 - }, - "enumType": { - "rule": "repeated", - "type": "EnumDescriptorProto", - "id": 4 - }, - "extensionRange": { - "rule": "repeated", - "type": "ExtensionRange", - "id": 5 - }, - "oneofDecl": { - "rule": "repeated", - "type": "OneofDescriptorProto", - "id": 8 - }, - "options": { - "type": "MessageOptions", - "id": 7 - }, - "reservedRange": { - "rule": "repeated", - "type": "ReservedRange", - "id": 9 - }, - "reservedName": { - "rule": "repeated", - "type": "string", - "id": 10 - }, - "visibility": { - "type": "SymbolVisibility", - "id": 11 - } - }, - "nested": { - "ExtensionRange": { - "fields": { - "start": { - "type": "int32", - "id": 1 - }, - "end": { - "type": "int32", - "id": 2 - }, - "options": { - "type": "ExtensionRangeOptions", - "id": 3 - } - } - }, - "ReservedRange": { - "fields": { - "start": { - "type": "int32", - "id": 1 - }, - "end": { - "type": "int32", - "id": 2 - } - } - } - } - }, - "ExtensionRangeOptions": { - "edition": "proto2", - "fields": { - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - }, - "declaration": { - "rule": "repeated", - "type": "Declaration", - "id": 2, - "options": { - "retention": "RETENTION_SOURCE" - } - }, - "features": { - "type": "FeatureSet", - "id": 50 - }, - "verification": { - "type": "VerificationState", - "id": 3, - "options": { - "default": "UNVERIFIED", - "retention": "RETENTION_SOURCE" - } - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ], - "nested": { - "Declaration": { - "fields": { - "number": { - "type": "int32", - "id": 1 - }, - "fullName": { - "type": "string", - "id": 2 - }, - "type": { - "type": "string", - "id": 3 - }, - "reserved": { - "type": "bool", - "id": 5 - }, - "repeated": { - "type": "bool", - "id": 6 - } - }, - "reserved": [ - [ - 4, - 4 - ] - ] - }, - "VerificationState": { - "values": { - "DECLARATION": 0, - "UNVERIFIED": 1 - } - } - } - }, - "FieldDescriptorProto": { - "edition": "proto2", - "fields": { - "name": { - "type": "string", - "id": 1 - }, - "number": { - "type": "int32", - "id": 3 - }, - "label": { - "type": "Label", - "id": 4 - }, - "type": { - "type": "Type", - "id": 5 - }, - "typeName": { - "type": "string", - "id": 6 - }, - "extendee": { - "type": "string", - "id": 2 - }, - "defaultValue": { - "type": "string", - "id": 7 - }, - "oneofIndex": { - "type": "int32", - "id": 9 - }, - "jsonName": { - "type": "string", - "id": 10 - }, - "options": { - "type": "FieldOptions", - "id": 8 - }, - "proto3Optional": { - "type": "bool", - "id": 17 - } - }, - "nested": { - "Type": { - "values": { - "TYPE_DOUBLE": 1, - "TYPE_FLOAT": 2, - "TYPE_INT64": 3, - "TYPE_UINT64": 4, - "TYPE_INT32": 5, - "TYPE_FIXED64": 6, - "TYPE_FIXED32": 7, - "TYPE_BOOL": 8, - "TYPE_STRING": 9, - "TYPE_GROUP": 10, - "TYPE_MESSAGE": 11, - "TYPE_BYTES": 12, - "TYPE_UINT32": 13, - "TYPE_ENUM": 14, - "TYPE_SFIXED32": 15, - "TYPE_SFIXED64": 16, - "TYPE_SINT32": 17, - "TYPE_SINT64": 18 - } - }, - "Label": { - "values": { - "LABEL_OPTIONAL": 1, - "LABEL_REPEATED": 3, - "LABEL_REQUIRED": 2 - } - } - } - }, - "OneofDescriptorProto": { - "edition": "proto2", - "fields": { - "name": { - "type": "string", - "id": 1 - }, - "options": { - "type": "OneofOptions", - "id": 2 - } - } - }, - "EnumDescriptorProto": { - "edition": "proto2", - "fields": { - "name": { - "type": "string", - "id": 1 - }, - "value": { - "rule": "repeated", - "type": "EnumValueDescriptorProto", - "id": 2 - }, - "options": { - "type": "EnumOptions", - "id": 3 - }, - "reservedRange": { - "rule": "repeated", - "type": "EnumReservedRange", - "id": 4 - }, - "reservedName": { - "rule": "repeated", - "type": "string", - "id": 5 - }, - "visibility": { - "type": "SymbolVisibility", - "id": 6 - } - }, - "nested": { - "EnumReservedRange": { - "fields": { - "start": { - "type": "int32", - "id": 1 - }, - "end": { - "type": "int32", - "id": 2 - } - } - } - } - }, - "EnumValueDescriptorProto": { - "edition": "proto2", - "fields": { - "name": { - "type": "string", - "id": 1 - }, - "number": { - "type": "int32", - "id": 2 - }, - "options": { - "type": "EnumValueOptions", - "id": 3 - } - } - }, - "ServiceDescriptorProto": { - "edition": "proto2", - "fields": { - "name": { - "type": "string", - "id": 1 - }, - "method": { - "rule": "repeated", - "type": "MethodDescriptorProto", - "id": 2 - }, - "options": { - "type": "ServiceOptions", - "id": 3 - } - }, - "reserved": [ - [ - 4, - 4 - ], - "stream" - ] - }, - "MethodDescriptorProto": { - "edition": "proto2", - "fields": { - "name": { - "type": "string", - "id": 1 - }, - "inputType": { - "type": "string", - "id": 2 - }, - "outputType": { - "type": "string", - "id": 3 - }, - "options": { - "type": "MethodOptions", - "id": 4 - }, - "clientStreaming": { - "type": "bool", - "id": 5, - "options": { - "default": false - } - }, - "serverStreaming": { - "type": "bool", - "id": 6, - "options": { - "default": false - } - } - } - }, - "FileOptions": { - "edition": "proto2", - "fields": { - "javaPackage": { - "type": "string", - "id": 1 - }, - "javaOuterClassname": { - "type": "string", - "id": 8 - }, - "javaMultipleFiles": { - "type": "bool", - "id": 10, - "options": { - "default": false - } - }, - "javaGenerateEqualsAndHash": { - "type": "bool", - "id": 20, - "options": { - "deprecated": true - } - }, - "javaStringCheckUtf8": { - "type": "bool", - "id": 27, - "options": { - "default": false - } - }, - "optimizeFor": { - "type": "OptimizeMode", - "id": 9, - "options": { - "default": "SPEED" - } - }, - "goPackage": { - "type": "string", - "id": 11 - }, - "ccGenericServices": { - "type": "bool", - "id": 16, - "options": { - "default": false - } - }, - "javaGenericServices": { - "type": "bool", - "id": 17, - "options": { - "default": false - } - }, - "pyGenericServices": { - "type": "bool", - "id": 18, - "options": { - "default": false - } - }, - "deprecated": { - "type": "bool", - "id": 23, - "options": { - "default": false - } - }, - "ccEnableArenas": { - "type": "bool", - "id": 31, - "options": { - "default": true - } - }, - "objcClassPrefix": { - "type": "string", - "id": 36 - }, - "csharpNamespace": { - "type": "string", - "id": 37 - }, - "swiftPrefix": { - "type": "string", - "id": 39 - }, - "phpClassPrefix": { - "type": "string", - "id": 40 - }, - "phpNamespace": { - "type": "string", - "id": 41 - }, - "phpMetadataNamespace": { - "type": "string", - "id": 44 - }, - "rubyPackage": { - "type": "string", - "id": 45 - }, - "features": { - "type": "FeatureSet", - "id": 50 - }, - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ], - "reserved": [ - [ - 42, - 42 - ], - "php_generic_services", - [ - 38, - 38 - ] - ], - "nested": { - "OptimizeMode": { - "values": { - "SPEED": 1, - "CODE_SIZE": 2, - "LITE_RUNTIME": 3 - } - } - } - }, - "MessageOptions": { - "edition": "proto2", - "fields": { - "messageSetWireFormat": { - "type": "bool", - "id": 1, - "options": { - "default": false - } - }, - "noStandardDescriptorAccessor": { - "type": "bool", - "id": 2, - "options": { - "default": false - } - }, - "deprecated": { - "type": "bool", - "id": 3, - "options": { - "default": false - } - }, - "mapEntry": { - "type": "bool", - "id": 7 - }, - "deprecatedLegacyJsonFieldConflicts": { - "type": "bool", - "id": 11, - "options": { - "deprecated": true - } - }, - "features": { - "type": "FeatureSet", - "id": 12 - }, - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ], - "reserved": [ - [ - 4, - 4 - ], - [ - 5, - 5 - ], - [ - 6, - 6 - ], - [ - 8, - 8 - ], - [ - 9, - 9 - ] - ] - }, - "FieldOptions": { - "edition": "proto2", - "fields": { - "ctype": { - "type": "CType", - "id": 1, - "options": { - "default": "STRING" - } - }, - "packed": { - "type": "bool", - "id": 2 - }, - "jstype": { - "type": "JSType", - "id": 6, - "options": { - "default": "JS_NORMAL" - } - }, - "lazy": { - "type": "bool", - "id": 5, - "options": { - "default": false - } - }, - "unverifiedLazy": { - "type": "bool", - "id": 15, - "options": { - "default": false - } - }, - "deprecated": { - "type": "bool", - "id": 3, - "options": { - "default": false - } - }, - "weak": { - "type": "bool", - "id": 10, - "options": { - "default": false, - "deprecated": true - } - }, - "debugRedact": { - "type": "bool", - "id": 16, - "options": { - "default": false - } - }, - "retention": { - "type": "OptionRetention", - "id": 17 - }, - "targets": { - "rule": "repeated", - "type": "OptionTargetType", - "id": 19 - }, - "editionDefaults": { - "rule": "repeated", - "type": "EditionDefault", - "id": 20 - }, - "features": { - "type": "FeatureSet", - "id": 21 - }, - "featureSupport": { - "type": "FeatureSupport", - "id": 22 - }, - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ], - "reserved": [ - [ - 4, - 4 - ], - [ - 18, - 18 - ] - ], - "nested": { - "CType": { - "values": { - "STRING": 0, - "CORD": 1, - "STRING_PIECE": 2 - } - }, - "JSType": { - "values": { - "JS_NORMAL": 0, - "JS_STRING": 1, - "JS_NUMBER": 2 - } - }, - "OptionRetention": { - "values": { - "RETENTION_UNKNOWN": 0, - "RETENTION_RUNTIME": 1, - "RETENTION_SOURCE": 2 - } - }, - "OptionTargetType": { - "values": { - "TARGET_TYPE_UNKNOWN": 0, - "TARGET_TYPE_FILE": 1, - "TARGET_TYPE_EXTENSION_RANGE": 2, - "TARGET_TYPE_MESSAGE": 3, - "TARGET_TYPE_FIELD": 4, - "TARGET_TYPE_ONEOF": 5, - "TARGET_TYPE_ENUM": 6, - "TARGET_TYPE_ENUM_ENTRY": 7, - "TARGET_TYPE_SERVICE": 8, - "TARGET_TYPE_METHOD": 9 - } - }, - "EditionDefault": { - "fields": { - "edition": { - "type": "Edition", - "id": 3 - }, - "value": { - "type": "string", - "id": 2 - } - } - }, - "FeatureSupport": { - "fields": { - "editionIntroduced": { - "type": "Edition", - "id": 1 - }, - "editionDeprecated": { - "type": "Edition", - "id": 2 - }, - "deprecationWarning": { - "type": "string", - "id": 3 - }, - "editionRemoved": { - "type": "Edition", - "id": 4 - } - } - } - } - }, - "OneofOptions": { - "edition": "proto2", - "fields": { - "features": { - "type": "FeatureSet", - "id": 1 - }, - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ] - }, - "EnumOptions": { - "edition": "proto2", - "fields": { - "allowAlias": { - "type": "bool", - "id": 2 - }, - "deprecated": { - "type": "bool", - "id": 3, - "options": { - "default": false - } - }, - "deprecatedLegacyJsonFieldConflicts": { - "type": "bool", - "id": 6, - "options": { - "deprecated": true - } - }, - "features": { - "type": "FeatureSet", - "id": 7 - }, - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ], - "reserved": [ - [ - 5, - 5 - ] - ] - }, - "EnumValueOptions": { - "edition": "proto2", - "fields": { - "deprecated": { - "type": "bool", - "id": 1, - "options": { - "default": false - } - }, - "features": { - "type": "FeatureSet", - "id": 2 - }, - "debugRedact": { - "type": "bool", - "id": 3, - "options": { - "default": false - } - }, - "featureSupport": { - "type": "FieldOptions.FeatureSupport", - "id": 4 - }, - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ] - }, - "ServiceOptions": { - "edition": "proto2", - "fields": { - "features": { - "type": "FeatureSet", - "id": 34 - }, - "deprecated": { - "type": "bool", - "id": 33, - "options": { - "default": false - } - }, - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ] - }, - "MethodOptions": { - "edition": "proto2", - "fields": { - "deprecated": { - "type": "bool", - "id": 33, - "options": { - "default": false - } - }, - "idempotencyLevel": { - "type": "IdempotencyLevel", - "id": 34, - "options": { - "default": "IDEMPOTENCY_UNKNOWN" - } - }, - "features": { - "type": "FeatureSet", - "id": 35 - }, - "uninterpretedOption": { - "rule": "repeated", - "type": "UninterpretedOption", - "id": 999 - } - }, - "extensions": [ - [ - 1000, - 536870911 - ] - ], - "nested": { - "IdempotencyLevel": { - "values": { - "IDEMPOTENCY_UNKNOWN": 0, - "NO_SIDE_EFFECTS": 1, - "IDEMPOTENT": 2 - } - } - } - }, - "UninterpretedOption": { - "edition": "proto2", - "fields": { - "name": { - "rule": "repeated", - "type": "NamePart", - "id": 2 - }, - "identifierValue": { - "type": "string", - "id": 3 - }, - "positiveIntValue": { - "type": "uint64", - "id": 4 - }, - "negativeIntValue": { - "type": "int64", - "id": 5 - }, - "doubleValue": { - "type": "double", - "id": 6 - }, - "stringValue": { - "type": "bytes", - "id": 7 - }, - "aggregateValue": { - "type": "string", - "id": 8 - } - }, - "nested": { - "NamePart": { - "fields": { - "namePart": { - "rule": "required", - "type": "string", - "id": 1 - }, - "isExtension": { - "rule": "required", - "type": "bool", - "id": 2 - } - } - } - } - }, - "FeatureSet": { - "edition": "proto2", - "fields": { - "fieldPresence": { - "type": "FieldPresence", - "id": 1, - "options": { - "retention": "RETENTION_RUNTIME", - "targets": "TARGET_TYPE_FILE", - "feature_support.edition_introduced": "EDITION_2023", - "edition_defaults.edition": "EDITION_2023", - "edition_defaults.value": "EXPLICIT" - } - }, - "enumType": { - "type": "EnumType", - "id": 2, - "options": { - "retention": "RETENTION_RUNTIME", - "targets": "TARGET_TYPE_FILE", - "feature_support.edition_introduced": "EDITION_2023", - "edition_defaults.edition": "EDITION_PROTO3", - "edition_defaults.value": "OPEN" - } - }, - "repeatedFieldEncoding": { - "type": "RepeatedFieldEncoding", - "id": 3, - "options": { - "retention": "RETENTION_RUNTIME", - "targets": "TARGET_TYPE_FILE", - "feature_support.edition_introduced": "EDITION_2023", - "edition_defaults.edition": "EDITION_PROTO3", - "edition_defaults.value": "PACKED" - } - }, - "utf8Validation": { - "type": "Utf8Validation", - "id": 4, - "options": { - "retention": "RETENTION_RUNTIME", - "targets": "TARGET_TYPE_FILE", - "feature_support.edition_introduced": "EDITION_2023", - "edition_defaults.edition": "EDITION_PROTO3", - "edition_defaults.value": "VERIFY" - } - }, - "messageEncoding": { - "type": "MessageEncoding", - "id": 5, - "options": { - "retention": "RETENTION_RUNTIME", - "targets": "TARGET_TYPE_FILE", - "feature_support.edition_introduced": "EDITION_2023", - "edition_defaults.edition": "EDITION_LEGACY", - "edition_defaults.value": "LENGTH_PREFIXED" - } - }, - "jsonFormat": { - "type": "JsonFormat", - "id": 6, - "options": { - "retention": "RETENTION_RUNTIME", - "targets": "TARGET_TYPE_FILE", - "feature_support.edition_introduced": "EDITION_2023", - "edition_defaults.edition": "EDITION_PROTO3", - "edition_defaults.value": "ALLOW" - } - }, - "enforceNamingStyle": { - "type": "EnforceNamingStyle", - "id": 7, - "options": { - "retention": "RETENTION_SOURCE", - "targets": "TARGET_TYPE_METHOD", - "feature_support.edition_introduced": "EDITION_2024", - "edition_defaults.edition": "EDITION_2024", - "edition_defaults.value": "STYLE2024" - } - }, - "defaultSymbolVisibility": { - "type": "VisibilityFeature.DefaultSymbolVisibility", - "id": 8, - "options": { - "retention": "RETENTION_SOURCE", - "targets": "TARGET_TYPE_FILE", - "feature_support.edition_introduced": "EDITION_2024", - "edition_defaults.edition": "EDITION_2024", - "edition_defaults.value": "EXPORT_TOP_LEVEL" - } - } - }, - "extensions": [ - [ - 1000, - 9994 - ], - [ - 9995, - 9999 - ], - [ - 10000, - 10000 - ] - ], - "reserved": [ - [ - 999, - 999 - ] - ], - "nested": { - "FieldPresence": { - "values": { - "FIELD_PRESENCE_UNKNOWN": 0, - "EXPLICIT": 1, - "IMPLICIT": 2, - "LEGACY_REQUIRED": 3 - } - }, - "EnumType": { - "values": { - "ENUM_TYPE_UNKNOWN": 0, - "OPEN": 1, - "CLOSED": 2 - } - }, - "RepeatedFieldEncoding": { - "values": { - "REPEATED_FIELD_ENCODING_UNKNOWN": 0, - "PACKED": 1, - "EXPANDED": 2 - } - }, - "Utf8Validation": { - "values": { - "UTF8_VALIDATION_UNKNOWN": 0, - "VERIFY": 2, - "NONE": 3 - }, - "reserved": [ - [ - 1, - 1 - ] - ] - }, - "MessageEncoding": { - "values": { - "MESSAGE_ENCODING_UNKNOWN": 0, - "LENGTH_PREFIXED": 1, - "DELIMITED": 2 - } - }, - "JsonFormat": { - "values": { - "JSON_FORMAT_UNKNOWN": 0, - "ALLOW": 1, - "LEGACY_BEST_EFFORT": 2 - } - }, - "EnforceNamingStyle": { - "values": { - "ENFORCE_NAMING_STYLE_UNKNOWN": 0, - "STYLE2024": 1, - "STYLE_LEGACY": 2 - } - }, - "VisibilityFeature": { - "fields": {}, - "reserved": [ - [ - 1, - 536870911 - ] - ], - "nested": { - "DefaultSymbolVisibility": { - "values": { - "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": 0, - "EXPORT_ALL": 1, - "EXPORT_TOP_LEVEL": 2, - "LOCAL_ALL": 3, - "STRICT": 4 - } - } - } - } - } - }, - "FeatureSetDefaults": { - "edition": "proto2", - "fields": { - "defaults": { - "rule": "repeated", - "type": "FeatureSetEditionDefault", - "id": 1 - }, - "minimumEdition": { - "type": "Edition", - "id": 4 - }, - "maximumEdition": { - "type": "Edition", - "id": 5 - } - }, - "nested": { - "FeatureSetEditionDefault": { - "fields": { - "edition": { - "type": "Edition", - "id": 3 - }, - "overridableFeatures": { - "type": "FeatureSet", - "id": 4 - }, - "fixedFeatures": { - "type": "FeatureSet", - "id": 5 - } - }, - "reserved": [ - [ - 1, - 1 - ], - [ - 2, - 2 - ], - "features" - ] - } - } - }, - "SourceCodeInfo": { - "edition": "proto2", - "fields": { - "location": { - "rule": "repeated", - "type": "Location", - "id": 1 - } - }, - "extensions": [ - [ - 536000000, - 536000000 - ] - ], - "nested": { - "Location": { - "fields": { - "path": { - "rule": "repeated", - "type": "int32", - "id": 1, - "options": { - "packed": true - } - }, - "span": { - "rule": "repeated", - "type": "int32", - "id": 2, - "options": { - "packed": true - } - }, - "leadingComments": { - "type": "string", - "id": 3 - }, - "trailingComments": { - "type": "string", - "id": 4 - }, - "leadingDetachedComments": { - "rule": "repeated", - "type": "string", - "id": 6 - } - } - } - } - }, - "GeneratedCodeInfo": { - "edition": "proto2", - "fields": { - "annotation": { - "rule": "repeated", - "type": "Annotation", - "id": 1 - } - }, - "nested": { - "Annotation": { - "fields": { - "path": { - "rule": "repeated", - "type": "int32", - "id": 1, - "options": { - "packed": true - } - }, - "sourceFile": { - "type": "string", - "id": 2 - }, - "begin": { - "type": "int32", - "id": 3 - }, - "end": { - "type": "int32", - "id": 4 - }, - "semantic": { - "type": "Semantic", - "id": 5 - } - }, - "nested": { - "Semantic": { - "values": { - "NONE": 0, - "SET": 1, - "ALIAS": 2 - } - } - } - } - } - }, - "SymbolVisibility": { - "edition": "proto2", - "values": { - "VISIBILITY_UNSET": 0, - "VISIBILITY_LOCAL": 1, - "VISIBILITY_EXPORT": 2 - } - }, - "Duration": { - "fields": { - "seconds": { - "type": "int64", - "id": 1 - }, - "nanos": { - "type": "int32", - "id": 2 - } - } - }, - "Empty": { - "fields": {} - }, - "FieldMask": { - "fields": { - "paths": { - "rule": "repeated", - "type": "string", - "id": 1 - } - } - }, - "Struct": { - "fields": { - "fields": { - "keyType": "string", - "type": "Value", - "id": 1 - } - } - }, - "Value": { - "oneofs": { - "kind": { - "oneof": [ - "nullValue", - "numberValue", - "stringValue", - "boolValue", - "structValue", - "listValue" - ] - } - }, - "fields": { - "nullValue": { - "type": "NullValue", - "id": 1 - }, - "numberValue": { - "type": "double", - "id": 2 - }, - "stringValue": { - "type": "string", - "id": 3 - }, - "boolValue": { - "type": "bool", - "id": 4 - }, - "structValue": { - "type": "Struct", - "id": 5 - }, - "listValue": { - "type": "ListValue", - "id": 6 - } - } - }, - "NullValue": { - "values": { - "NULL_VALUE": 0 - } - }, - "ListValue": { - "fields": { - "values": { - "rule": "repeated", - "type": "Value", - "id": 1 - } - } - }, - "Timestamp": { - "fields": { - "seconds": { - "type": "int64", - "id": 1 - }, - "nanos": { - "type": "int32", - "id": 2 - } - } - } - } - } - } - } - } -} \ No newline at end of file +{} \ No newline at end of file diff --git a/handwritten/pubsub/src/index.ts b/handwritten/pubsub/src/index.ts index 2b1432cdbdce..2e8ae3fff203 100644 --- a/handwritten/pubsub/src/index.ts +++ b/handwritten/pubsub/src/index.ts @@ -84,7 +84,7 @@ * @property {constructor} SubscriberClient * Reference to {@link v1.SubscriberClient}. */ -import * as v1 from './v1'; +import * as v1 from '@google-cloud/pubsub-api'; export {v1}; export {ServiceError, CallOptions} from 'google-gax'; export { diff --git a/handwritten/pubsub/src/message-stream.ts b/handwritten/pubsub/src/message-stream.ts index f1f2102f4d9a..35922cdf7470 100644 --- a/handwritten/pubsub/src/message-stream.ts +++ b/handwritten/pubsub/src/message-stream.ts @@ -46,7 +46,8 @@ const KEEP_ALIVE_INTERVAL = 30000; /*! * Deadline for the stream. */ -const PULL_TIMEOUT = require('./v1/subscriber_client_config.json').interfaces[ +const gapicConfig = require("@google-cloud/pubsub-api/src/v1/subscriber_client_config.json"); +const PULL_TIMEOUT = gapicConfig.interfaces[ 'google.pubsub.v1.Subscriber' ].methods.StreamingPull.timeout_millis; diff --git a/handwritten/pubsub/src/pubsub.ts b/handwritten/pubsub/src/pubsub.ts index e9c9fc7bdf1e..e3c535b07110 100644 --- a/handwritten/pubsub/src/pubsub.ts +++ b/handwritten/pubsub/src/pubsub.ts @@ -19,11 +19,10 @@ import {replaceProjectIdToken} from '@google-cloud/projectify'; import * as extend from 'extend'; import {AuthClient, GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; import * as gax from 'google-gax'; +import {v1} from '.'; // eslint-disable-next-line @typescript-eslint/no-var-requires const PKG = require('../../package.json'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const v1 = require('./v1'); import {promisifySome} from './util'; import { @@ -57,9 +56,10 @@ import {PublishOptions} from './publisher'; import {CallOptions} from 'google-gax'; import {Transform} from 'stream'; import {google} from '../protos/protos'; -import {SchemaServiceClient} from './v1'; import * as tracing from './telemetry-tracing'; +type SchemaServiceClient = v1.SchemaServiceClient; + /** * Project ID placeholder. * @type {string} @@ -1262,7 +1262,7 @@ export class PubSub { */ async getSchemaClient(): Promise { if (!this.schemaClient) { - const options = await this.getClientConfig(); + const options = await this.getClientConfig() as gax.ClientOptions; this.schemaClient = new v1.SchemaServiceClient(options); } @@ -1307,13 +1307,13 @@ export class PubSub { */ async getClientAsync_(config: GetClientConfig): Promise { // Make sure we've got a fully created config with projectId and such. - const options = await this.getClientConfig(); + const options = await this.getClientConfig() as gax.ClientOptions; let gaxClient = this.api[config.client]; if (!gaxClient) { // Lazily instantiate client. - gaxClient = new v1[config.client](options) as gax.ClientStub; + gaxClient = new v1[config.client](options) as unknown as gax.ClientStub; this.api[config.client] = gaxClient; } diff --git a/handwritten/pubsub/src/subscriber.ts b/handwritten/pubsub/src/subscriber.ts index 8332e93c819d..780f94b7342c 100644 --- a/handwritten/pubsub/src/subscriber.ts +++ b/handwritten/pubsub/src/subscriber.ts @@ -17,7 +17,7 @@ import {DateStruct, PreciseDate} from '@google-cloud/precise-date'; import {replaceProjectIdToken} from '@google-cloud/projectify'; import {promisify} from '@google-cloud/promisify'; -import defer = require('p-defer'); +import * as defer from 'p-defer'; import {google} from '../protos/protos'; import {Histogram} from './histogram'; @@ -26,7 +26,6 @@ import {AckQueue, BatchOptions, ModAckQueue} from './message-queues'; import {MessageStream, MessageStreamOptions} from './message-stream'; import {Subscription} from './subscription'; import {defaultOptions} from './default-options'; -import {SubscriberClient} from './v1'; import * as tracing from './telemetry-tracing'; import {Duration, atMost as durationAtMost} from './temporal'; import {EventEmitter} from 'events'; @@ -36,6 +35,9 @@ import {logs as baseLogs, LoggingFunction} from './logs'; export {StatusError} from './message-stream'; +import {v1} from '.'; +type SubscriberClient = v1.SubscriberClient; + /** * Loggers. Exported for unit tests. * diff --git a/handwritten/pubsub/src/v1/index.ts b/handwritten/pubsub/src/v1/index.ts deleted file mode 100644 index 1dce1428427c..000000000000 --- a/handwritten/pubsub/src/v1/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2026 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// ** This file is automatically generated by gapic-generator-typescript. ** -// ** https://github.com/googleapis/gapic-generator-typescript ** -// ** All changes to this file may be overwritten. ** - -export {PublisherClient} from './publisher_client'; -export {SchemaServiceClient} from './schema_service_client'; -export {SubscriberClient} from './subscriber_client'; diff --git a/handwritten/pubsub/src/v1/publisher_client.ts b/handwritten/pubsub/src/v1/publisher_client.ts deleted file mode 100644 index 355581941e11..000000000000 --- a/handwritten/pubsub/src/v1/publisher_client.ts +++ /dev/null @@ -1,2319 +0,0 @@ -// Copyright 2026 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// ** This file is automatically generated by gapic-generator-typescript. ** -// ** https://github.com/googleapis/gapic-generator-typescript ** -// ** All changes to this file may be overwritten. ** - -/* global window */ -import type * as gax from 'google-gax'; -import type { - Callback, - CallOptions, - Descriptors, - ClientOptions, - PaginationCallback, - GaxCall, - IamClient, - IamProtos, -} from 'google-gax'; -import {Transform} from 'stream'; -import * as protos from '../../protos/protos'; -import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; - -/** - * Client JSON configuration object, loaded from - * `src/v1/publisher_client_config.json`. - * This file defines retry strategy and timeouts for all API methods in this library. - */ -import * as gapicConfig from './publisher_client_config.json'; -const version = require('../../../package.json').version; - -/** - * The service that an application uses to manipulate topics, and to send - * messages to a topic. - * @class - * @memberof v1 - */ -export class PublisherClient { - private _terminated = false; - private _opts: ClientOptions; - private _providedCustomServicePath: boolean; - private _gaxModule: typeof gax | typeof gax.fallback; - private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; - private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; - private _universeDomain: string; - private _servicePath: string; - private _log = logging.log('pubsub'); - - auth: gax.GoogleAuth; - descriptors: Descriptors = { - page: {}, - stream: {}, - longrunning: {}, - batching: {}, - }; - warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - iamClient: IamClient; - pathTemplates: {[name: string]: gax.PathTemplate}; - publisherStub?: Promise<{[name: string]: Function}>; - - /** - * Construct an instance of PublisherClient. - * - * @param {object} [options] - The configuration object. - * The options accepted by the constructor are described in detail - * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance). - * The common options are: - * @param {object} [options.credentials] - Credentials object. - * @param {string} [options.credentials.client_email] - * @param {string} [options.credentials.private_key] - * @param {string} [options.email] - Account email address. Required when - * using a .pem or .p12 keyFilename. - * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or - * .p12 key downloaded from the Google Developers Console. If you provide - * a path to a JSON file, the projectId option below is not necessary. - * NOTE: .pem and .p12 require you to specify options.email as well. - * @param {number} [options.port] - The port on which to connect to - * the remote host. - * @param {string} [options.projectId] - The project ID from the Google - * Developer's Console, e.g. 'grape-spaceship-123'. We will also check - * the environment variable GCLOUD_PROJECT for your project ID. If your - * app is running in an environment which supports - * {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials}, - * your project ID will be detected automatically. - * @param {string} [options.apiEndpoint] - The domain name of the - * API remote host. - * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. - * Follows the structure of {@link gapicConfig}. - * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode. - * For more information, please check the - * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. - * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you - * need to avoid loading the default gRPC version and want to use the fallback - * HTTP implementation. Load only fallback version and pass it to the constructor: - * ``` - * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC - * const client = new PublisherClient({fallback: true}, gax); - * ``` - */ - constructor( - opts?: ClientOptions, - gaxInstance?: typeof gax | typeof gax.fallback, - ) { - // Ensure that options include all the required fields. - const staticMembers = this.constructor as typeof PublisherClient; - if ( - opts?.universe_domain && - opts?.universeDomain && - opts?.universe_domain !== opts?.universeDomain - ) { - throw new Error( - 'Please set either universe_domain or universeDomain, but not both.', - ); - } - const universeDomainEnvVar = - typeof process === 'object' && typeof process.env === 'object' - ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] - : undefined; - this._universeDomain = - opts?.universeDomain ?? - opts?.universe_domain ?? - universeDomainEnvVar ?? - 'googleapis.com'; - this._servicePath = 'pubsub.' + this._universeDomain; - const servicePath = - opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!( - opts?.servicePath || opts?.apiEndpoint - ); - const port = opts?.port || staticMembers.port; - const clientConfig = opts?.clientConfig ?? {}; - const fallback = - opts?.fallback ?? - (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); - - // Request numeric enum values if REST transport is used. - opts.numericEnums = true; - - // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. - if (servicePath !== this._servicePath && !('scopes' in opts)) { - opts['scopes'] = staticMembers.scopes; - } - - // Load google-gax module synchronously if needed - if (!gaxInstance) { - gaxInstance = require('google-gax') as typeof gax; - } - - // Choose either gRPC or proto-over-HTTP implementation of google-gax. - this._gaxModule = opts.fallback ? gaxInstance.fallback : gaxInstance; - - // Create a `gaxGrpc` object, with any grpc-specific options sent to the client. - this._gaxGrpc = new this._gaxModule.GrpcClient(opts); - - // Save options to use in initialize() method. - this._opts = opts; - - // Save the auth object to the client, for use by other methods. - this.auth = this._gaxGrpc.auth as gax.GoogleAuth; - - // Set useJWTAccessWithScope on the auth object. - this.auth.useJWTAccessWithScope = true; - - // Set defaultServicePath on the auth object. - this.auth.defaultServicePath = this._servicePath; - - // Set the default scopes in auth client if needed. - if (servicePath === this._servicePath) { - this.auth.defaultScopes = staticMembers.scopes; - } - this.iamClient = new this._gaxModule.IamClient(this._gaxGrpc, opts); - - // Determine the client header string. - const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; - if (typeof process === 'object' && 'versions' in process) { - clientHeader.push(`gl-node/${process.versions.node}`); - } else { - clientHeader.push(`gl-web/${this._gaxModule.version}`); - } - if (!opts.fallback) { - clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); - } else { - clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`); - } - if (opts.libName && opts.libVersion) { - clientHeader.push(`${opts.libName}/${opts.libVersion}`); - } - // Load the applicable protos. - this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos); - - // This API contains "path templates"; forward-slash-separated - // identifiers to uniquely identify resources within the API. - // Create useful helper objects for these. - this.pathTemplates = { - cryptoKeyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}', - ), - projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}', - ), - projectTopicsPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/topics/{topic}', - ), - schemaPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/schemas/{schema}', - ), - snapshotPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/snapshots/{snapshot}', - ), - subscriptionPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/subscriptions/{subscription}', - ), - }; - - // Some of the methods on this service return "paged" results, - // (e.g. 50 results at a time, with tokens to get subsequent - // pages). Denote the keys used for pagination and results. - this.descriptors.page = { - listTopics: new this._gaxModule.PageDescriptor( - 'pageToken', - 'nextPageToken', - 'topics', - ), - listTopicSubscriptions: new this._gaxModule.PageDescriptor( - 'pageToken', - 'nextPageToken', - 'subscriptions', - ), - listTopicSnapshots: new this._gaxModule.PageDescriptor( - 'pageToken', - 'nextPageToken', - 'snapshots', - ), - }; - - const protoFilesRoot = this._gaxModule.protobufFromJSON(jsonProtos); - // Some methods on this API support automatically batching - // requests; denote this. - - this.descriptors.batching = { - publish: new this._gaxModule.BundleDescriptor( - 'messages', - ['topic'], - 'message_ids', - this._gaxModule.GrpcClient.createByteLengthFunction( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - protoFilesRoot.lookupType('google.pubsub.v1.PubsubMessage') as any, - ), - ), - }; - - // Put together the default options sent with requests. - this._defaults = this._gaxGrpc.constructSettings( - 'google.pubsub.v1.Publisher', - gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, - {'x-goog-api-client': clientHeader.join(' ')}, - ); - - // Set up a dictionary of "inner API calls"; the core implementation - // of calling the API is handled in `google-gax`, with this code - // merely providing the destination and request information. - this.innerApiCalls = {}; - - // Add a warn function to the client constructor so it can be easily tested. - this.warn = this._gaxModule.warn; - } - - /** - * Initialize the client. - * Performs asynchronous operations (such as authentication) and prepares the client. - * This function will be called automatically when any class method is called for the - * first time, but if you need to initialize it before calling an actual method, - * feel free to call initialize() directly. - * - * You can await on this method if you want to make sure the client is initialized. - * - * @returns {Promise} A promise that resolves to an authenticated service stub. - */ - initialize() { - // If the client stub promise is already initialized, return immediately. - if (this.publisherStub) { - return this.publisherStub; - } - - // Put together the "service stub" for - // google.pubsub.v1.Publisher. - this.publisherStub = this._gaxGrpc.createStub( - this._opts.fallback - ? (this._protos as protobuf.Root).lookupService( - 'google.pubsub.v1.Publisher', - ) - : // eslint-disable-next-line @typescript-eslint/no-explicit-any - (this._protos as any).google.pubsub.v1.Publisher, - this._opts, - this._providedCustomServicePath, - ) as Promise<{[method: string]: Function}>; - - // Iterate over each of the methods that the service provides - // and create an API call method for each. - const publisherStubMethods = [ - 'createTopic', - 'updateTopic', - 'publish', - 'getTopic', - 'listTopics', - 'listTopicSubscriptions', - 'listTopicSnapshots', - 'deleteTopic', - 'detachSubscription', - ]; - for (const methodName of publisherStubMethods) { - const callPromise = this.publisherStub.then( - stub => - (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error | null | undefined) => () => { - throw err; - }, - ); - - const descriptor = - this.descriptors.page[methodName] || - this.descriptors.batching?.[methodName] || - undefined; - const apiCall = this._gaxModule.createApiCall( - callPromise, - this._defaults[methodName], - descriptor, - this._opts.fallback, - ); - - this.innerApiCalls[methodName] = apiCall; - } - - return this.publisherStub; - } - - /** - * The DNS address for this API service. - * @deprecated Use the apiEndpoint method of the client instance. - * @returns {string} The DNS address for this service. - */ - static get servicePath() { - if ( - typeof process === 'object' && - typeof process.emitWarning === 'function' - ) { - process.emitWarning( - 'Static servicePath is deprecated, please use the instance method instead.', - 'DeprecationWarning', - ); - } - return 'pubsub.googleapis.com'; - } - - /** - * The DNS address for this API service - same as servicePath. - * @deprecated Use the apiEndpoint method of the client instance. - * @returns {string} The DNS address for this service. - */ - static get apiEndpoint() { - if ( - typeof process === 'object' && - typeof process.emitWarning === 'function' - ) { - process.emitWarning( - 'Static apiEndpoint is deprecated, please use the instance method instead.', - 'DeprecationWarning', - ); - } - return 'pubsub.googleapis.com'; - } - - /** - * The DNS address for this API service. - * @returns {string} The DNS address for this service. - */ - get apiEndpoint() { - return this._servicePath; - } - - get universeDomain() { - return this._universeDomain; - } - - /** - * The port for this API service. - * @returns {number} The default port for this service. - */ - static get port() { - return 443; - } - - /** - * The scopes needed to make gRPC calls for every method defined - * in this service. - * @returns {string[]} List of default scopes. - */ - static get scopes() { - return [ - 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/pubsub', - ]; - } - - getProjectId(): Promise; - getProjectId(callback: Callback): void; - /** - * Return the project ID used by this class. - * @returns {Promise} A promise that resolves to string containing the project ID. - */ - getProjectId( - callback?: Callback, - ): Promise | void { - if (callback) { - this.auth.getProjectId(callback); - return; - } - return this.auth.getProjectId(); - } - - // ------------------- - // -- Service calls -- - // ------------------- - /** - * Creates the given topic with the given name. See the [resource name rules] - * (https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. Identifier. The name of the topic. It must have the format - * `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, - * and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), - * underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent - * signs (`%`). It must be between 3 and 255 characters in length, and it - * must not start with `"goog"`. - * @param {number[]} [request.labels] - * Optional. See [Creating and managing labels] - * (https://cloud.google.com/pubsub/docs/labels). - * @param {google.pubsub.v1.MessageStoragePolicy} [request.messageStoragePolicy] - * Optional. Policy constraining the set of Google Cloud Platform regions - * where messages published to the topic may be stored. If not present, then - * no constraints are in effect. - * @param {string} [request.kmsKeyName] - * Optional. The resource name of the Cloud KMS CryptoKey to be used to - * protect access to messages published on this topic. - * - * The expected format is `projects/* /locations/* /keyRings/* /cryptoKeys/*`. - * @param {google.pubsub.v1.SchemaSettings} [request.schemaSettings] - * Optional. Settings for validating messages published against a schema. - * @param {boolean} [request.satisfiesPzs] - * Optional. Reserved for future use. This field is set only in responses from - * the server; it is ignored if it is set in any requests. - * @param {google.protobuf.Duration} [request.messageRetentionDuration] - * Optional. Indicates the minimum duration to retain a message after it is - * published to the topic. If this field is set, messages published to the - * topic in the last `message_retention_duration` are always available to - * subscribers. For instance, it allows any attached subscription to [seek to - * a - * timestamp](https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) - * that is up to `message_retention_duration` in the past. If this field is - * not set, message retention is controlled by settings on individual - * subscriptions. Cannot be more than 31 days or less than 10 minutes. - * @param {google.pubsub.v1.Topic.State} request.state - * Output only. An output-only field indicating the state of the topic. - * @param {google.pubsub.v1.IngestionDataSourceSettings} [request.ingestionDataSourceSettings] - * Optional. Settings for ingestion from a data source into this topic. - * @param {number[]} [request.messageTransforms] - * Optional. Transforms to be applied to messages published to the topic. - * Transforms are applied in the order specified. - * @param {number[]} request.tags - * Optional. Input only. Immutable. Tag keys/values directly bound to this - * resource. For example: - * "123/environment": "production", - * "123/costCenter": "marketing" - * See https://docs.cloud.google.com/pubsub/docs/tags for more information on - * using tags with Pub/Sub resources. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Topic|Topic}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - createTopic( - request?: protos.google.pubsub.v1.ITopic, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.ITopic | undefined, - {} | undefined, - ] - >; - createTopic( - request: protos.google.pubsub.v1.ITopic, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.ITopic | null | undefined, - {} | null | undefined - >, - ): void; - createTopic( - request: protos.google.pubsub.v1.ITopic, - callback: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.ITopic | null | undefined, - {} | null | undefined - >, - ): void; - createTopic( - request?: protos.google.pubsub.v1.ITopic, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.ITopic | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.ITopic | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.ITopic | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('createTopic request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.ITopic | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('createTopic response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .createTopic(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.ITopic | undefined, - {} | undefined, - ]) => { - this._log.info('createTopic response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Updates an existing topic by updating the fields specified in the update - * mask. Note that certain properties of a topic are not modifiable. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.pubsub.v1.Topic} request.topic - * Required. The updated topic object. - * @param {google.protobuf.FieldMask} request.updateMask - * Required. Indicates which fields in the provided topic to update. Must be - * specified and non-empty. Note that if `update_mask` contains - * "message_storage_policy" but the `message_storage_policy` is not set in - * the `topic` provided above, then the updated value is determined by the - * policy configured at the project or organization level. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Topic|Topic}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - updateTopic( - request?: protos.google.pubsub.v1.IUpdateTopicRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IUpdateTopicRequest | undefined, - {} | undefined, - ] - >; - updateTopic( - request: protos.google.pubsub.v1.IUpdateTopicRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IUpdateTopicRequest | null | undefined, - {} | null | undefined - >, - ): void; - updateTopic( - request: protos.google.pubsub.v1.IUpdateTopicRequest, - callback: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IUpdateTopicRequest | null | undefined, - {} | null | undefined - >, - ): void; - updateTopic( - request?: protos.google.pubsub.v1.IUpdateTopicRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IUpdateTopicRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IUpdateTopicRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IUpdateTopicRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - 'topic.name': request.topic!.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('updateTopic request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IUpdateTopicRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('updateTopic response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .updateTopic(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IUpdateTopicRequest | undefined, - {} | undefined, - ]) => { - this._log.info('updateTopic response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic - * does not exist. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. The messages in the request will be published on this topic. - * Format is `projects/{project}/topics/{topic}`. - * @param {number[]} request.messages - * Required. The messages to publish. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.PublishResponse|PublishResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - publish( - request?: protos.google.pubsub.v1.IPublishRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.IPublishResponse, - protos.google.pubsub.v1.IPublishRequest | undefined, - {} | undefined, - ] - >; - publish( - request: protos.google.pubsub.v1.IPublishRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.IPublishResponse, - protos.google.pubsub.v1.IPublishRequest | null | undefined, - {} | null | undefined - >, - ): void; - publish( - request: protos.google.pubsub.v1.IPublishRequest, - callback: Callback< - protos.google.pubsub.v1.IPublishResponse, - protos.google.pubsub.v1.IPublishRequest | null | undefined, - {} | null | undefined - >, - ): void; - publish( - request?: protos.google.pubsub.v1.IPublishRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.IPublishResponse, - protos.google.pubsub.v1.IPublishRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.IPublishResponse, - protos.google.pubsub.v1.IPublishRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.IPublishResponse, - protos.google.pubsub.v1.IPublishRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('publish request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.IPublishResponse, - protos.google.pubsub.v1.IPublishRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('publish response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .publish(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.IPublishResponse, - protos.google.pubsub.v1.IPublishRequest | undefined, - {} | undefined, - ]) => { - this._log.info('publish response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Gets the configuration of a topic. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. The name of the topic to get. - * Format is `projects/{project}/topics/{topic}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Topic|Topic}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - getTopic( - request?: protos.google.pubsub.v1.IGetTopicRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IGetTopicRequest | undefined, - {} | undefined, - ] - >; - getTopic( - request: protos.google.pubsub.v1.IGetTopicRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IGetTopicRequest | null | undefined, - {} | null | undefined - >, - ): void; - getTopic( - request: protos.google.pubsub.v1.IGetTopicRequest, - callback: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IGetTopicRequest | null | undefined, - {} | null | undefined - >, - ): void; - getTopic( - request?: protos.google.pubsub.v1.IGetTopicRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IGetTopicRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IGetTopicRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IGetTopicRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('getTopic request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IGetTopicRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('getTopic response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .getTopic(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ITopic, - protos.google.pubsub.v1.IGetTopicRequest | undefined, - {} | undefined, - ]) => { - this._log.info('getTopic response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Deletes the topic with the given name. Returns `NOT_FOUND` if the topic - * does not exist. After a topic is deleted, a new topic may be created with - * the same name; this is an entirely new topic with none of the old - * configuration or subscriptions. Existing subscriptions to this topic are - * not deleted, but their `topic` field is set to `_deleted-topic_`. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. Name of the topic to delete. - * Format is `projects/{project}/topics/{topic}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - deleteTopic( - request?: protos.google.pubsub.v1.IDeleteTopicRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteTopicRequest | undefined, - {} | undefined, - ] - >; - deleteTopic( - request: protos.google.pubsub.v1.IDeleteTopicRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteTopicRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteTopic( - request: protos.google.pubsub.v1.IDeleteTopicRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteTopicRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteTopic( - request?: protos.google.pubsub.v1.IDeleteTopicRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteTopicRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteTopicRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteTopicRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('deleteTopic request %j', request); - const wrappedCallback: - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteTopicRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('deleteTopic response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .deleteTopic(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteTopicRequest | undefined, - {} | undefined, - ]) => { - this._log.info('deleteTopic response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Detaches a subscription from this topic. All messages retained in the - * subscription are dropped. Subsequent `Pull` and `StreamingPull` requests - * will return FAILED_PRECONDITION. If the subscription is a push - * subscription, pushes to the endpoint will stop. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.subscription - * Required. The subscription to detach. - * Format is `projects/{project}/subscriptions/{subscription}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.DetachSubscriptionResponse|DetachSubscriptionResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - detachSubscription( - request?: protos.google.pubsub.v1.IDetachSubscriptionRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.IDetachSubscriptionResponse, - protos.google.pubsub.v1.IDetachSubscriptionRequest | undefined, - {} | undefined, - ] - >; - detachSubscription( - request: protos.google.pubsub.v1.IDetachSubscriptionRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.IDetachSubscriptionResponse, - protos.google.pubsub.v1.IDetachSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): void; - detachSubscription( - request: protos.google.pubsub.v1.IDetachSubscriptionRequest, - callback: Callback< - protos.google.pubsub.v1.IDetachSubscriptionResponse, - protos.google.pubsub.v1.IDetachSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): void; - detachSubscription( - request?: protos.google.pubsub.v1.IDetachSubscriptionRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.IDetachSubscriptionResponse, - protos.google.pubsub.v1.IDetachSubscriptionRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.IDetachSubscriptionResponse, - protos.google.pubsub.v1.IDetachSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.IDetachSubscriptionResponse, - protos.google.pubsub.v1.IDetachSubscriptionRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - subscription: request.subscription ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('detachSubscription request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.IDetachSubscriptionResponse, - protos.google.pubsub.v1.IDetachSubscriptionRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('detachSubscription response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .detachSubscription(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.IDetachSubscriptionResponse, - protos.google.pubsub.v1.IDetachSubscriptionRequest | undefined, - {} | undefined, - ]) => { - this._log.info('detachSubscription response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - - /** - * Lists matching topics. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list topics. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of topics to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicsResponse`; indicates - * that this is a continuation of a prior `ListTopics` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.pubsub.v1.Topic|Topic}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listTopicsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopics( - request?: protos.google.pubsub.v1.IListTopicsRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ITopic[], - protos.google.pubsub.v1.IListTopicsRequest | null, - protos.google.pubsub.v1.IListTopicsResponse, - ] - >; - listTopics( - request: protos.google.pubsub.v1.IListTopicsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.pubsub.v1.IListTopicsRequest, - protos.google.pubsub.v1.IListTopicsResponse | null | undefined, - protos.google.pubsub.v1.ITopic - >, - ): void; - listTopics( - request: protos.google.pubsub.v1.IListTopicsRequest, - callback: PaginationCallback< - protos.google.pubsub.v1.IListTopicsRequest, - protos.google.pubsub.v1.IListTopicsResponse | null | undefined, - protos.google.pubsub.v1.ITopic - >, - ): void; - listTopics( - request?: protos.google.pubsub.v1.IListTopicsRequest, - optionsOrCallback?: - | CallOptions - | PaginationCallback< - protos.google.pubsub.v1.IListTopicsRequest, - protos.google.pubsub.v1.IListTopicsResponse | null | undefined, - protos.google.pubsub.v1.ITopic - >, - callback?: PaginationCallback< - protos.google.pubsub.v1.IListTopicsRequest, - protos.google.pubsub.v1.IListTopicsResponse | null | undefined, - protos.google.pubsub.v1.ITopic - >, - ): Promise< - [ - protos.google.pubsub.v1.ITopic[], - protos.google.pubsub.v1.IListTopicsRequest | null, - protos.google.pubsub.v1.IListTopicsResponse, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - const wrappedCallback: - | PaginationCallback< - protos.google.pubsub.v1.IListTopicsRequest, - protos.google.pubsub.v1.IListTopicsResponse | null | undefined, - protos.google.pubsub.v1.ITopic - > - | undefined = callback - ? (error, values, nextPageRequest, rawResponse) => { - this._log.info('listTopics values %j', values); - callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. - } - : undefined; - this._log.info('listTopics request %j', request); - return this.innerApiCalls - .listTopics(request, options, wrappedCallback) - ?.then( - ([response, input, output]: [ - protos.google.pubsub.v1.ITopic[], - protos.google.pubsub.v1.IListTopicsRequest | null, - protos.google.pubsub.v1.IListTopicsResponse, - ]) => { - this._log.info('listTopics values %j', response); - return [response, input, output]; - }, - ); - } - - /** - * Equivalent to `listTopics`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list topics. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of topics to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicsResponse`; indicates - * that this is a continuation of a prior `ListTopics` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.pubsub.v1.Topic|Topic} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listTopicsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopicsStream( - request?: protos.google.pubsub.v1.IListTopicsRequest, - options?: CallOptions, - ): Transform { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - const defaultCallSettings = this._defaults['listTopics']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listTopics stream %j', request); - return this.descriptors.page.listTopics.createStream( - this.innerApiCalls.listTopics as GaxCall, - request, - callSettings, - ); - } - - /** - * Equivalent to `listTopics`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list topics. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of topics to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicsResponse`; indicates - * that this is a continuation of a prior `ListTopics` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.pubsub.v1.Topic|Topic}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopicsAsync( - request?: protos.google.pubsub.v1.IListTopicsRequest, - options?: CallOptions, - ): AsyncIterable { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - const defaultCallSettings = this._defaults['listTopics']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listTopics iterate %j', request); - return this.descriptors.page.listTopics.asyncIterate( - this.innerApiCalls['listTopics'] as GaxCall, - request as {}, - callSettings, - ) as AsyncIterable; - } - /** - * Lists the names of the attached subscriptions on this topic. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. The name of the topic that subscriptions are attached to. - * Format is `projects/{project}/topics/{topic}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of subscription names to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicSubscriptionsResponse`; - * indicates that this is a continuation of a prior `ListTopicSubscriptions` - * call, and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of string. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listTopicSubscriptionsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopicSubscriptions( - request?: protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - options?: CallOptions, - ): Promise< - [ - string[], - protos.google.pubsub.v1.IListTopicSubscriptionsRequest | null, - protos.google.pubsub.v1.IListTopicSubscriptionsResponse, - ] - >; - listTopicSubscriptions( - request: protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - | protos.google.pubsub.v1.IListTopicSubscriptionsResponse - | null - | undefined, - string - >, - ): void; - listTopicSubscriptions( - request: protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - callback: PaginationCallback< - protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - | protos.google.pubsub.v1.IListTopicSubscriptionsResponse - | null - | undefined, - string - >, - ): void; - listTopicSubscriptions( - request?: protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - optionsOrCallback?: - | CallOptions - | PaginationCallback< - protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - | protos.google.pubsub.v1.IListTopicSubscriptionsResponse - | null - | undefined, - string - >, - callback?: PaginationCallback< - protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - | protos.google.pubsub.v1.IListTopicSubscriptionsResponse - | null - | undefined, - string - >, - ): Promise< - [ - string[], - protos.google.pubsub.v1.IListTopicSubscriptionsRequest | null, - protos.google.pubsub.v1.IListTopicSubscriptionsResponse, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - const wrappedCallback: - | PaginationCallback< - protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - | protos.google.pubsub.v1.IListTopicSubscriptionsResponse - | null - | undefined, - string - > - | undefined = callback - ? (error, values, nextPageRequest, rawResponse) => { - this._log.info('listTopicSubscriptions values %j', values); - callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. - } - : undefined; - this._log.info('listTopicSubscriptions request %j', request); - return this.innerApiCalls - .listTopicSubscriptions(request, options, wrappedCallback) - ?.then( - ([response, input, output]: [ - string[], - protos.google.pubsub.v1.IListTopicSubscriptionsRequest | null, - protos.google.pubsub.v1.IListTopicSubscriptionsResponse, - ]) => { - this._log.info('listTopicSubscriptions values %j', response); - return [response, input, output]; - }, - ); - } - - /** - * Equivalent to `listTopicSubscriptions`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. The name of the topic that subscriptions are attached to. - * Format is `projects/{project}/topics/{topic}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of subscription names to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicSubscriptionsResponse`; - * indicates that this is a continuation of a prior `ListTopicSubscriptions` - * call, and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing string on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listTopicSubscriptionsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopicSubscriptionsStream( - request?: protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - options?: CallOptions, - ): Transform { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - const defaultCallSettings = this._defaults['listTopicSubscriptions']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listTopicSubscriptions stream %j', request); - return this.descriptors.page.listTopicSubscriptions.createStream( - this.innerApiCalls.listTopicSubscriptions as GaxCall, - request, - callSettings, - ); - } - - /** - * Equivalent to `listTopicSubscriptions`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. The name of the topic that subscriptions are attached to. - * Format is `projects/{project}/topics/{topic}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of subscription names to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicSubscriptionsResponse`; - * indicates that this is a continuation of a prior `ListTopicSubscriptions` - * call, and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * string. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopicSubscriptionsAsync( - request?: protos.google.pubsub.v1.IListTopicSubscriptionsRequest, - options?: CallOptions, - ): AsyncIterable { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - const defaultCallSettings = this._defaults['listTopicSubscriptions']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listTopicSubscriptions iterate %j', request); - return this.descriptors.page.listTopicSubscriptions.asyncIterate( - this.innerApiCalls['listTopicSubscriptions'] as GaxCall, - request as {}, - callSettings, - ) as AsyncIterable; - } - /** - * Lists the names of the snapshots on this topic. Snapshots are used in - * [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations, - * which allow you to manage message acknowledgments in bulk. That is, you can - * set the acknowledgment state of messages in an existing subscription to the - * state captured by a snapshot. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. The name of the topic that snapshots are attached to. - * Format is `projects/{project}/topics/{topic}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of snapshot names to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicSnapshotsResponse`; - * indicates that this is a continuation of a prior `ListTopicSnapshots` call, - * and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of string. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listTopicSnapshotsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopicSnapshots( - request?: protos.google.pubsub.v1.IListTopicSnapshotsRequest, - options?: CallOptions, - ): Promise< - [ - string[], - protos.google.pubsub.v1.IListTopicSnapshotsRequest | null, - protos.google.pubsub.v1.IListTopicSnapshotsResponse, - ] - >; - listTopicSnapshots( - request: protos.google.pubsub.v1.IListTopicSnapshotsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.pubsub.v1.IListTopicSnapshotsRequest, - protos.google.pubsub.v1.IListTopicSnapshotsResponse | null | undefined, - string - >, - ): void; - listTopicSnapshots( - request: protos.google.pubsub.v1.IListTopicSnapshotsRequest, - callback: PaginationCallback< - protos.google.pubsub.v1.IListTopicSnapshotsRequest, - protos.google.pubsub.v1.IListTopicSnapshotsResponse | null | undefined, - string - >, - ): void; - listTopicSnapshots( - request?: protos.google.pubsub.v1.IListTopicSnapshotsRequest, - optionsOrCallback?: - | CallOptions - | PaginationCallback< - protos.google.pubsub.v1.IListTopicSnapshotsRequest, - | protos.google.pubsub.v1.IListTopicSnapshotsResponse - | null - | undefined, - string - >, - callback?: PaginationCallback< - protos.google.pubsub.v1.IListTopicSnapshotsRequest, - protos.google.pubsub.v1.IListTopicSnapshotsResponse | null | undefined, - string - >, - ): Promise< - [ - string[], - protos.google.pubsub.v1.IListTopicSnapshotsRequest | null, - protos.google.pubsub.v1.IListTopicSnapshotsResponse, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - const wrappedCallback: - | PaginationCallback< - protos.google.pubsub.v1.IListTopicSnapshotsRequest, - | protos.google.pubsub.v1.IListTopicSnapshotsResponse - | null - | undefined, - string - > - | undefined = callback - ? (error, values, nextPageRequest, rawResponse) => { - this._log.info('listTopicSnapshots values %j', values); - callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. - } - : undefined; - this._log.info('listTopicSnapshots request %j', request); - return this.innerApiCalls - .listTopicSnapshots(request, options, wrappedCallback) - ?.then( - ([response, input, output]: [ - string[], - protos.google.pubsub.v1.IListTopicSnapshotsRequest | null, - protos.google.pubsub.v1.IListTopicSnapshotsResponse, - ]) => { - this._log.info('listTopicSnapshots values %j', response); - return [response, input, output]; - }, - ); - } - - /** - * Equivalent to `listTopicSnapshots`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. The name of the topic that snapshots are attached to. - * Format is `projects/{project}/topics/{topic}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of snapshot names to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicSnapshotsResponse`; - * indicates that this is a continuation of a prior `ListTopicSnapshots` call, - * and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing string on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listTopicSnapshotsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopicSnapshotsStream( - request?: protos.google.pubsub.v1.IListTopicSnapshotsRequest, - options?: CallOptions, - ): Transform { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - const defaultCallSettings = this._defaults['listTopicSnapshots']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listTopicSnapshots stream %j', request); - return this.descriptors.page.listTopicSnapshots.createStream( - this.innerApiCalls.listTopicSnapshots as GaxCall, - request, - callSettings, - ); - } - - /** - * Equivalent to `listTopicSnapshots`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.topic - * Required. The name of the topic that snapshots are attached to. - * Format is `projects/{project}/topics/{topic}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of snapshot names to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListTopicSnapshotsResponse`; - * indicates that this is a continuation of a prior `ListTopicSnapshots` call, - * and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * string. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listTopicSnapshotsAsync( - request?: protos.google.pubsub.v1.IListTopicSnapshotsRequest, - options?: CallOptions, - ): AsyncIterable { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - topic: request.topic ?? '', - }); - const defaultCallSettings = this._defaults['listTopicSnapshots']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listTopicSnapshots iterate %j', request); - return this.descriptors.page.listTopicSnapshots.asyncIterate( - this.innerApiCalls['listTopicSnapshots'] as GaxCall, - request as {}, - callSettings, - ) as AsyncIterable; - } - /** - * Gets the access control policy for a resource. Returns an empty policy - * if the resource exists and does not have a policy set. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {Object} [request.options] - * OPTIONAL: A `GetPolicyOptions` object for specifying options to - * `GetIamPolicy`. This field is only used by Cloud IAM. - * - * This object should have the same structure as {@link google.iam.v1.GetPolicyOptions | GetPolicyOptions}. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.Policy | Policy}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.Policy | Policy}. - * The promise has a method named "cancel" which cancels the ongoing API call. - */ - getIamPolicy( - request: IamProtos.google.iam.v1.GetIamPolicyRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.GetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.GetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.Policy]> { - return this.iamClient.getIamPolicy(request, options, callback); - } - - /** - * Returns permissions that a caller has on the specified resource. If the - * resource does not exist, this will return an empty set of - * permissions, not a NOT_FOUND error. - * - * Note: This operation is designed to be used for building - * permission-aware UIs and command-line tools, not for authorization - * checking. This operation may "fail open" without warning. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy detail is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {string[]} request.permissions - * The set of permissions to check for the `resource`. Permissions with - * wildcards (such as '*' or 'storage.*') are not allowed. For more - * information see {@link https://cloud.google.com/iam/docs/overview#permissions | IAM Overview }. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - */ - setIamPolicy( - request: IamProtos.google.iam.v1.SetIamPolicyRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.SetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.SetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.Policy]> { - return this.iamClient.setIamPolicy(request, options, callback); - } - - /** - * Returns permissions that a caller has on the specified resource. If the - * resource does not exist, this will return an empty set of - * permissions, not a NOT_FOUND error. - * - * Note: This operation is designed to be used for building - * permission-aware UIs and command-line tools, not for authorization - * checking. This operation may "fail open" without warning. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy detail is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {string[]} request.permissions - * The set of permissions to check for the `resource`. Permissions with - * wildcards (such as '*' or 'storage.*') are not allowed. For more - * information see {@link https://cloud.google.com/iam/docs/overview#permissions | IAM Overview }. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - */ - testIamPermissions( - request: IamProtos.google.iam.v1.TestIamPermissionsRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.TestIamPermissionsResponse, - IamProtos.google.iam.v1.TestIamPermissionsRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.TestIamPermissionsResponse, - IamProtos.google.iam.v1.TestIamPermissionsRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.TestIamPermissionsResponse]> { - return this.iamClient.testIamPermissions(request, options, callback); - } - - // -------------------- - // -- Path templates -- - // -------------------- - - /** - * Return a fully-qualified cryptoKey resource name string. - * - * @param {string} project - * @param {string} location - * @param {string} key_ring - * @param {string} crypto_key - * @returns {string} Resource name string. - */ - cryptoKeyPath( - project: string, - location: string, - keyRing: string, - cryptoKey: string, - ) { - return this.pathTemplates.cryptoKeyPathTemplate.render({ - project: project, - location: location, - key_ring: keyRing, - crypto_key: cryptoKey, - }); - } - - /** - * Parse the project from CryptoKey resource. - * - * @param {string} cryptoKeyName - * A fully-qualified path representing CryptoKey resource. - * @returns {string} A string representing the project. - */ - matchProjectFromCryptoKeyName(cryptoKeyName: string) { - return this.pathTemplates.cryptoKeyPathTemplate.match(cryptoKeyName) - .project; - } - - /** - * Parse the location from CryptoKey resource. - * - * @param {string} cryptoKeyName - * A fully-qualified path representing CryptoKey resource. - * @returns {string} A string representing the location. - */ - matchLocationFromCryptoKeyName(cryptoKeyName: string) { - return this.pathTemplates.cryptoKeyPathTemplate.match(cryptoKeyName) - .location; - } - - /** - * Parse the key_ring from CryptoKey resource. - * - * @param {string} cryptoKeyName - * A fully-qualified path representing CryptoKey resource. - * @returns {string} A string representing the key_ring. - */ - matchKeyRingFromCryptoKeyName(cryptoKeyName: string) { - return this.pathTemplates.cryptoKeyPathTemplate.match(cryptoKeyName) - .key_ring; - } - - /** - * Parse the crypto_key from CryptoKey resource. - * - * @param {string} cryptoKeyName - * A fully-qualified path representing CryptoKey resource. - * @returns {string} A string representing the crypto_key. - */ - matchCryptoKeyFromCryptoKeyName(cryptoKeyName: string) { - return this.pathTemplates.cryptoKeyPathTemplate.match(cryptoKeyName) - .crypto_key; - } - - /** - * Return a fully-qualified project resource name string. - * - * @param {string} project - * @returns {string} Resource name string. - */ - projectPath(project: string) { - return this.pathTemplates.projectPathTemplate.render({ - project: project, - }); - } - - /** - * Parse the project from Project resource. - * - * @param {string} projectName - * A fully-qualified path representing Project resource. - * @returns {string} A string representing the project. - */ - matchProjectFromProjectName(projectName: string) { - return this.pathTemplates.projectPathTemplate.match(projectName).project; - } - - /** - * Return a fully-qualified projectTopics resource name string. - * - * @param {string} project - * @param {string} topic - * @returns {string} Resource name string. - */ - projectTopicsPath(project: string, topic: string) { - return this.pathTemplates.projectTopicsPathTemplate.render({ - project: project, - topic: topic, - }); - } - - /** - * Parse the project from ProjectTopics resource. - * - * @param {string} projectTopicsName - * A fully-qualified path representing project_topics resource. - * @returns {string} A string representing the project. - */ - matchProjectFromProjectTopicsName(projectTopicsName: string) { - return this.pathTemplates.projectTopicsPathTemplate.match(projectTopicsName) - .project; - } - - /** - * Parse the topic from ProjectTopics resource. - * - * @param {string} projectTopicsName - * A fully-qualified path representing project_topics resource. - * @returns {string} A string representing the topic. - */ - matchTopicFromProjectTopicsName(projectTopicsName: string) { - return this.pathTemplates.projectTopicsPathTemplate.match(projectTopicsName) - .topic; - } - - /** - * Return a fully-qualified schema resource name string. - * - * @param {string} project - * @param {string} schema - * @returns {string} Resource name string. - */ - schemaPath(project: string, schema: string) { - return this.pathTemplates.schemaPathTemplate.render({ - project: project, - schema: schema, - }); - } - - /** - * Parse the project from Schema resource. - * - * @param {string} schemaName - * A fully-qualified path representing Schema resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSchemaName(schemaName: string) { - return this.pathTemplates.schemaPathTemplate.match(schemaName).project; - } - - /** - * Parse the schema from Schema resource. - * - * @param {string} schemaName - * A fully-qualified path representing Schema resource. - * @returns {string} A string representing the schema. - */ - matchSchemaFromSchemaName(schemaName: string) { - return this.pathTemplates.schemaPathTemplate.match(schemaName).schema; - } - - /** - * Return a fully-qualified snapshot resource name string. - * - * @param {string} project - * @param {string} snapshot - * @returns {string} Resource name string. - */ - snapshotPath(project: string, snapshot: string) { - return this.pathTemplates.snapshotPathTemplate.render({ - project: project, - snapshot: snapshot, - }); - } - - /** - * Parse the project from Snapshot resource. - * - * @param {string} snapshotName - * A fully-qualified path representing Snapshot resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSnapshotName(snapshotName: string) { - return this.pathTemplates.snapshotPathTemplate.match(snapshotName).project; - } - - /** - * Parse the snapshot from Snapshot resource. - * - * @param {string} snapshotName - * A fully-qualified path representing Snapshot resource. - * @returns {string} A string representing the snapshot. - */ - matchSnapshotFromSnapshotName(snapshotName: string) { - return this.pathTemplates.snapshotPathTemplate.match(snapshotName).snapshot; - } - - /** - * Return a fully-qualified subscription resource name string. - * - * @param {string} project - * @param {string} subscription - * @returns {string} Resource name string. - */ - subscriptionPath(project: string, subscription: string) { - return this.pathTemplates.subscriptionPathTemplate.render({ - project: project, - subscription: subscription, - }); - } - - /** - * Parse the project from Subscription resource. - * - * @param {string} subscriptionName - * A fully-qualified path representing Subscription resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSubscriptionName(subscriptionName: string) { - return this.pathTemplates.subscriptionPathTemplate.match(subscriptionName) - .project; - } - - /** - * Parse the subscription from Subscription resource. - * - * @param {string} subscriptionName - * A fully-qualified path representing Subscription resource. - * @returns {string} A string representing the subscription. - */ - matchSubscriptionFromSubscriptionName(subscriptionName: string) { - return this.pathTemplates.subscriptionPathTemplate.match(subscriptionName) - .subscription; - } - - /** - * Terminate the gRPC channel and close the client. - * - * The client will no longer be usable and all future behavior is undefined. - * @returns {Promise} A promise that resolves when the client is closed. - */ - close(): Promise { - if (this.publisherStub && !this._terminated) { - return this.publisherStub.then(stub => { - this._log.info('ending gRPC channel'); - this._terminated = true; - stub.close(); - this.iamClient.close().catch(err => { - throw err; - }); - }); - } - return Promise.resolve(); - } -} diff --git a/handwritten/pubsub/src/v1/publisher_client_config.json b/handwritten/pubsub/src/v1/publisher_client_config.json deleted file mode 100644 index 2096902099b3..000000000000 --- a/handwritten/pubsub/src/v1/publisher_client_config.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "interfaces": { - "google.pubsub.v1.Publisher": { - "retry_codes": { - "non_idempotent": [], - "idempotent": [ - "DEADLINE_EXCEEDED", - "UNAVAILABLE" - ], - "unavailable": [ - "UNAVAILABLE" - ], - "cancelled_unknown_deadline_exceeded_resource_exhausted_aborted_internal_unavailable": [ - "CANCELLED", - "UNKNOWN", - "DEADLINE_EXCEEDED", - "RESOURCE_EXHAUSTED", - "ABORTED", - "INTERNAL", - "UNAVAILABLE" - ], - "unknown_aborted_unavailable": [ - "UNKNOWN", - "ABORTED", - "UNAVAILABLE" - ] - }, - "retry_params": { - "default": { - "initial_retry_delay_millis": 100, - "retry_delay_multiplier": 1.3, - "max_retry_delay_millis": 60000, - "initial_rpc_timeout_millis": 60000, - "rpc_timeout_multiplier": 1, - "max_rpc_timeout_millis": 60000, - "total_timeout_millis": 600000 - }, - "693222d32e887d96c8faeadca469f7763ccda85a": { - "initial_retry_delay_millis": 100, - "retry_delay_multiplier": 4, - "max_retry_delay_millis": 60000, - "initial_rpc_timeout_millis": 60000, - "rpc_timeout_multiplier": 1, - "max_rpc_timeout_millis": 60000, - "total_timeout_millis": 600000 - } - }, - "methods": { - "CreateTopic": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "UpdateTopic": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "Publish": { - "timeout_millis": 60000, - "retry_codes_name": "cancelled_unknown_deadline_exceeded_resource_exhausted_aborted_internal_unavailable", - "retry_params_name": "693222d32e887d96c8faeadca469f7763ccda85a", - "bundling": { - "element_count_threshold": 100, - "request_byte_threshold": 1048576, - "delay_threshold_millis": 10, - "element_count_limit": 1000000 - } - }, - "GetTopic": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "ListTopics": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "ListTopicSubscriptions": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "ListTopicSnapshots": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "DeleteTopic": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "DetachSubscription": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - } - } - } - } -} diff --git a/handwritten/pubsub/src/v1/publisher_proto_list.json b/handwritten/pubsub/src/v1/publisher_proto_list.json deleted file mode 100644 index 91011aec1502..000000000000 --- a/handwritten/pubsub/src/v1/publisher_proto_list.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "../../protos/google/pubsub/v1/pubsub.proto", - "../../protos/google/pubsub/v1/schema.proto" -] diff --git a/handwritten/pubsub/src/v1/schema_service_client.ts b/handwritten/pubsub/src/v1/schema_service_client.ts deleted file mode 100644 index 26fd77579309..000000000000 --- a/handwritten/pubsub/src/v1/schema_service_client.ts +++ /dev/null @@ -1,2235 +0,0 @@ -// Copyright 2026 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// ** This file is automatically generated by gapic-generator-typescript. ** -// ** https://github.com/googleapis/gapic-generator-typescript ** -// ** All changes to this file may be overwritten. ** - -/* global window */ -import type * as gax from 'google-gax'; -import type { - Callback, - CallOptions, - Descriptors, - ClientOptions, - PaginationCallback, - GaxCall, - IamClient, - IamProtos, -} from 'google-gax'; -import {Transform} from 'stream'; -import * as protos from '../../protos/protos'; -import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; - -/** - * Client JSON configuration object, loaded from - * `src/v1/schema_service_client_config.json`. - * This file defines retry strategy and timeouts for all API methods in this library. - */ -import * as gapicConfig from './schema_service_client_config.json'; -const version = require('../../../package.json').version; - -/** - * Service for doing schema-related operations. - * @class - * @memberof v1 - */ -export class SchemaServiceClient { - private _terminated = false; - private _opts: ClientOptions; - private _providedCustomServicePath: boolean; - private _gaxModule: typeof gax | typeof gax.fallback; - private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; - private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; - private _universeDomain: string; - private _servicePath: string; - private _log = logging.log('pubsub'); - - auth: gax.GoogleAuth; - descriptors: Descriptors = { - page: {}, - stream: {}, - longrunning: {}, - batching: {}, - }; - warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - iamClient: IamClient; - pathTemplates: {[name: string]: gax.PathTemplate}; - schemaServiceStub?: Promise<{[name: string]: Function}>; - - /** - * Construct an instance of SchemaServiceClient. - * - * @param {object} [options] - The configuration object. - * The options accepted by the constructor are described in detail - * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance). - * The common options are: - * @param {object} [options.credentials] - Credentials object. - * @param {string} [options.credentials.client_email] - * @param {string} [options.credentials.private_key] - * @param {string} [options.email] - Account email address. Required when - * using a .pem or .p12 keyFilename. - * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or - * .p12 key downloaded from the Google Developers Console. If you provide - * a path to a JSON file, the projectId option below is not necessary. - * NOTE: .pem and .p12 require you to specify options.email as well. - * @param {number} [options.port] - The port on which to connect to - * the remote host. - * @param {string} [options.projectId] - The project ID from the Google - * Developer's Console, e.g. 'grape-spaceship-123'. We will also check - * the environment variable GCLOUD_PROJECT for your project ID. If your - * app is running in an environment which supports - * {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials}, - * your project ID will be detected automatically. - * @param {string} [options.apiEndpoint] - The domain name of the - * API remote host. - * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. - * Follows the structure of {@link gapicConfig}. - * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode. - * For more information, please check the - * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. - * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you - * need to avoid loading the default gRPC version and want to use the fallback - * HTTP implementation. Load only fallback version and pass it to the constructor: - * ``` - * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC - * const client = new SchemaServiceClient({fallback: true}, gax); - * ``` - */ - constructor( - opts?: ClientOptions, - gaxInstance?: typeof gax | typeof gax.fallback, - ) { - // Ensure that options include all the required fields. - const staticMembers = this.constructor as typeof SchemaServiceClient; - if ( - opts?.universe_domain && - opts?.universeDomain && - opts?.universe_domain !== opts?.universeDomain - ) { - throw new Error( - 'Please set either universe_domain or universeDomain, but not both.', - ); - } - const universeDomainEnvVar = - typeof process === 'object' && typeof process.env === 'object' - ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] - : undefined; - this._universeDomain = - opts?.universeDomain ?? - opts?.universe_domain ?? - universeDomainEnvVar ?? - 'googleapis.com'; - this._servicePath = 'pubsub.' + this._universeDomain; - const servicePath = - opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!( - opts?.servicePath || opts?.apiEndpoint - ); - const port = opts?.port || staticMembers.port; - const clientConfig = opts?.clientConfig ?? {}; - const fallback = - opts?.fallback ?? - (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); - - // Request numeric enum values if REST transport is used. - opts.numericEnums = true; - - // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. - if (servicePath !== this._servicePath && !('scopes' in opts)) { - opts['scopes'] = staticMembers.scopes; - } - - // Load google-gax module synchronously if needed - if (!gaxInstance) { - gaxInstance = require('google-gax') as typeof gax; - } - - // Choose either gRPC or proto-over-HTTP implementation of google-gax. - this._gaxModule = opts.fallback ? gaxInstance.fallback : gaxInstance; - - // Create a `gaxGrpc` object, with any grpc-specific options sent to the client. - this._gaxGrpc = new this._gaxModule.GrpcClient(opts); - - // Save options to use in initialize() method. - this._opts = opts; - - // Save the auth object to the client, for use by other methods. - this.auth = this._gaxGrpc.auth as gax.GoogleAuth; - - // Set useJWTAccessWithScope on the auth object. - this.auth.useJWTAccessWithScope = true; - - // Set defaultServicePath on the auth object. - this.auth.defaultServicePath = this._servicePath; - - // Set the default scopes in auth client if needed. - if (servicePath === this._servicePath) { - this.auth.defaultScopes = staticMembers.scopes; - } - this.iamClient = new this._gaxModule.IamClient(this._gaxGrpc, opts); - - // Determine the client header string. - const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; - if (typeof process === 'object' && 'versions' in process) { - clientHeader.push(`gl-node/${process.versions.node}`); - } else { - clientHeader.push(`gl-web/${this._gaxModule.version}`); - } - if (!opts.fallback) { - clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); - } else { - clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`); - } - if (opts.libName && opts.libVersion) { - clientHeader.push(`${opts.libName}/${opts.libVersion}`); - } - // Load the applicable protos. - this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos); - - // This API contains "path templates"; forward-slash-separated - // identifiers to uniquely identify resources within the API. - // Create useful helper objects for these. - this.pathTemplates = { - projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}', - ), - projectTopicsPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/topics/{topic}', - ), - schemaPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/schemas/{schema}', - ), - snapshotPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/snapshots/{snapshot}', - ), - subscriptionPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/subscriptions/{subscription}', - ), - }; - - // Some of the methods on this service return "paged" results, - // (e.g. 50 results at a time, with tokens to get subsequent - // pages). Denote the keys used for pagination and results. - this.descriptors.page = { - listSchemas: new this._gaxModule.PageDescriptor( - 'pageToken', - 'nextPageToken', - 'schemas', - ), - listSchemaRevisions: new this._gaxModule.PageDescriptor( - 'pageToken', - 'nextPageToken', - 'schemas', - ), - }; - - // Put together the default options sent with requests. - this._defaults = this._gaxGrpc.constructSettings( - 'google.pubsub.v1.SchemaService', - gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, - {'x-goog-api-client': clientHeader.join(' ')}, - ); - - // Set up a dictionary of "inner API calls"; the core implementation - // of calling the API is handled in `google-gax`, with this code - // merely providing the destination and request information. - this.innerApiCalls = {}; - - // Add a warn function to the client constructor so it can be easily tested. - this.warn = this._gaxModule.warn; - } - - /** - * Initialize the client. - * Performs asynchronous operations (such as authentication) and prepares the client. - * This function will be called automatically when any class method is called for the - * first time, but if you need to initialize it before calling an actual method, - * feel free to call initialize() directly. - * - * You can await on this method if you want to make sure the client is initialized. - * - * @returns {Promise} A promise that resolves to an authenticated service stub. - */ - initialize() { - // If the client stub promise is already initialized, return immediately. - if (this.schemaServiceStub) { - return this.schemaServiceStub; - } - - // Put together the "service stub" for - // google.pubsub.v1.SchemaService. - this.schemaServiceStub = this._gaxGrpc.createStub( - this._opts.fallback - ? (this._protos as protobuf.Root).lookupService( - 'google.pubsub.v1.SchemaService', - ) - : // eslint-disable-next-line @typescript-eslint/no-explicit-any - (this._protos as any).google.pubsub.v1.SchemaService, - this._opts, - this._providedCustomServicePath, - ) as Promise<{[method: string]: Function}>; - - // Iterate over each of the methods that the service provides - // and create an API call method for each. - const schemaServiceStubMethods = [ - 'createSchema', - 'getSchema', - 'listSchemas', - 'listSchemaRevisions', - 'commitSchema', - 'rollbackSchema', - 'deleteSchemaRevision', - 'deleteSchema', - 'validateSchema', - 'validateMessage', - ]; - for (const methodName of schemaServiceStubMethods) { - const callPromise = this.schemaServiceStub.then( - stub => - (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error | null | undefined) => () => { - throw err; - }, - ); - - const descriptor = this.descriptors.page[methodName] || undefined; - const apiCall = this._gaxModule.createApiCall( - callPromise, - this._defaults[methodName], - descriptor, - this._opts.fallback, - ); - - this.innerApiCalls[methodName] = apiCall; - } - - return this.schemaServiceStub; - } - - /** - * The DNS address for this API service. - * @deprecated Use the apiEndpoint method of the client instance. - * @returns {string} The DNS address for this service. - */ - static get servicePath() { - if ( - typeof process === 'object' && - typeof process.emitWarning === 'function' - ) { - process.emitWarning( - 'Static servicePath is deprecated, please use the instance method instead.', - 'DeprecationWarning', - ); - } - return 'pubsub.googleapis.com'; - } - - /** - * The DNS address for this API service - same as servicePath. - * @deprecated Use the apiEndpoint method of the client instance. - * @returns {string} The DNS address for this service. - */ - static get apiEndpoint() { - if ( - typeof process === 'object' && - typeof process.emitWarning === 'function' - ) { - process.emitWarning( - 'Static apiEndpoint is deprecated, please use the instance method instead.', - 'DeprecationWarning', - ); - } - return 'pubsub.googleapis.com'; - } - - /** - * The DNS address for this API service. - * @returns {string} The DNS address for this service. - */ - get apiEndpoint() { - return this._servicePath; - } - - get universeDomain() { - return this._universeDomain; - } - - /** - * The port for this API service. - * @returns {number} The default port for this service. - */ - static get port() { - return 443; - } - - /** - * The scopes needed to make gRPC calls for every method defined - * in this service. - * @returns {string[]} List of default scopes. - */ - static get scopes() { - return [ - 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/pubsub', - ]; - } - - getProjectId(): Promise; - getProjectId(callback: Callback): void; - /** - * Return the project ID used by this class. - * @returns {Promise} A promise that resolves to string containing the project ID. - */ - getProjectId( - callback?: Callback, - ): Promise | void { - if (callback) { - this.auth.getProjectId(callback); - return; - } - return this.auth.getProjectId(); - } - - // ------------------- - // -- Service calls -- - // ------------------- - /** - * Creates a schema. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The name of the project in which to create the schema. - * Format is `projects/{project-id}`. - * @param {google.pubsub.v1.Schema} request.schema - * Required. The schema object to create. - * - * This schema's `name` parameter is ignored. The schema object returned - * by CreateSchema will have a `name` made using the given `parent` and - * `schema_id`. - * @param {string} request.schemaId - * The ID to use for the schema, which will become the final component of - * the schema's resource name. - * - * See https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names for - * resource name constraints. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Schema|Schema}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - createSchema( - request?: protos.google.pubsub.v1.ICreateSchemaRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICreateSchemaRequest | undefined, - {} | undefined, - ] - >; - createSchema( - request: protos.google.pubsub.v1.ICreateSchemaRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICreateSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - createSchema( - request: protos.google.pubsub.v1.ICreateSchemaRequest, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICreateSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - createSchema( - request?: protos.google.pubsub.v1.ICreateSchemaRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICreateSchemaRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICreateSchemaRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICreateSchemaRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - parent: request.parent ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('createSchema request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICreateSchemaRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('createSchema response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .createSchema(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICreateSchemaRequest | undefined, - {} | undefined, - ]) => { - this._log.info('createSchema response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Gets a schema. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The name of the schema to get. - * Format is `projects/{project}/schemas/{schema}`. - * @param {google.pubsub.v1.SchemaView} request.view - * The set of fields to return in the response. If not set, returns a Schema - * with all fields filled out. Set to `BASIC` to omit the `definition`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Schema|Schema}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - getSchema( - request?: protos.google.pubsub.v1.IGetSchemaRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IGetSchemaRequest | undefined, - {} | undefined, - ] - >; - getSchema( - request: protos.google.pubsub.v1.IGetSchemaRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IGetSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - getSchema( - request: protos.google.pubsub.v1.IGetSchemaRequest, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IGetSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - getSchema( - request?: protos.google.pubsub.v1.IGetSchemaRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IGetSchemaRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IGetSchemaRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IGetSchemaRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('getSchema request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IGetSchemaRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('getSchema response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .getSchema(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IGetSchemaRequest | undefined, - {} | undefined, - ]) => { - this._log.info('getSchema response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Commits a new schema revision to an existing schema. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The name of the schema we are revising. - * Format is `projects/{project}/schemas/{schema}`. - * @param {google.pubsub.v1.Schema} request.schema - * Required. The schema revision to commit. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Schema|Schema}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - commitSchema( - request?: protos.google.pubsub.v1.ICommitSchemaRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICommitSchemaRequest | undefined, - {} | undefined, - ] - >; - commitSchema( - request: protos.google.pubsub.v1.ICommitSchemaRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICommitSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - commitSchema( - request: protos.google.pubsub.v1.ICommitSchemaRequest, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICommitSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - commitSchema( - request?: protos.google.pubsub.v1.ICommitSchemaRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICommitSchemaRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICommitSchemaRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICommitSchemaRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('commitSchema request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICommitSchemaRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('commitSchema response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .commitSchema(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.ICommitSchemaRequest | undefined, - {} | undefined, - ]) => { - this._log.info('commitSchema response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Creates a new schema revision that is a copy of the provided revision_id. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The schema being rolled back with revision id. - * @param {string} request.revisionId - * Required. The revision ID to roll back to. - * It must be a revision of the same schema. - * - * Example: c7cfa2a8 - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Schema|Schema}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - rollbackSchema( - request?: protos.google.pubsub.v1.IRollbackSchemaRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IRollbackSchemaRequest | undefined, - {} | undefined, - ] - >; - rollbackSchema( - request: protos.google.pubsub.v1.IRollbackSchemaRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IRollbackSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - rollbackSchema( - request: protos.google.pubsub.v1.IRollbackSchemaRequest, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IRollbackSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - rollbackSchema( - request?: protos.google.pubsub.v1.IRollbackSchemaRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IRollbackSchemaRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IRollbackSchemaRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IRollbackSchemaRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('rollbackSchema request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IRollbackSchemaRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('rollbackSchema response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .rollbackSchema(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IRollbackSchemaRequest | undefined, - {} | undefined, - ]) => { - this._log.info('rollbackSchema response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Deletes a specific schema revision. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The name of the schema revision to be deleted, with a revision ID - * explicitly included. - * - * Example: `projects/123/schemas/my-schema@c7cfa2a8` - * @param {string} [request.revisionId] - * Optional. This field is deprecated and should not be used for specifying - * the revision ID. The revision ID should be specified via the `name` - * parameter. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Schema|Schema}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - deleteSchemaRevision( - request?: protos.google.pubsub.v1.IDeleteSchemaRevisionRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IDeleteSchemaRevisionRequest | undefined, - {} | undefined, - ] - >; - deleteSchemaRevision( - request: protos.google.pubsub.v1.IDeleteSchemaRevisionRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IDeleteSchemaRevisionRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteSchemaRevision( - request: protos.google.pubsub.v1.IDeleteSchemaRevisionRequest, - callback: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IDeleteSchemaRevisionRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteSchemaRevision( - request?: protos.google.pubsub.v1.IDeleteSchemaRevisionRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISchema, - | protos.google.pubsub.v1.IDeleteSchemaRevisionRequest - | null - | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IDeleteSchemaRevisionRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IDeleteSchemaRevisionRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('deleteSchemaRevision request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISchema, - | protos.google.pubsub.v1.IDeleteSchemaRevisionRequest - | null - | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('deleteSchemaRevision response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .deleteSchemaRevision(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISchema, - protos.google.pubsub.v1.IDeleteSchemaRevisionRequest | undefined, - {} | undefined, - ]) => { - this._log.info('deleteSchemaRevision response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Deletes a schema. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. Name of the schema to delete. - * Format is `projects/{project}/schemas/{schema}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - deleteSchema( - request?: protos.google.pubsub.v1.IDeleteSchemaRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSchemaRequest | undefined, - {} | undefined, - ] - >; - deleteSchema( - request: protos.google.pubsub.v1.IDeleteSchemaRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteSchema( - request: protos.google.pubsub.v1.IDeleteSchemaRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteSchema( - request?: protos.google.pubsub.v1.IDeleteSchemaRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSchemaRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSchemaRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSchemaRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('deleteSchema request %j', request); - const wrappedCallback: - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSchemaRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('deleteSchema response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .deleteSchema(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSchemaRequest | undefined, - {} | undefined, - ]) => { - this._log.info('deleteSchema response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Validates a schema. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The name of the project in which to validate schemas. - * Format is `projects/{project-id}`. - * @param {google.pubsub.v1.Schema} request.schema - * Required. The schema object to validate. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.ValidateSchemaResponse|ValidateSchemaResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - validateSchema( - request?: protos.google.pubsub.v1.IValidateSchemaRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.IValidateSchemaResponse, - protos.google.pubsub.v1.IValidateSchemaRequest | undefined, - {} | undefined, - ] - >; - validateSchema( - request: protos.google.pubsub.v1.IValidateSchemaRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.IValidateSchemaResponse, - protos.google.pubsub.v1.IValidateSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - validateSchema( - request: protos.google.pubsub.v1.IValidateSchemaRequest, - callback: Callback< - protos.google.pubsub.v1.IValidateSchemaResponse, - protos.google.pubsub.v1.IValidateSchemaRequest | null | undefined, - {} | null | undefined - >, - ): void; - validateSchema( - request?: protos.google.pubsub.v1.IValidateSchemaRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.IValidateSchemaResponse, - protos.google.pubsub.v1.IValidateSchemaRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.IValidateSchemaResponse, - protos.google.pubsub.v1.IValidateSchemaRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.IValidateSchemaResponse, - protos.google.pubsub.v1.IValidateSchemaRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - parent: request.parent ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('validateSchema request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.IValidateSchemaResponse, - protos.google.pubsub.v1.IValidateSchemaRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('validateSchema response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .validateSchema(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.IValidateSchemaResponse, - protos.google.pubsub.v1.IValidateSchemaRequest | undefined, - {} | undefined, - ]) => { - this._log.info('validateSchema response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Validates a message against a schema. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The name of the project in which to validate schemas. - * Format is `projects/{project-id}`. - * @param {string} request.name - * Name of the schema against which to validate. - * - * Format is `projects/{project}/schemas/{schema}`. - * @param {google.pubsub.v1.Schema} request.schema - * Ad-hoc schema against which to validate - * @param {Buffer} request.message - * Message to validate against the provided `schema_spec`. - * @param {google.pubsub.v1.Encoding} request.encoding - * The encoding expected for messages - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.ValidateMessageResponse|ValidateMessageResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - validateMessage( - request?: protos.google.pubsub.v1.IValidateMessageRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.IValidateMessageResponse, - protos.google.pubsub.v1.IValidateMessageRequest | undefined, - {} | undefined, - ] - >; - validateMessage( - request: protos.google.pubsub.v1.IValidateMessageRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.IValidateMessageResponse, - protos.google.pubsub.v1.IValidateMessageRequest | null | undefined, - {} | null | undefined - >, - ): void; - validateMessage( - request: protos.google.pubsub.v1.IValidateMessageRequest, - callback: Callback< - protos.google.pubsub.v1.IValidateMessageResponse, - protos.google.pubsub.v1.IValidateMessageRequest | null | undefined, - {} | null | undefined - >, - ): void; - validateMessage( - request?: protos.google.pubsub.v1.IValidateMessageRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.IValidateMessageResponse, - protos.google.pubsub.v1.IValidateMessageRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.IValidateMessageResponse, - protos.google.pubsub.v1.IValidateMessageRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.IValidateMessageResponse, - protos.google.pubsub.v1.IValidateMessageRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - parent: request.parent ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('validateMessage request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.IValidateMessageResponse, - protos.google.pubsub.v1.IValidateMessageRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('validateMessage response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .validateMessage(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.IValidateMessageResponse, - protos.google.pubsub.v1.IValidateMessageRequest | undefined, - {} | undefined, - ]) => { - this._log.info('validateMessage response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - - /** - * Lists schemas in a project. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The name of the project in which to list schemas. - * Format is `projects/{project-id}`. - * @param {google.pubsub.v1.SchemaView} request.view - * The set of Schema fields to return in the response. If not set, returns - * Schemas with `name` and `type`, but not `definition`. Set to `FULL` to - * retrieve all fields. - * @param {number} request.pageSize - * Maximum number of schemas to return. - * @param {string} request.pageToken - * The value returned by the last `ListSchemasResponse`; indicates that - * this is a continuation of a prior `ListSchemas` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.pubsub.v1.Schema|Schema}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listSchemasAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSchemas( - request?: protos.google.pubsub.v1.IListSchemasRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISchema[], - protos.google.pubsub.v1.IListSchemasRequest | null, - protos.google.pubsub.v1.IListSchemasResponse, - ] - >; - listSchemas( - request: protos.google.pubsub.v1.IListSchemasRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.pubsub.v1.IListSchemasRequest, - protos.google.pubsub.v1.IListSchemasResponse | null | undefined, - protos.google.pubsub.v1.ISchema - >, - ): void; - listSchemas( - request: protos.google.pubsub.v1.IListSchemasRequest, - callback: PaginationCallback< - protos.google.pubsub.v1.IListSchemasRequest, - protos.google.pubsub.v1.IListSchemasResponse | null | undefined, - protos.google.pubsub.v1.ISchema - >, - ): void; - listSchemas( - request?: protos.google.pubsub.v1.IListSchemasRequest, - optionsOrCallback?: - | CallOptions - | PaginationCallback< - protos.google.pubsub.v1.IListSchemasRequest, - protos.google.pubsub.v1.IListSchemasResponse | null | undefined, - protos.google.pubsub.v1.ISchema - >, - callback?: PaginationCallback< - protos.google.pubsub.v1.IListSchemasRequest, - protos.google.pubsub.v1.IListSchemasResponse | null | undefined, - protos.google.pubsub.v1.ISchema - >, - ): Promise< - [ - protos.google.pubsub.v1.ISchema[], - protos.google.pubsub.v1.IListSchemasRequest | null, - protos.google.pubsub.v1.IListSchemasResponse, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - parent: request.parent ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - const wrappedCallback: - | PaginationCallback< - protos.google.pubsub.v1.IListSchemasRequest, - protos.google.pubsub.v1.IListSchemasResponse | null | undefined, - protos.google.pubsub.v1.ISchema - > - | undefined = callback - ? (error, values, nextPageRequest, rawResponse) => { - this._log.info('listSchemas values %j', values); - callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. - } - : undefined; - this._log.info('listSchemas request %j', request); - return this.innerApiCalls - .listSchemas(request, options, wrappedCallback) - ?.then( - ([response, input, output]: [ - protos.google.pubsub.v1.ISchema[], - protos.google.pubsub.v1.IListSchemasRequest | null, - protos.google.pubsub.v1.IListSchemasResponse, - ]) => { - this._log.info('listSchemas values %j', response); - return [response, input, output]; - }, - ); - } - - /** - * Equivalent to `listSchemas`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The name of the project in which to list schemas. - * Format is `projects/{project-id}`. - * @param {google.pubsub.v1.SchemaView} request.view - * The set of Schema fields to return in the response. If not set, returns - * Schemas with `name` and `type`, but not `definition`. Set to `FULL` to - * retrieve all fields. - * @param {number} request.pageSize - * Maximum number of schemas to return. - * @param {string} request.pageToken - * The value returned by the last `ListSchemasResponse`; indicates that - * this is a continuation of a prior `ListSchemas` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.pubsub.v1.Schema|Schema} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listSchemasAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSchemasStream( - request?: protos.google.pubsub.v1.IListSchemasRequest, - options?: CallOptions, - ): Transform { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - parent: request.parent ?? '', - }); - const defaultCallSettings = this._defaults['listSchemas']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listSchemas stream %j', request); - return this.descriptors.page.listSchemas.createStream( - this.innerApiCalls.listSchemas as GaxCall, - request, - callSettings, - ); - } - - /** - * Equivalent to `listSchemas`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The name of the project in which to list schemas. - * Format is `projects/{project-id}`. - * @param {google.pubsub.v1.SchemaView} request.view - * The set of Schema fields to return in the response. If not set, returns - * Schemas with `name` and `type`, but not `definition`. Set to `FULL` to - * retrieve all fields. - * @param {number} request.pageSize - * Maximum number of schemas to return. - * @param {string} request.pageToken - * The value returned by the last `ListSchemasResponse`; indicates that - * this is a continuation of a prior `ListSchemas` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.pubsub.v1.Schema|Schema}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSchemasAsync( - request?: protos.google.pubsub.v1.IListSchemasRequest, - options?: CallOptions, - ): AsyncIterable { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - parent: request.parent ?? '', - }); - const defaultCallSettings = this._defaults['listSchemas']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listSchemas iterate %j', request); - return this.descriptors.page.listSchemas.asyncIterate( - this.innerApiCalls['listSchemas'] as GaxCall, - request as {}, - callSettings, - ) as AsyncIterable; - } - /** - * Lists all schema revisions for the named schema. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The name of the schema to list revisions for. - * @param {google.pubsub.v1.SchemaView} request.view - * The set of Schema fields to return in the response. If not set, returns - * Schemas with `name` and `type`, but not `definition`. Set to `FULL` to - * retrieve all fields. - * @param {number} request.pageSize - * The maximum number of revisions to return per page. - * @param {string} request.pageToken - * The page token, received from a previous ListSchemaRevisions call. - * Provide this to retrieve the subsequent page. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.pubsub.v1.Schema|Schema}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listSchemaRevisionsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSchemaRevisions( - request?: protos.google.pubsub.v1.IListSchemaRevisionsRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISchema[], - protos.google.pubsub.v1.IListSchemaRevisionsRequest | null, - protos.google.pubsub.v1.IListSchemaRevisionsResponse, - ] - >; - listSchemaRevisions( - request: protos.google.pubsub.v1.IListSchemaRevisionsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.pubsub.v1.IListSchemaRevisionsRequest, - protos.google.pubsub.v1.IListSchemaRevisionsResponse | null | undefined, - protos.google.pubsub.v1.ISchema - >, - ): void; - listSchemaRevisions( - request: protos.google.pubsub.v1.IListSchemaRevisionsRequest, - callback: PaginationCallback< - protos.google.pubsub.v1.IListSchemaRevisionsRequest, - protos.google.pubsub.v1.IListSchemaRevisionsResponse | null | undefined, - protos.google.pubsub.v1.ISchema - >, - ): void; - listSchemaRevisions( - request?: protos.google.pubsub.v1.IListSchemaRevisionsRequest, - optionsOrCallback?: - | CallOptions - | PaginationCallback< - protos.google.pubsub.v1.IListSchemaRevisionsRequest, - | protos.google.pubsub.v1.IListSchemaRevisionsResponse - | null - | undefined, - protos.google.pubsub.v1.ISchema - >, - callback?: PaginationCallback< - protos.google.pubsub.v1.IListSchemaRevisionsRequest, - protos.google.pubsub.v1.IListSchemaRevisionsResponse | null | undefined, - protos.google.pubsub.v1.ISchema - >, - ): Promise< - [ - protos.google.pubsub.v1.ISchema[], - protos.google.pubsub.v1.IListSchemaRevisionsRequest | null, - protos.google.pubsub.v1.IListSchemaRevisionsResponse, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - const wrappedCallback: - | PaginationCallback< - protos.google.pubsub.v1.IListSchemaRevisionsRequest, - | protos.google.pubsub.v1.IListSchemaRevisionsResponse - | null - | undefined, - protos.google.pubsub.v1.ISchema - > - | undefined = callback - ? (error, values, nextPageRequest, rawResponse) => { - this._log.info('listSchemaRevisions values %j', values); - callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. - } - : undefined; - this._log.info('listSchemaRevisions request %j', request); - return this.innerApiCalls - .listSchemaRevisions(request, options, wrappedCallback) - ?.then( - ([response, input, output]: [ - protos.google.pubsub.v1.ISchema[], - protos.google.pubsub.v1.IListSchemaRevisionsRequest | null, - protos.google.pubsub.v1.IListSchemaRevisionsResponse, - ]) => { - this._log.info('listSchemaRevisions values %j', response); - return [response, input, output]; - }, - ); - } - - /** - * Equivalent to `listSchemaRevisions`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The name of the schema to list revisions for. - * @param {google.pubsub.v1.SchemaView} request.view - * The set of Schema fields to return in the response. If not set, returns - * Schemas with `name` and `type`, but not `definition`. Set to `FULL` to - * retrieve all fields. - * @param {number} request.pageSize - * The maximum number of revisions to return per page. - * @param {string} request.pageToken - * The page token, received from a previous ListSchemaRevisions call. - * Provide this to retrieve the subsequent page. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.pubsub.v1.Schema|Schema} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listSchemaRevisionsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSchemaRevisionsStream( - request?: protos.google.pubsub.v1.IListSchemaRevisionsRequest, - options?: CallOptions, - ): Transform { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - const defaultCallSettings = this._defaults['listSchemaRevisions']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listSchemaRevisions stream %j', request); - return this.descriptors.page.listSchemaRevisions.createStream( - this.innerApiCalls.listSchemaRevisions as GaxCall, - request, - callSettings, - ); - } - - /** - * Equivalent to `listSchemaRevisions`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The name of the schema to list revisions for. - * @param {google.pubsub.v1.SchemaView} request.view - * The set of Schema fields to return in the response. If not set, returns - * Schemas with `name` and `type`, but not `definition`. Set to `FULL` to - * retrieve all fields. - * @param {number} request.pageSize - * The maximum number of revisions to return per page. - * @param {string} request.pageToken - * The page token, received from a previous ListSchemaRevisions call. - * Provide this to retrieve the subsequent page. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.pubsub.v1.Schema|Schema}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSchemaRevisionsAsync( - request?: protos.google.pubsub.v1.IListSchemaRevisionsRequest, - options?: CallOptions, - ): AsyncIterable { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - const defaultCallSettings = this._defaults['listSchemaRevisions']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listSchemaRevisions iterate %j', request); - return this.descriptors.page.listSchemaRevisions.asyncIterate( - this.innerApiCalls['listSchemaRevisions'] as GaxCall, - request as {}, - callSettings, - ) as AsyncIterable; - } - /** - * Gets the access control policy for a resource. Returns an empty policy - * if the resource exists and does not have a policy set. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {Object} [request.options] - * OPTIONAL: A `GetPolicyOptions` object for specifying options to - * `GetIamPolicy`. This field is only used by Cloud IAM. - * - * This object should have the same structure as {@link google.iam.v1.GetPolicyOptions | GetPolicyOptions}. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.Policy | Policy}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.Policy | Policy}. - * The promise has a method named "cancel" which cancels the ongoing API call. - */ - getIamPolicy( - request: IamProtos.google.iam.v1.GetIamPolicyRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.GetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.GetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.Policy]> { - return this.iamClient.getIamPolicy(request, options, callback); - } - - /** - * Returns permissions that a caller has on the specified resource. If the - * resource does not exist, this will return an empty set of - * permissions, not a NOT_FOUND error. - * - * Note: This operation is designed to be used for building - * permission-aware UIs and command-line tools, not for authorization - * checking. This operation may "fail open" without warning. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy detail is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {string[]} request.permissions - * The set of permissions to check for the `resource`. Permissions with - * wildcards (such as '*' or 'storage.*') are not allowed. For more - * information see {@link https://cloud.google.com/iam/docs/overview#permissions | IAM Overview }. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - */ - setIamPolicy( - request: IamProtos.google.iam.v1.SetIamPolicyRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.SetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.SetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.Policy]> { - return this.iamClient.setIamPolicy(request, options, callback); - } - - /** - * Returns permissions that a caller has on the specified resource. If the - * resource does not exist, this will return an empty set of - * permissions, not a NOT_FOUND error. - * - * Note: This operation is designed to be used for building - * permission-aware UIs and command-line tools, not for authorization - * checking. This operation may "fail open" without warning. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy detail is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {string[]} request.permissions - * The set of permissions to check for the `resource`. Permissions with - * wildcards (such as '*' or 'storage.*') are not allowed. For more - * information see {@link https://cloud.google.com/iam/docs/overview#permissions | IAM Overview }. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - */ - testIamPermissions( - request: IamProtos.google.iam.v1.TestIamPermissionsRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.TestIamPermissionsResponse, - IamProtos.google.iam.v1.TestIamPermissionsRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.TestIamPermissionsResponse, - IamProtos.google.iam.v1.TestIamPermissionsRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.TestIamPermissionsResponse]> { - return this.iamClient.testIamPermissions(request, options, callback); - } - - // -------------------- - // -- Path templates -- - // -------------------- - - /** - * Return a fully-qualified project resource name string. - * - * @param {string} project - * @returns {string} Resource name string. - */ - projectPath(project: string) { - return this.pathTemplates.projectPathTemplate.render({ - project: project, - }); - } - - /** - * Parse the project from Project resource. - * - * @param {string} projectName - * A fully-qualified path representing Project resource. - * @returns {string} A string representing the project. - */ - matchProjectFromProjectName(projectName: string) { - return this.pathTemplates.projectPathTemplate.match(projectName).project; - } - - /** - * Return a fully-qualified projectTopics resource name string. - * - * @param {string} project - * @param {string} topic - * @returns {string} Resource name string. - */ - projectTopicsPath(project: string, topic: string) { - return this.pathTemplates.projectTopicsPathTemplate.render({ - project: project, - topic: topic, - }); - } - - /** - * Parse the project from ProjectTopics resource. - * - * @param {string} projectTopicsName - * A fully-qualified path representing project_topics resource. - * @returns {string} A string representing the project. - */ - matchProjectFromProjectTopicsName(projectTopicsName: string) { - return this.pathTemplates.projectTopicsPathTemplate.match(projectTopicsName) - .project; - } - - /** - * Parse the topic from ProjectTopics resource. - * - * @param {string} projectTopicsName - * A fully-qualified path representing project_topics resource. - * @returns {string} A string representing the topic. - */ - matchTopicFromProjectTopicsName(projectTopicsName: string) { - return this.pathTemplates.projectTopicsPathTemplate.match(projectTopicsName) - .topic; - } - - /** - * Return a fully-qualified schema resource name string. - * - * @param {string} project - * @param {string} schema - * @returns {string} Resource name string. - */ - schemaPath(project: string, schema: string) { - return this.pathTemplates.schemaPathTemplate.render({ - project: project, - schema: schema, - }); - } - - /** - * Parse the project from Schema resource. - * - * @param {string} schemaName - * A fully-qualified path representing Schema resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSchemaName(schemaName: string) { - return this.pathTemplates.schemaPathTemplate.match(schemaName).project; - } - - /** - * Parse the schema from Schema resource. - * - * @param {string} schemaName - * A fully-qualified path representing Schema resource. - * @returns {string} A string representing the schema. - */ - matchSchemaFromSchemaName(schemaName: string) { - return this.pathTemplates.schemaPathTemplate.match(schemaName).schema; - } - - /** - * Return a fully-qualified snapshot resource name string. - * - * @param {string} project - * @param {string} snapshot - * @returns {string} Resource name string. - */ - snapshotPath(project: string, snapshot: string) { - return this.pathTemplates.snapshotPathTemplate.render({ - project: project, - snapshot: snapshot, - }); - } - - /** - * Parse the project from Snapshot resource. - * - * @param {string} snapshotName - * A fully-qualified path representing Snapshot resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSnapshotName(snapshotName: string) { - return this.pathTemplates.snapshotPathTemplate.match(snapshotName).project; - } - - /** - * Parse the snapshot from Snapshot resource. - * - * @param {string} snapshotName - * A fully-qualified path representing Snapshot resource. - * @returns {string} A string representing the snapshot. - */ - matchSnapshotFromSnapshotName(snapshotName: string) { - return this.pathTemplates.snapshotPathTemplate.match(snapshotName).snapshot; - } - - /** - * Return a fully-qualified subscription resource name string. - * - * @param {string} project - * @param {string} subscription - * @returns {string} Resource name string. - */ - subscriptionPath(project: string, subscription: string) { - return this.pathTemplates.subscriptionPathTemplate.render({ - project: project, - subscription: subscription, - }); - } - - /** - * Parse the project from Subscription resource. - * - * @param {string} subscriptionName - * A fully-qualified path representing Subscription resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSubscriptionName(subscriptionName: string) { - return this.pathTemplates.subscriptionPathTemplate.match(subscriptionName) - .project; - } - - /** - * Parse the subscription from Subscription resource. - * - * @param {string} subscriptionName - * A fully-qualified path representing Subscription resource. - * @returns {string} A string representing the subscription. - */ - matchSubscriptionFromSubscriptionName(subscriptionName: string) { - return this.pathTemplates.subscriptionPathTemplate.match(subscriptionName) - .subscription; - } - - /** - * Terminate the gRPC channel and close the client. - * - * The client will no longer be usable and all future behavior is undefined. - * @returns {Promise} A promise that resolves when the client is closed. - */ - close(): Promise { - if (this.schemaServiceStub && !this._terminated) { - return this.schemaServiceStub.then(stub => { - this._log.info('ending gRPC channel'); - this._terminated = true; - stub.close(); - this.iamClient.close().catch(err => { - throw err; - }); - }); - } - return Promise.resolve(); - } -} diff --git a/handwritten/pubsub/src/v1/schema_service_client_config.json b/handwritten/pubsub/src/v1/schema_service_client_config.json deleted file mode 100644 index 5a2280962fc5..000000000000 --- a/handwritten/pubsub/src/v1/schema_service_client_config.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "interfaces": { - "google.pubsub.v1.SchemaService": { - "retry_codes": { - "non_idempotent": [], - "idempotent": [ - "DEADLINE_EXCEEDED", - "UNAVAILABLE" - ], - "unavailable": [ - "UNAVAILABLE" - ] - }, - "retry_params": { - "default": { - "initial_retry_delay_millis": 100, - "retry_delay_multiplier": 1.3, - "max_retry_delay_millis": 60000, - "initial_rpc_timeout_millis": 60000, - "rpc_timeout_multiplier": 1, - "max_rpc_timeout_millis": 60000, - "total_timeout_millis": 600000 - } - }, - "methods": { - "CreateSchema": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "GetSchema": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "ListSchemas": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "ListSchemaRevisions": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "CommitSchema": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "RollbackSchema": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "DeleteSchemaRevision": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "DeleteSchema": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "ValidateSchema": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "ValidateMessage": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - } - } - } - } -} diff --git a/handwritten/pubsub/src/v1/schema_service_proto_list.json b/handwritten/pubsub/src/v1/schema_service_proto_list.json deleted file mode 100644 index 91011aec1502..000000000000 --- a/handwritten/pubsub/src/v1/schema_service_proto_list.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "../../protos/google/pubsub/v1/pubsub.proto", - "../../protos/google/pubsub/v1/schema.proto" -] diff --git a/handwritten/pubsub/src/v1/subscriber_client.ts b/handwritten/pubsub/src/v1/subscriber_client.ts deleted file mode 100644 index bee4adc6e953..000000000000 --- a/handwritten/pubsub/src/v1/subscriber_client.ts +++ /dev/null @@ -1,3204 +0,0 @@ -// Copyright 2026 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// ** This file is automatically generated by gapic-generator-typescript. ** -// ** https://github.com/googleapis/gapic-generator-typescript ** -// ** All changes to this file may be overwritten. ** - -/* global window */ -import type * as gax from 'google-gax'; -import type { - Callback, - CallOptions, - Descriptors, - ClientOptions, - PaginationCallback, - GaxCall, - IamClient, - IamProtos, -} from 'google-gax'; -import {Transform, PassThrough} from 'stream'; -import * as protos from '../../protos/protos'; -import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; - -/** - * Client JSON configuration object, loaded from - * `src/v1/subscriber_client_config.json`. - * This file defines retry strategy and timeouts for all API methods in this library. - */ -import * as gapicConfig from './subscriber_client_config.json'; -const version = require('../../../package.json').version; - -/** - * The service that an application uses to manipulate subscriptions and to - * consume messages from a subscription via the `Pull` method or by - * establishing a bi-directional stream using the `StreamingPull` method. - * @class - * @memberof v1 - */ -export class SubscriberClient { - private _terminated = false; - private _opts: ClientOptions; - private _providedCustomServicePath: boolean; - private _gaxModule: typeof gax | typeof gax.fallback; - private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; - private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; - private _universeDomain: string; - private _servicePath: string; - private _log = logging.log('pubsub'); - - auth: gax.GoogleAuth; - descriptors: Descriptors = { - page: {}, - stream: {}, - longrunning: {}, - batching: {}, - }; - warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - iamClient: IamClient; - pathTemplates: {[name: string]: gax.PathTemplate}; - subscriberStub?: Promise<{[name: string]: Function}>; - - /** - * Construct an instance of SubscriberClient. - * - * @param {object} [options] - The configuration object. - * The options accepted by the constructor are described in detail - * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance). - * The common options are: - * @param {object} [options.credentials] - Credentials object. - * @param {string} [options.credentials.client_email] - * @param {string} [options.credentials.private_key] - * @param {string} [options.email] - Account email address. Required when - * using a .pem or .p12 keyFilename. - * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or - * .p12 key downloaded from the Google Developers Console. If you provide - * a path to a JSON file, the projectId option below is not necessary. - * NOTE: .pem and .p12 require you to specify options.email as well. - * @param {number} [options.port] - The port on which to connect to - * the remote host. - * @param {string} [options.projectId] - The project ID from the Google - * Developer's Console, e.g. 'grape-spaceship-123'. We will also check - * the environment variable GCLOUD_PROJECT for your project ID. If your - * app is running in an environment which supports - * {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials}, - * your project ID will be detected automatically. - * @param {string} [options.apiEndpoint] - The domain name of the - * API remote host. - * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override. - * Follows the structure of {@link gapicConfig}. - * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode. - * For more information, please check the - * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}. - * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you - * need to avoid loading the default gRPC version and want to use the fallback - * HTTP implementation. Load only fallback version and pass it to the constructor: - * ``` - * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC - * const client = new SubscriberClient({fallback: true}, gax); - * ``` - */ - constructor( - opts?: ClientOptions, - gaxInstance?: typeof gax | typeof gax.fallback, - ) { - // Ensure that options include all the required fields. - const staticMembers = this.constructor as typeof SubscriberClient; - if ( - opts?.universe_domain && - opts?.universeDomain && - opts?.universe_domain !== opts?.universeDomain - ) { - throw new Error( - 'Please set either universe_domain or universeDomain, but not both.', - ); - } - const universeDomainEnvVar = - typeof process === 'object' && typeof process.env === 'object' - ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] - : undefined; - this._universeDomain = - opts?.universeDomain ?? - opts?.universe_domain ?? - universeDomainEnvVar ?? - 'googleapis.com'; - this._servicePath = 'pubsub.' + this._universeDomain; - const servicePath = - opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!( - opts?.servicePath || opts?.apiEndpoint - ); - const port = opts?.port || staticMembers.port; - const clientConfig = opts?.clientConfig ?? {}; - const fallback = - opts?.fallback ?? - (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); - - // Request numeric enum values if REST transport is used. - opts.numericEnums = true; - - // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case. - if (servicePath !== this._servicePath && !('scopes' in opts)) { - opts['scopes'] = staticMembers.scopes; - } - - // Load google-gax module synchronously if needed - if (!gaxInstance) { - gaxInstance = require('google-gax') as typeof gax; - } - - // Choose either gRPC or proto-over-HTTP implementation of google-gax. - this._gaxModule = opts.fallback ? gaxInstance.fallback : gaxInstance; - - // Create a `gaxGrpc` object, with any grpc-specific options sent to the client. - this._gaxGrpc = new this._gaxModule.GrpcClient(opts); - - // Save options to use in initialize() method. - this._opts = opts; - - // Save the auth object to the client, for use by other methods. - this.auth = this._gaxGrpc.auth as gax.GoogleAuth; - - // Set useJWTAccessWithScope on the auth object. - this.auth.useJWTAccessWithScope = true; - - // Set defaultServicePath on the auth object. - this.auth.defaultServicePath = this._servicePath; - - // Set the default scopes in auth client if needed. - if (servicePath === this._servicePath) { - this.auth.defaultScopes = staticMembers.scopes; - } - this.iamClient = new this._gaxModule.IamClient(this._gaxGrpc, opts); - - // Determine the client header string. - const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; - if (typeof process === 'object' && 'versions' in process) { - clientHeader.push(`gl-node/${process.versions.node}`); - } else { - clientHeader.push(`gl-web/${this._gaxModule.version}`); - } - if (!opts.fallback) { - clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`); - } else { - clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`); - } - if (opts.libName && opts.libVersion) { - clientHeader.push(`${opts.libName}/${opts.libVersion}`); - } - // Load the applicable protos. - this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos); - - // This API contains "path templates"; forward-slash-separated - // identifiers to uniquely identify resources within the API. - // Create useful helper objects for these. - this.pathTemplates = { - cryptoKeyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}', - ), - projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}', - ), - projectTopicsPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/topics/{topic}', - ), - schemaPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/schemas/{schema}', - ), - snapshotPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/snapshots/{snapshot}', - ), - subscriptionPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/subscriptions/{subscription}', - ), - }; - - // Some of the methods on this service return "paged" results, - // (e.g. 50 results at a time, with tokens to get subsequent - // pages). Denote the keys used for pagination and results. - this.descriptors.page = { - listSubscriptions: new this._gaxModule.PageDescriptor( - 'pageToken', - 'nextPageToken', - 'subscriptions', - ), - listSnapshots: new this._gaxModule.PageDescriptor( - 'pageToken', - 'nextPageToken', - 'snapshots', - ), - }; - - // Some of the methods on this service provide streaming responses. - // Provide descriptors for these. - this.descriptors.stream = { - streamingPull: new this._gaxModule.StreamDescriptor( - this._gaxModule.StreamType.BIDI_STREAMING, - !!opts.fallback, - !!opts.gaxServerStreamingRetries, - ), - }; - - // Put together the default options sent with requests. - this._defaults = this._gaxGrpc.constructSettings( - 'google.pubsub.v1.Subscriber', - gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, - {'x-goog-api-client': clientHeader.join(' ')}, - ); - - // Set up a dictionary of "inner API calls"; the core implementation - // of calling the API is handled in `google-gax`, with this code - // merely providing the destination and request information. - this.innerApiCalls = {}; - - // Add a warn function to the client constructor so it can be easily tested. - this.warn = this._gaxModule.warn; - } - - /** - * Initialize the client. - * Performs asynchronous operations (such as authentication) and prepares the client. - * This function will be called automatically when any class method is called for the - * first time, but if you need to initialize it before calling an actual method, - * feel free to call initialize() directly. - * - * You can await on this method if you want to make sure the client is initialized. - * - * @returns {Promise} A promise that resolves to an authenticated service stub. - */ - initialize() { - // If the client stub promise is already initialized, return immediately. - if (this.subscriberStub) { - return this.subscriberStub; - } - - // Put together the "service stub" for - // google.pubsub.v1.Subscriber. - this.subscriberStub = this._gaxGrpc.createStub( - this._opts.fallback - ? (this._protos as protobuf.Root).lookupService( - 'google.pubsub.v1.Subscriber', - ) - : // eslint-disable-next-line @typescript-eslint/no-explicit-any - (this._protos as any).google.pubsub.v1.Subscriber, - this._opts, - this._providedCustomServicePath, - ) as Promise<{[method: string]: Function}>; - - // Iterate over each of the methods that the service provides - // and create an API call method for each. - const subscriberStubMethods = [ - 'createSubscription', - 'getSubscription', - 'updateSubscription', - 'listSubscriptions', - 'deleteSubscription', - 'modifyAckDeadline', - 'acknowledge', - 'pull', - 'streamingPull', - 'modifyPushConfig', - 'getSnapshot', - 'listSnapshots', - 'createSnapshot', - 'updateSnapshot', - 'deleteSnapshot', - 'seek', - ]; - for (const methodName of subscriberStubMethods) { - const callPromise = this.subscriberStub.then( - stub => - (...args: Array<{}>) => { - if (this._terminated) { - if (methodName in this.descriptors.stream) { - const stream = new PassThrough({objectMode: true}); - setImmediate(() => { - stream.emit( - 'error', - new this._gaxModule.GoogleError( - 'The client has already been closed.', - ), - ); - }); - return stream; - } - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error | null | undefined) => () => { - throw err; - }, - ); - - const descriptor = - this.descriptors.page[methodName] || - this.descriptors.stream[methodName] || - undefined; - const apiCall = this._gaxModule.createApiCall( - callPromise, - this._defaults[methodName], - descriptor, - this._opts.fallback, - ); - - this.innerApiCalls[methodName] = apiCall; - } - - return this.subscriberStub; - } - - /** - * The DNS address for this API service. - * @deprecated Use the apiEndpoint method of the client instance. - * @returns {string} The DNS address for this service. - */ - static get servicePath() { - if ( - typeof process === 'object' && - typeof process.emitWarning === 'function' - ) { - process.emitWarning( - 'Static servicePath is deprecated, please use the instance method instead.', - 'DeprecationWarning', - ); - } - return 'pubsub.googleapis.com'; - } - - /** - * The DNS address for this API service - same as servicePath. - * @deprecated Use the apiEndpoint method of the client instance. - * @returns {string} The DNS address for this service. - */ - static get apiEndpoint() { - if ( - typeof process === 'object' && - typeof process.emitWarning === 'function' - ) { - process.emitWarning( - 'Static apiEndpoint is deprecated, please use the instance method instead.', - 'DeprecationWarning', - ); - } - return 'pubsub.googleapis.com'; - } - - /** - * The DNS address for this API service. - * @returns {string} The DNS address for this service. - */ - get apiEndpoint() { - return this._servicePath; - } - - get universeDomain() { - return this._universeDomain; - } - - /** - * The port for this API service. - * @returns {number} The default port for this service. - */ - static get port() { - return 443; - } - - /** - * The scopes needed to make gRPC calls for every method defined - * in this service. - * @returns {string[]} List of default scopes. - */ - static get scopes() { - return [ - 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/pubsub', - ]; - } - - getProjectId(): Promise; - getProjectId(callback: Callback): void; - /** - * Return the project ID used by this class. - * @returns {Promise} A promise that resolves to string containing the project ID. - */ - getProjectId( - callback?: Callback, - ): Promise | void { - if (callback) { - this.auth.getProjectId(callback); - return; - } - return this.auth.getProjectId(); - } - - // ------------------- - // -- Service calls -- - // ------------------- - /** - * Creates a subscription to a given topic. See the [resource name rules] - * (https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). - * If the subscription already exists, returns `ALREADY_EXISTS`. - * If the corresponding topic doesn't exist, returns `NOT_FOUND`. - * - * If the name is not provided in the request, the server will assign a random - * name for this subscription on the same project as the topic, conforming - * to the [resource name format] - * (https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). The - * generated name is populated in the returned Subscription object. Note that - * for REST API requests, you must specify a name in the request. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. Identifier. The name of the subscription. It must have the format - * `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must - * start with a letter, and contain only letters (`[A-Za-z]`), numbers - * (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), - * plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters - * in length, and it must not start with `"goog"`. - * @param {string} request.topic - * Required. The name of the topic from which this subscription is receiving - * messages. Format is `projects/{project}/topics/{topic}`. The value of this - * field will be `_deleted-topic_` if the topic has been deleted. - * @param {google.pubsub.v1.PushConfig} [request.pushConfig] - * Optional. If push delivery is used with this subscription, this field is - * used to configure it. - * @param {google.pubsub.v1.BigQueryConfig} [request.bigqueryConfig] - * Optional. If delivery to BigQuery is used with this subscription, this - * field is used to configure it. - * @param {google.pubsub.v1.CloudStorageConfig} [request.cloudStorageConfig] - * Optional. If delivery to Google Cloud Storage is used with this - * subscription, this field is used to configure it. - * @param {google.pubsub.v1.BigtableConfig} [request.bigtableConfig] - * Optional. If delivery to Bigtable is used with this subscription, this - * field is used to configure it. - * @param {number} [request.ackDeadlineSeconds] - * Optional. The approximate amount of time (on a best-effort basis) Pub/Sub - * waits for the subscriber to acknowledge receipt before resending the - * message. In the interval after the message is delivered and before it is - * acknowledged, it is considered to be _outstanding_. During that time - * period, the message will not be redelivered (on a best-effort basis). - * - * For pull subscriptions, this value is used as the initial value for the ack - * deadline. To override this value for a given message, call - * `ModifyAckDeadline` with the corresponding `ack_id` if using - * non-streaming pull or send the `ack_id` in a - * `StreamingModifyAckDeadlineRequest` if using streaming pull. - * The minimum custom deadline you can specify is 10 seconds. - * The maximum custom deadline you can specify is 600 seconds (10 minutes). - * If this parameter is 0, a default value of 10 seconds is used. - * - * For push delivery, this value is also used to set the request timeout for - * the call to the push endpoint. - * - * If the subscriber never acknowledges the message, the Pub/Sub - * system will eventually redeliver the message. - * @param {boolean} [request.retainAckedMessages] - * Optional. Indicates whether to retain acknowledged messages. If true, then - * messages are not expunged from the subscription's backlog, even if they are - * acknowledged, until they fall out of the `message_retention_duration` - * window. This must be true if you would like to [`Seek` to a timestamp] - * (https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) in - * the past to replay previously-acknowledged messages. - * @param {google.protobuf.Duration} [request.messageRetentionDuration] - * Optional. How long to retain unacknowledged messages in the subscription's - * backlog, from the moment a message is published. If `retain_acked_messages` - * is true, then this also configures the retention of acknowledged messages, - * and thus configures how far back in time a `Seek` can be done. Defaults to - * 7 days. Cannot be more than 31 days or less than 10 minutes. - * @param {number[]} [request.labels] - * Optional. See [Creating and managing - * labels](https://cloud.google.com/pubsub/docs/labels). - * @param {boolean} [request.enableMessageOrdering] - * Optional. If true, messages published with the same `ordering_key` in - * `PubsubMessage` will be delivered to the subscribers in the order in which - * they are received by the Pub/Sub system. Otherwise, they may be delivered - * in any order. - * @param {google.pubsub.v1.ExpirationPolicy} [request.expirationPolicy] - * Optional. A policy that specifies the conditions for this subscription's - * expiration. A subscription is considered active as long as any connected - * subscriber is successfully consuming messages from the subscription or is - * issuing operations on the subscription. If `expiration_policy` is not set, - * a *default policy* with `ttl` of 31 days will be used. The minimum allowed - * value for `expiration_policy.ttl` is 1 day. If `expiration_policy` is set, - * but `expiration_policy.ttl` is not set, the subscription never expires. - * @param {string} [request.filter] - * Optional. An expression written in the Pub/Sub [filter - * language](https://cloud.google.com/pubsub/docs/filtering). If non-empty, - * then only `PubsubMessage`s whose `attributes` field matches the filter are - * delivered on this subscription. If empty, then no messages are filtered - * out. - * @param {google.pubsub.v1.DeadLetterPolicy} [request.deadLetterPolicy] - * Optional. A policy that specifies the conditions for dead lettering - * messages in this subscription. If dead_letter_policy is not set, dead - * lettering is disabled. - * - * The Pub/Sub service account associated with this subscriptions's - * parent project (i.e., - * service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have - * permission to Acknowledge() messages on this subscription. - * @param {google.pubsub.v1.RetryPolicy} [request.retryPolicy] - * Optional. A policy that specifies how Pub/Sub retries message delivery for - * this subscription. - * - * If not set, the default retry policy is applied. This generally implies - * that messages will be retried as soon as possible for healthy subscribers. - * RetryPolicy will be triggered on NACKs or acknowledgment deadline exceeded - * events for a given message. - * @param {boolean} [request.detached] - * Optional. Indicates whether the subscription is detached from its topic. - * Detached subscriptions don't receive messages from their topic and don't - * retain any backlog. `Pull` and `StreamingPull` requests will return - * FAILED_PRECONDITION. If the subscription is a push subscription, pushes to - * the endpoint will not be made. - * @param {boolean} [request.enableExactlyOnceDelivery] - * Optional. If true, Pub/Sub provides the following guarantees for the - * delivery of a message with a given value of `message_id` on this - * subscription: - * - * * The message sent to a subscriber is guaranteed not to be resent - * before the message's acknowledgment deadline expires. - * * An acknowledged message will not be resent to a subscriber. - * - * Note that subscribers may still receive multiple copies of a message - * when `enable_exactly_once_delivery` is true if the message was published - * multiple times by a publisher client. These copies are considered distinct - * by Pub/Sub and have distinct `message_id` values. - * @param {google.protobuf.Duration} request.topicMessageRetentionDuration - * Output only. Indicates the minimum duration for which a message is retained - * after it is published to the subscription's topic. If this field is set, - * messages published to the subscription's topic in the last - * `topic_message_retention_duration` are always available to subscribers. See - * the `message_retention_duration` field in `Topic`. This field is set only - * in responses from the server; it is ignored if it is set in any requests. - * @param {google.pubsub.v1.Subscription.State} request.state - * Output only. An output-only field indicating whether or not the - * subscription can receive messages. - * @param {google.pubsub.v1.Subscription.AnalyticsHubSubscriptionInfo} request.analyticsHubSubscriptionInfo - * Output only. Information about the associated Analytics Hub subscription. - * Only set if the subscription is created by Analytics Hub. - * @param {number[]} [request.messageTransforms] - * Optional. Transforms to be applied to messages before they are delivered to - * subscribers. Transforms are applied in the order specified. - * @param {number[]} request.tags - * Optional. Input only. Immutable. Tag keys/values directly bound to this - * resource. For example: - * "123/environment": "production", - * "123/costCenter": "marketing" - * See https://docs.cloud.google.com/pubsub/docs/tags for more information on - * using tags with Pub/Sub resources. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Subscription|Subscription}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - createSubscription( - request?: protos.google.pubsub.v1.ISubscription, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.ISubscription | undefined, - {} | undefined, - ] - >; - createSubscription( - request: protos.google.pubsub.v1.ISubscription, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.ISubscription | null | undefined, - {} | null | undefined - >, - ): void; - createSubscription( - request: protos.google.pubsub.v1.ISubscription, - callback: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.ISubscription | null | undefined, - {} | null | undefined - >, - ): void; - createSubscription( - request?: protos.google.pubsub.v1.ISubscription, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.ISubscription | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.ISubscription | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.ISubscription | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('createSubscription request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.ISubscription | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('createSubscription response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .createSubscription(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.ISubscription | undefined, - {} | undefined, - ]) => { - this._log.info('createSubscription response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Gets the configuration details of a subscription. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.subscription - * Required. The name of the subscription to get. - * Format is `projects/{project}/subscriptions/{sub}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Subscription|Subscription}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - getSubscription( - request?: protos.google.pubsub.v1.IGetSubscriptionRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IGetSubscriptionRequest | undefined, - {} | undefined, - ] - >; - getSubscription( - request: protos.google.pubsub.v1.IGetSubscriptionRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IGetSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): void; - getSubscription( - request: protos.google.pubsub.v1.IGetSubscriptionRequest, - callback: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IGetSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): void; - getSubscription( - request?: protos.google.pubsub.v1.IGetSubscriptionRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IGetSubscriptionRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IGetSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IGetSubscriptionRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - subscription: request.subscription ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('getSubscription request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IGetSubscriptionRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('getSubscription response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .getSubscription(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IGetSubscriptionRequest | undefined, - {} | undefined, - ]) => { - this._log.info('getSubscription response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Updates an existing subscription by updating the fields specified in the - * update mask. Note that certain properties of a subscription, such as its - * topic, are not modifiable. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.pubsub.v1.Subscription} request.subscription - * Required. The updated subscription object. - * @param {google.protobuf.FieldMask} request.updateMask - * Required. Indicates which fields in the provided subscription to update. - * Must be specified and non-empty. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Subscription|Subscription}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - updateSubscription( - request?: protos.google.pubsub.v1.IUpdateSubscriptionRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IUpdateSubscriptionRequest | undefined, - {} | undefined, - ] - >; - updateSubscription( - request: protos.google.pubsub.v1.IUpdateSubscriptionRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IUpdateSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): void; - updateSubscription( - request: protos.google.pubsub.v1.IUpdateSubscriptionRequest, - callback: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IUpdateSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): void; - updateSubscription( - request?: protos.google.pubsub.v1.IUpdateSubscriptionRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IUpdateSubscriptionRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IUpdateSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IUpdateSubscriptionRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - 'subscription.name': request.subscription!.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('updateSubscription request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IUpdateSubscriptionRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('updateSubscription response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .updateSubscription(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISubscription, - protos.google.pubsub.v1.IUpdateSubscriptionRequest | undefined, - {} | undefined, - ]) => { - this._log.info('updateSubscription response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Deletes an existing subscription. All messages retained in the subscription - * are immediately dropped. Calls to `Pull` after deletion will return - * `NOT_FOUND`. After a subscription is deleted, a new one may be created with - * the same name, but the new one has no association with the old - * subscription or its topic unless the same topic is specified. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.subscription - * Required. The subscription to delete. - * Format is `projects/{project}/subscriptions/{sub}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - deleteSubscription( - request?: protos.google.pubsub.v1.IDeleteSubscriptionRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSubscriptionRequest | undefined, - {} | undefined, - ] - >; - deleteSubscription( - request: protos.google.pubsub.v1.IDeleteSubscriptionRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteSubscription( - request: protos.google.pubsub.v1.IDeleteSubscriptionRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteSubscription( - request?: protos.google.pubsub.v1.IDeleteSubscriptionRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSubscriptionRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSubscriptionRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSubscriptionRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - subscription: request.subscription ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('deleteSubscription request %j', request); - const wrappedCallback: - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSubscriptionRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('deleteSubscription response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .deleteSubscription(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSubscriptionRequest | undefined, - {} | undefined, - ]) => { - this._log.info('deleteSubscription response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Modifies the ack deadline for a specific message. This method is useful - * to indicate that more time is needed to process a message by the - * subscriber, or to make the message available for redelivery if the - * processing was interrupted. Note that this does not modify the - * subscription-level `ackDeadlineSeconds` used for subsequent messages. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.subscription - * Required. The name of the subscription. - * Format is `projects/{project}/subscriptions/{sub}`. - * @param {string[]} request.ackIds - * Required. List of acknowledgment IDs. - * @param {number} request.ackDeadlineSeconds - * Required. The new ack deadline with respect to the time this request was - * sent to the Pub/Sub system. For example, if the value is 10, the new ack - * deadline will expire 10 seconds after the `ModifyAckDeadline` call was - * made. Specifying zero might immediately make the message available for - * delivery to another subscriber client. This typically results in an - * increase in the rate of message redeliveries (that is, duplicates). - * The minimum deadline you can specify is 0 seconds. - * The maximum deadline you can specify in a single request is 600 seconds - * (10 minutes). - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - modifyAckDeadline( - request?: protos.google.pubsub.v1.IModifyAckDeadlineRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyAckDeadlineRequest | undefined, - {} | undefined, - ] - >; - modifyAckDeadline( - request: protos.google.pubsub.v1.IModifyAckDeadlineRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyAckDeadlineRequest | null | undefined, - {} | null | undefined - >, - ): void; - modifyAckDeadline( - request: protos.google.pubsub.v1.IModifyAckDeadlineRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyAckDeadlineRequest | null | undefined, - {} | null | undefined - >, - ): void; - modifyAckDeadline( - request?: protos.google.pubsub.v1.IModifyAckDeadlineRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyAckDeadlineRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyAckDeadlineRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyAckDeadlineRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - subscription: request.subscription ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('modifyAckDeadline request %j', request); - const wrappedCallback: - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyAckDeadlineRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('modifyAckDeadline response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .modifyAckDeadline(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyAckDeadlineRequest | undefined, - {} | undefined, - ]) => { - this._log.info('modifyAckDeadline response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Acknowledges the messages associated with the `ack_ids` in the - * `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages - * from the subscription. - * - * Acknowledging a message whose ack deadline has expired may succeed, - * but such a message may be redelivered later. Acknowledging a message more - * than once will not result in an error. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.subscription - * Required. The subscription whose message is being acknowledged. - * Format is `projects/{project}/subscriptions/{sub}`. - * @param {string[]} request.ackIds - * Required. The acknowledgment ID for the messages being acknowledged that - * was returned by the Pub/Sub system in the `Pull` response. Must not be - * empty. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - acknowledge( - request?: protos.google.pubsub.v1.IAcknowledgeRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IAcknowledgeRequest | undefined, - {} | undefined, - ] - >; - acknowledge( - request: protos.google.pubsub.v1.IAcknowledgeRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IAcknowledgeRequest | null | undefined, - {} | null | undefined - >, - ): void; - acknowledge( - request: protos.google.pubsub.v1.IAcknowledgeRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IAcknowledgeRequest | null | undefined, - {} | null | undefined - >, - ): void; - acknowledge( - request?: protos.google.pubsub.v1.IAcknowledgeRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IAcknowledgeRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IAcknowledgeRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IAcknowledgeRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - subscription: request.subscription ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('acknowledge request %j', request); - const wrappedCallback: - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IAcknowledgeRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('acknowledge response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .acknowledge(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IAcknowledgeRequest | undefined, - {} | undefined, - ]) => { - this._log.info('acknowledge response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Pulls messages from the server. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.subscription - * Required. The subscription from which messages should be pulled. - * Format is `projects/{project}/subscriptions/{sub}`. - * @param {boolean} [request.returnImmediately] - * Optional. If this field set to true, the system will respond immediately - * even if it there are no messages available to return in the `Pull` - * response. Otherwise, the system may wait (for a bounded amount of time) - * until at least one message is available, rather than returning no messages. - * Warning: setting this field to `true` is discouraged because it adversely - * impacts the performance of `Pull` operations. We recommend that users do - * not set this field. - * @param {number} request.maxMessages - * Required. The maximum number of messages to return for this request. Must - * be a positive integer. The Pub/Sub system may return fewer than the number - * specified. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.PullResponse|PullResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - pull( - request?: protos.google.pubsub.v1.IPullRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.IPullResponse, - protos.google.pubsub.v1.IPullRequest | undefined, - {} | undefined, - ] - >; - pull( - request: protos.google.pubsub.v1.IPullRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.IPullResponse, - protos.google.pubsub.v1.IPullRequest | null | undefined, - {} | null | undefined - >, - ): void; - pull( - request: protos.google.pubsub.v1.IPullRequest, - callback: Callback< - protos.google.pubsub.v1.IPullResponse, - protos.google.pubsub.v1.IPullRequest | null | undefined, - {} | null | undefined - >, - ): void; - pull( - request?: protos.google.pubsub.v1.IPullRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.IPullResponse, - protos.google.pubsub.v1.IPullRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.IPullResponse, - protos.google.pubsub.v1.IPullRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.IPullResponse, - protos.google.pubsub.v1.IPullRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - subscription: request.subscription ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('pull request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.IPullResponse, - protos.google.pubsub.v1.IPullRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('pull response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .pull(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.IPullResponse, - protos.google.pubsub.v1.IPullRequest | undefined, - {} | undefined, - ]) => { - this._log.info('pull response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Modifies the `PushConfig` for a specified subscription. - * - * This may be used to change a push subscription to a pull one (signified by - * an empty `PushConfig`) or vice versa, or change the endpoint URL and other - * attributes of a push subscription. Messages will accumulate for delivery - * continuously through the call regardless of changes to the `PushConfig`. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.subscription - * Required. The name of the subscription. - * Format is `projects/{project}/subscriptions/{sub}`. - * @param {google.pubsub.v1.PushConfig} request.pushConfig - * Required. The push configuration for future deliveries. - * - * An empty `pushConfig` indicates that the Pub/Sub system should - * stop pushing messages from the given subscription and allow - * messages to be pulled and acknowledged - effectively pausing - * the subscription if `Pull` or `StreamingPull` is not called. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - modifyPushConfig( - request?: protos.google.pubsub.v1.IModifyPushConfigRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyPushConfigRequest | undefined, - {} | undefined, - ] - >; - modifyPushConfig( - request: protos.google.pubsub.v1.IModifyPushConfigRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyPushConfigRequest | null | undefined, - {} | null | undefined - >, - ): void; - modifyPushConfig( - request: protos.google.pubsub.v1.IModifyPushConfigRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyPushConfigRequest | null | undefined, - {} | null | undefined - >, - ): void; - modifyPushConfig( - request?: protos.google.pubsub.v1.IModifyPushConfigRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyPushConfigRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyPushConfigRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyPushConfigRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - subscription: request.subscription ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('modifyPushConfig request %j', request); - const wrappedCallback: - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyPushConfigRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('modifyPushConfig response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .modifyPushConfig(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IModifyPushConfigRequest | undefined, - {} | undefined, - ]) => { - this._log.info('modifyPushConfig response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Gets the configuration details of a snapshot. Snapshots are used in - * [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations, - * which allow you to manage message acknowledgments in bulk. That is, you can - * set the acknowledgment state of messages in an existing subscription to the - * state captured by a snapshot. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.snapshot - * Required. The name of the snapshot to get. - * Format is `projects/{project}/snapshots/{snap}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Snapshot|Snapshot}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - getSnapshot( - request?: protos.google.pubsub.v1.IGetSnapshotRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IGetSnapshotRequest | undefined, - {} | undefined, - ] - >; - getSnapshot( - request: protos.google.pubsub.v1.IGetSnapshotRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IGetSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): void; - getSnapshot( - request: protos.google.pubsub.v1.IGetSnapshotRequest, - callback: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IGetSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): void; - getSnapshot( - request?: protos.google.pubsub.v1.IGetSnapshotRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IGetSnapshotRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IGetSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IGetSnapshotRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - snapshot: request.snapshot ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('getSnapshot request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IGetSnapshotRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('getSnapshot response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .getSnapshot(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IGetSnapshotRequest | undefined, - {} | undefined, - ]) => { - this._log.info('getSnapshot response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Creates a snapshot from the requested subscription. Snapshots are used in - * [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations, - * which allow you to manage message acknowledgments in bulk. That is, you can - * set the acknowledgment state of messages in an existing subscription to the - * state captured by a snapshot. - * If the snapshot already exists, returns `ALREADY_EXISTS`. - * If the requested subscription doesn't exist, returns `NOT_FOUND`. - * If the backlog in the subscription is too old -- and the resulting snapshot - * would expire in less than 1 hour -- then `FAILED_PRECONDITION` is returned. - * See also the `Snapshot.expire_time` field. If the name is not provided in - * the request, the server will assign a random - * name for this snapshot on the same project as the subscription, conforming - * to the [resource name format] - * (https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). The - * generated name is populated in the returned Snapshot object. Note that for - * REST API requests, you must specify a name in the request. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. User-provided name for this snapshot. If the name is not provided - * in the request, the server will assign a random name for this snapshot on - * the same project as the subscription. Note that for REST API requests, you - * must specify a name. See the [resource name - * rules](https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). - * Format is `projects/{project}/snapshots/{snap}`. - * @param {string} request.subscription - * Required. The subscription whose backlog the snapshot retains. - * Specifically, the created snapshot is guaranteed to retain: - * (a) The existing backlog on the subscription. More precisely, this is - * defined as the messages in the subscription's backlog that are - * unacknowledged upon the successful completion of the - * `CreateSnapshot` request; as well as: - * (b) Any messages published to the subscription's topic following the - * successful completion of the CreateSnapshot request. - * Format is `projects/{project}/subscriptions/{sub}`. - * @param {number[]} [request.labels] - * Optional. See [Creating and managing - * labels](https://cloud.google.com/pubsub/docs/labels). - * @param {number[]} request.tags - * Optional. Input only. Immutable. Tag keys/values directly bound to this - * resource. For example: - * "123/environment": "production", - * "123/costCenter": "marketing" - * See https://docs.cloud.google.com/pubsub/docs/tags for more information on - * using tags with Pub/Sub resources. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Snapshot|Snapshot}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - createSnapshot( - request?: protos.google.pubsub.v1.ICreateSnapshotRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.ICreateSnapshotRequest | undefined, - {} | undefined, - ] - >; - createSnapshot( - request: protos.google.pubsub.v1.ICreateSnapshotRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.ICreateSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): void; - createSnapshot( - request: protos.google.pubsub.v1.ICreateSnapshotRequest, - callback: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.ICreateSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): void; - createSnapshot( - request?: protos.google.pubsub.v1.ICreateSnapshotRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.ICreateSnapshotRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.ICreateSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.ICreateSnapshotRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('createSnapshot request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.ICreateSnapshotRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('createSnapshot response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .createSnapshot(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.ICreateSnapshotRequest | undefined, - {} | undefined, - ]) => { - this._log.info('createSnapshot response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Updates an existing snapshot by updating the fields specified in the update - * mask. Snapshots are used in - * [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations, - * which allow you to manage message acknowledgments in bulk. That is, you can - * set the acknowledgment state of messages in an existing subscription to the - * state captured by a snapshot. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.pubsub.v1.Snapshot} request.snapshot - * Required. The updated snapshot object. - * @param {google.protobuf.FieldMask} request.updateMask - * Required. Indicates which fields in the provided snapshot to update. - * Must be specified and non-empty. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.Snapshot|Snapshot}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - updateSnapshot( - request?: protos.google.pubsub.v1.IUpdateSnapshotRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IUpdateSnapshotRequest | undefined, - {} | undefined, - ] - >; - updateSnapshot( - request: protos.google.pubsub.v1.IUpdateSnapshotRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IUpdateSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): void; - updateSnapshot( - request: protos.google.pubsub.v1.IUpdateSnapshotRequest, - callback: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IUpdateSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): void; - updateSnapshot( - request?: protos.google.pubsub.v1.IUpdateSnapshotRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IUpdateSnapshotRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IUpdateSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IUpdateSnapshotRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - 'snapshot.name': request.snapshot!.name ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('updateSnapshot request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IUpdateSnapshotRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('updateSnapshot response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .updateSnapshot(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISnapshot, - protos.google.pubsub.v1.IUpdateSnapshotRequest | undefined, - {} | undefined, - ]) => { - this._log.info('updateSnapshot response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Removes an existing snapshot. Snapshots are used in [Seek] - * (https://cloud.google.com/pubsub/docs/replay-overview) operations, which - * allow you to manage message acknowledgments in bulk. That is, you can set - * the acknowledgment state of messages in an existing subscription to the - * state captured by a snapshot. - * When the snapshot is deleted, all messages retained in the snapshot - * are immediately dropped. After a snapshot is deleted, a new one may be - * created with the same name, but the new one has no association with the old - * snapshot or its subscription, unless the same subscription is specified. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.snapshot - * Required. The name of the snapshot to delete. - * Format is `projects/{project}/snapshots/{snap}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - deleteSnapshot( - request?: protos.google.pubsub.v1.IDeleteSnapshotRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSnapshotRequest | undefined, - {} | undefined, - ] - >; - deleteSnapshot( - request: protos.google.pubsub.v1.IDeleteSnapshotRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteSnapshot( - request: protos.google.pubsub.v1.IDeleteSnapshotRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): void; - deleteSnapshot( - request?: protos.google.pubsub.v1.IDeleteSnapshotRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSnapshotRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSnapshotRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSnapshotRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - snapshot: request.snapshot ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('deleteSnapshot request %j', request); - const wrappedCallback: - | Callback< - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSnapshotRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('deleteSnapshot response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .deleteSnapshot(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.pubsub.v1.IDeleteSnapshotRequest | undefined, - {} | undefined, - ]) => { - this._log.info('deleteSnapshot response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - /** - * Seeks an existing subscription to a point in time or to a given snapshot, - * whichever is provided in the request. Snapshots are used in [Seek] - * (https://cloud.google.com/pubsub/docs/replay-overview) operations, which - * allow you to manage message acknowledgments in bulk. That is, you can set - * the acknowledgment state of messages in an existing subscription to the - * state captured by a snapshot. Note that both the subscription and the - * snapshot must be on the same topic. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.subscription - * Required. The subscription to affect. - * @param {google.protobuf.Timestamp} [request.time] - * Optional. The time to seek to. - * Messages retained in the subscription that were published before this - * time are marked as acknowledged, and messages retained in the - * subscription that were published after this time are marked as - * unacknowledged. Note that this operation affects only those messages - * retained in the subscription (configured by the combination of - * `message_retention_duration` and `retain_acked_messages`). For example, - * if `time` corresponds to a point before the message retention - * window (or to a point before the system's notion of the subscription - * creation time), only retained messages will be marked as unacknowledged, - * and already-expunged messages will not be restored. - * @param {string} [request.snapshot] - * Optional. The snapshot to seek to. The snapshot's topic must be the same - * as that of the provided subscription. Format is - * `projects/{project}/snapshots/{snap}`. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.pubsub.v1.SeekResponse|SeekResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - */ - seek( - request?: protos.google.pubsub.v1.ISeekRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISeekResponse, - protos.google.pubsub.v1.ISeekRequest | undefined, - {} | undefined, - ] - >; - seek( - request: protos.google.pubsub.v1.ISeekRequest, - options: CallOptions, - callback: Callback< - protos.google.pubsub.v1.ISeekResponse, - protos.google.pubsub.v1.ISeekRequest | null | undefined, - {} | null | undefined - >, - ): void; - seek( - request: protos.google.pubsub.v1.ISeekRequest, - callback: Callback< - protos.google.pubsub.v1.ISeekResponse, - protos.google.pubsub.v1.ISeekRequest | null | undefined, - {} | null | undefined - >, - ): void; - seek( - request?: protos.google.pubsub.v1.ISeekRequest, - optionsOrCallback?: - | CallOptions - | Callback< - protos.google.pubsub.v1.ISeekResponse, - protos.google.pubsub.v1.ISeekRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - protos.google.pubsub.v1.ISeekResponse, - protos.google.pubsub.v1.ISeekRequest | null | undefined, - {} | null | undefined - >, - ): Promise< - [ - protos.google.pubsub.v1.ISeekResponse, - protos.google.pubsub.v1.ISeekRequest | undefined, - {} | undefined, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - subscription: request.subscription ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - this._log.info('seek request %j', request); - const wrappedCallback: - | Callback< - protos.google.pubsub.v1.ISeekResponse, - protos.google.pubsub.v1.ISeekRequest | null | undefined, - {} | null | undefined - > - | undefined = callback - ? (error, response, options, rawResponse) => { - this._log.info('seek response %j', response); - callback!(error, response, options, rawResponse); // We verified callback above. - } - : undefined; - return this.innerApiCalls - .seek(request, options, wrappedCallback) - ?.then( - ([response, options, rawResponse]: [ - protos.google.pubsub.v1.ISeekResponse, - protos.google.pubsub.v1.ISeekRequest | undefined, - {} | undefined, - ]) => { - this._log.info('seek response %j', response); - return [response, options, rawResponse]; - }, - ) - .catch((error: any) => { - if ( - error && - 'statusDetails' in error && - error.statusDetails instanceof Array - ) { - const protos = this._gaxModule.protobuf.Root.fromJSON( - jsonProtos, - ) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray( - error.statusDetails, - protos, - ); - } - throw error; - }); - } - - /** - * Establishes a stream with the server, which sends messages down to the - * client. The client streams acknowledgments and ack deadline modifications - * back to the server. The server will close the stream and return the status - * on any error. The server may close the stream with status `UNAVAILABLE` to - * reassign server-side resources, in which case, the client should - * re-establish the stream. Flow control can be achieved by configuring the - * underlying RPC channel. - * - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which is both readable and writable. It accepts objects - * representing {@link protos.google.pubsub.v1.StreamingPullRequest|StreamingPullRequest} for write() method, and - * will emit objects representing {@link protos.google.pubsub.v1.StreamingPullResponse|StreamingPullResponse} on 'data' event asynchronously. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#bi-directional-streaming | documentation } - * for more details and examples. - */ - streamingPull(options?: CallOptions): gax.CancellableStream { - this.initialize().catch(err => { - throw err; - }); - this._log.info('streamingPull stream %j', options); - return this.innerApiCalls.streamingPull(null, options); - } - - /** - * Lists matching subscriptions. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list subscriptions. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of subscriptions to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListSubscriptionsResponse`; - * indicates that this is a continuation of a prior `ListSubscriptions` call, - * and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.pubsub.v1.Subscription|Subscription}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listSubscriptionsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSubscriptions( - request?: protos.google.pubsub.v1.IListSubscriptionsRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISubscription[], - protos.google.pubsub.v1.IListSubscriptionsRequest | null, - protos.google.pubsub.v1.IListSubscriptionsResponse, - ] - >; - listSubscriptions( - request: protos.google.pubsub.v1.IListSubscriptionsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.pubsub.v1.IListSubscriptionsRequest, - protos.google.pubsub.v1.IListSubscriptionsResponse | null | undefined, - protos.google.pubsub.v1.ISubscription - >, - ): void; - listSubscriptions( - request: protos.google.pubsub.v1.IListSubscriptionsRequest, - callback: PaginationCallback< - protos.google.pubsub.v1.IListSubscriptionsRequest, - protos.google.pubsub.v1.IListSubscriptionsResponse | null | undefined, - protos.google.pubsub.v1.ISubscription - >, - ): void; - listSubscriptions( - request?: protos.google.pubsub.v1.IListSubscriptionsRequest, - optionsOrCallback?: - | CallOptions - | PaginationCallback< - protos.google.pubsub.v1.IListSubscriptionsRequest, - protos.google.pubsub.v1.IListSubscriptionsResponse | null | undefined, - protos.google.pubsub.v1.ISubscription - >, - callback?: PaginationCallback< - protos.google.pubsub.v1.IListSubscriptionsRequest, - protos.google.pubsub.v1.IListSubscriptionsResponse | null | undefined, - protos.google.pubsub.v1.ISubscription - >, - ): Promise< - [ - protos.google.pubsub.v1.ISubscription[], - protos.google.pubsub.v1.IListSubscriptionsRequest | null, - protos.google.pubsub.v1.IListSubscriptionsResponse, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - const wrappedCallback: - | PaginationCallback< - protos.google.pubsub.v1.IListSubscriptionsRequest, - protos.google.pubsub.v1.IListSubscriptionsResponse | null | undefined, - protos.google.pubsub.v1.ISubscription - > - | undefined = callback - ? (error, values, nextPageRequest, rawResponse) => { - this._log.info('listSubscriptions values %j', values); - callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. - } - : undefined; - this._log.info('listSubscriptions request %j', request); - return this.innerApiCalls - .listSubscriptions(request, options, wrappedCallback) - ?.then( - ([response, input, output]: [ - protos.google.pubsub.v1.ISubscription[], - protos.google.pubsub.v1.IListSubscriptionsRequest | null, - protos.google.pubsub.v1.IListSubscriptionsResponse, - ]) => { - this._log.info('listSubscriptions values %j', response); - return [response, input, output]; - }, - ); - } - - /** - * Equivalent to `listSubscriptions`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list subscriptions. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of subscriptions to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListSubscriptionsResponse`; - * indicates that this is a continuation of a prior `ListSubscriptions` call, - * and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.pubsub.v1.Subscription|Subscription} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listSubscriptionsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSubscriptionsStream( - request?: protos.google.pubsub.v1.IListSubscriptionsRequest, - options?: CallOptions, - ): Transform { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - const defaultCallSettings = this._defaults['listSubscriptions']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listSubscriptions stream %j', request); - return this.descriptors.page.listSubscriptions.createStream( - this.innerApiCalls.listSubscriptions as GaxCall, - request, - callSettings, - ); - } - - /** - * Equivalent to `listSubscriptions`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list subscriptions. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of subscriptions to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListSubscriptionsResponse`; - * indicates that this is a continuation of a prior `ListSubscriptions` call, - * and that the system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.pubsub.v1.Subscription|Subscription}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSubscriptionsAsync( - request?: protos.google.pubsub.v1.IListSubscriptionsRequest, - options?: CallOptions, - ): AsyncIterable { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - const defaultCallSettings = this._defaults['listSubscriptions']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listSubscriptions iterate %j', request); - return this.descriptors.page.listSubscriptions.asyncIterate( - this.innerApiCalls['listSubscriptions'] as GaxCall, - request as {}, - callSettings, - ) as AsyncIterable; - } - /** - * Lists the existing snapshots. Snapshots are used in [Seek]( - * https://cloud.google.com/pubsub/docs/replay-overview) operations, which - * allow you to manage message acknowledgments in bulk. That is, you can set - * the acknowledgment state of messages in an existing subscription to the - * state captured by a snapshot. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list snapshots. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of snapshots to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListSnapshotsResponse`; indicates - * that this is a continuation of a prior `ListSnapshots` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.pubsub.v1.Snapshot|Snapshot}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listSnapshotsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSnapshots( - request?: protos.google.pubsub.v1.IListSnapshotsRequest, - options?: CallOptions, - ): Promise< - [ - protos.google.pubsub.v1.ISnapshot[], - protos.google.pubsub.v1.IListSnapshotsRequest | null, - protos.google.pubsub.v1.IListSnapshotsResponse, - ] - >; - listSnapshots( - request: protos.google.pubsub.v1.IListSnapshotsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.pubsub.v1.IListSnapshotsRequest, - protos.google.pubsub.v1.IListSnapshotsResponse | null | undefined, - protos.google.pubsub.v1.ISnapshot - >, - ): void; - listSnapshots( - request: protos.google.pubsub.v1.IListSnapshotsRequest, - callback: PaginationCallback< - protos.google.pubsub.v1.IListSnapshotsRequest, - protos.google.pubsub.v1.IListSnapshotsResponse | null | undefined, - protos.google.pubsub.v1.ISnapshot - >, - ): void; - listSnapshots( - request?: protos.google.pubsub.v1.IListSnapshotsRequest, - optionsOrCallback?: - | CallOptions - | PaginationCallback< - protos.google.pubsub.v1.IListSnapshotsRequest, - protos.google.pubsub.v1.IListSnapshotsResponse | null | undefined, - protos.google.pubsub.v1.ISnapshot - >, - callback?: PaginationCallback< - protos.google.pubsub.v1.IListSnapshotsRequest, - protos.google.pubsub.v1.IListSnapshotsResponse | null | undefined, - protos.google.pubsub.v1.ISnapshot - >, - ): Promise< - [ - protos.google.pubsub.v1.ISnapshot[], - protos.google.pubsub.v1.IListSnapshotsRequest | null, - protos.google.pubsub.v1.IListSnapshotsResponse, - ] - > | void { - request = request || {}; - let options: CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - this.initialize().catch(err => { - throw err; - }); - const wrappedCallback: - | PaginationCallback< - protos.google.pubsub.v1.IListSnapshotsRequest, - protos.google.pubsub.v1.IListSnapshotsResponse | null | undefined, - protos.google.pubsub.v1.ISnapshot - > - | undefined = callback - ? (error, values, nextPageRequest, rawResponse) => { - this._log.info('listSnapshots values %j', values); - callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. - } - : undefined; - this._log.info('listSnapshots request %j', request); - return this.innerApiCalls - .listSnapshots(request, options, wrappedCallback) - ?.then( - ([response, input, output]: [ - protos.google.pubsub.v1.ISnapshot[], - protos.google.pubsub.v1.IListSnapshotsRequest | null, - protos.google.pubsub.v1.IListSnapshotsResponse, - ]) => { - this._log.info('listSnapshots values %j', response); - return [response, input, output]; - }, - ); - } - - /** - * Equivalent to `listSnapshots`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list snapshots. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of snapshots to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListSnapshotsResponse`; indicates - * that this is a continuation of a prior `ListSnapshots` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.pubsub.v1.Snapshot|Snapshot} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listSnapshotsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSnapshotsStream( - request?: protos.google.pubsub.v1.IListSnapshotsRequest, - options?: CallOptions, - ): Transform { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - const defaultCallSettings = this._defaults['listSnapshots']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listSnapshots stream %j', request); - return this.descriptors.page.listSnapshots.createStream( - this.innerApiCalls.listSnapshots as GaxCall, - request, - callSettings, - ); - } - - /** - * Equivalent to `listSnapshots`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.project - * Required. The name of the project in which to list snapshots. - * Format is `projects/{project-id}`. - * @param {number} [request.pageSize] - * Optional. Maximum number of snapshots to return. - * @param {string} [request.pageToken] - * Optional. The value returned by the last `ListSnapshotsResponse`; indicates - * that this is a continuation of a prior `ListSnapshots` call, and that the - * system should return the next page of data. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.pubsub.v1.Snapshot|Snapshot}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ - listSnapshotsAsync( - request?: protos.google.pubsub.v1.IListSnapshotsRequest, - options?: CallOptions, - ): AsyncIterable { - request = request || {}; - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - project: request.project ?? '', - }); - const defaultCallSettings = this._defaults['listSnapshots']; - const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => { - throw err; - }); - this._log.info('listSnapshots iterate %j', request); - return this.descriptors.page.listSnapshots.asyncIterate( - this.innerApiCalls['listSnapshots'] as GaxCall, - request as {}, - callSettings, - ) as AsyncIterable; - } - /** - * Gets the access control policy for a resource. Returns an empty policy - * if the resource exists and does not have a policy set. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {Object} [request.options] - * OPTIONAL: A `GetPolicyOptions` object for specifying options to - * `GetIamPolicy`. This field is only used by Cloud IAM. - * - * This object should have the same structure as {@link google.iam.v1.GetPolicyOptions | GetPolicyOptions}. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.Policy | Policy}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.Policy | Policy}. - * The promise has a method named "cancel" which cancels the ongoing API call. - */ - getIamPolicy( - request: IamProtos.google.iam.v1.GetIamPolicyRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.GetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.GetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.Policy]> { - return this.iamClient.getIamPolicy(request, options, callback); - } - - /** - * Returns permissions that a caller has on the specified resource. If the - * resource does not exist, this will return an empty set of - * permissions, not a NOT_FOUND error. - * - * Note: This operation is designed to be used for building - * permission-aware UIs and command-line tools, not for authorization - * checking. This operation may "fail open" without warning. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy detail is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {string[]} request.permissions - * The set of permissions to check for the `resource`. Permissions with - * wildcards (such as '*' or 'storage.*') are not allowed. For more - * information see {@link https://cloud.google.com/iam/docs/overview#permissions | IAM Overview }. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - */ - setIamPolicy( - request: IamProtos.google.iam.v1.SetIamPolicyRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.SetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.Policy, - IamProtos.google.iam.v1.SetIamPolicyRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.Policy]> { - return this.iamClient.setIamPolicy(request, options, callback); - } - - /** - * Returns permissions that a caller has on the specified resource. If the - * resource does not exist, this will return an empty set of - * permissions, not a NOT_FOUND error. - * - * Note: This operation is designed to be used for building - * permission-aware UIs and command-line tools, not for authorization - * checking. This operation may "fail open" without warning. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.resource - * REQUIRED: The resource for which the policy detail is being requested. - * See the operation documentation for the appropriate value for this field. - * @param {string[]} request.permissions - * The set of permissions to check for the `resource`. Permissions with - * wildcards (such as '*' or 'storage.*') are not allowed. For more - * information see {@link https://cloud.google.com/iam/docs/overview#permissions | IAM Overview }. - * @param {Object} [options] - * Optional parameters. You can override the default settings for this call, e.g, timeout, - * retries, paginations, etc. See {@link https://googleapis.github.io/gax-nodejs/interfaces/CallOptions.html | gax.CallOptions} for the details. - * @param {function(?Error, ?Object)} [callback] - * The function which will be called with the result of the API call. - * - * The second parameter to the callback is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link google.iam.v1.TestIamPermissionsResponse | TestIamPermissionsResponse}. - * The promise has a method named "cancel" which cancels the ongoing API call. - * - */ - testIamPermissions( - request: IamProtos.google.iam.v1.TestIamPermissionsRequest, - options?: - | gax.CallOptions - | Callback< - IamProtos.google.iam.v1.TestIamPermissionsResponse, - IamProtos.google.iam.v1.TestIamPermissionsRequest | null | undefined, - {} | null | undefined - >, - callback?: Callback< - IamProtos.google.iam.v1.TestIamPermissionsResponse, - IamProtos.google.iam.v1.TestIamPermissionsRequest | null | undefined, - {} | null | undefined - >, - ): Promise<[IamProtos.google.iam.v1.TestIamPermissionsResponse]> { - return this.iamClient.testIamPermissions(request, options, callback); - } - - // -------------------- - // -- Path templates -- - // -------------------- - - /** - * Return a fully-qualified cryptoKey resource name string. - * - * @param {string} project - * @param {string} location - * @param {string} key_ring - * @param {string} crypto_key - * @returns {string} Resource name string. - */ - cryptoKeyPath( - project: string, - location: string, - keyRing: string, - cryptoKey: string, - ) { - return this.pathTemplates.cryptoKeyPathTemplate.render({ - project: project, - location: location, - key_ring: keyRing, - crypto_key: cryptoKey, - }); - } - - /** - * Parse the project from CryptoKey resource. - * - * @param {string} cryptoKeyName - * A fully-qualified path representing CryptoKey resource. - * @returns {string} A string representing the project. - */ - matchProjectFromCryptoKeyName(cryptoKeyName: string) { - return this.pathTemplates.cryptoKeyPathTemplate.match(cryptoKeyName) - .project; - } - - /** - * Parse the location from CryptoKey resource. - * - * @param {string} cryptoKeyName - * A fully-qualified path representing CryptoKey resource. - * @returns {string} A string representing the location. - */ - matchLocationFromCryptoKeyName(cryptoKeyName: string) { - return this.pathTemplates.cryptoKeyPathTemplate.match(cryptoKeyName) - .location; - } - - /** - * Parse the key_ring from CryptoKey resource. - * - * @param {string} cryptoKeyName - * A fully-qualified path representing CryptoKey resource. - * @returns {string} A string representing the key_ring. - */ - matchKeyRingFromCryptoKeyName(cryptoKeyName: string) { - return this.pathTemplates.cryptoKeyPathTemplate.match(cryptoKeyName) - .key_ring; - } - - /** - * Parse the crypto_key from CryptoKey resource. - * - * @param {string} cryptoKeyName - * A fully-qualified path representing CryptoKey resource. - * @returns {string} A string representing the crypto_key. - */ - matchCryptoKeyFromCryptoKeyName(cryptoKeyName: string) { - return this.pathTemplates.cryptoKeyPathTemplate.match(cryptoKeyName) - .crypto_key; - } - - /** - * Return a fully-qualified project resource name string. - * - * @param {string} project - * @returns {string} Resource name string. - */ - projectPath(project: string) { - return this.pathTemplates.projectPathTemplate.render({ - project: project, - }); - } - - /** - * Parse the project from Project resource. - * - * @param {string} projectName - * A fully-qualified path representing Project resource. - * @returns {string} A string representing the project. - */ - matchProjectFromProjectName(projectName: string) { - return this.pathTemplates.projectPathTemplate.match(projectName).project; - } - - /** - * Return a fully-qualified projectTopics resource name string. - * - * @param {string} project - * @param {string} topic - * @returns {string} Resource name string. - */ - projectTopicsPath(project: string, topic: string) { - return this.pathTemplates.projectTopicsPathTemplate.render({ - project: project, - topic: topic, - }); - } - - /** - * Parse the project from ProjectTopics resource. - * - * @param {string} projectTopicsName - * A fully-qualified path representing project_topics resource. - * @returns {string} A string representing the project. - */ - matchProjectFromProjectTopicsName(projectTopicsName: string) { - return this.pathTemplates.projectTopicsPathTemplate.match(projectTopicsName) - .project; - } - - /** - * Parse the topic from ProjectTopics resource. - * - * @param {string} projectTopicsName - * A fully-qualified path representing project_topics resource. - * @returns {string} A string representing the topic. - */ - matchTopicFromProjectTopicsName(projectTopicsName: string) { - return this.pathTemplates.projectTopicsPathTemplate.match(projectTopicsName) - .topic; - } - - /** - * Return a fully-qualified schema resource name string. - * - * @param {string} project - * @param {string} schema - * @returns {string} Resource name string. - */ - schemaPath(project: string, schema: string) { - return this.pathTemplates.schemaPathTemplate.render({ - project: project, - schema: schema, - }); - } - - /** - * Parse the project from Schema resource. - * - * @param {string} schemaName - * A fully-qualified path representing Schema resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSchemaName(schemaName: string) { - return this.pathTemplates.schemaPathTemplate.match(schemaName).project; - } - - /** - * Parse the schema from Schema resource. - * - * @param {string} schemaName - * A fully-qualified path representing Schema resource. - * @returns {string} A string representing the schema. - */ - matchSchemaFromSchemaName(schemaName: string) { - return this.pathTemplates.schemaPathTemplate.match(schemaName).schema; - } - - /** - * Return a fully-qualified snapshot resource name string. - * - * @param {string} project - * @param {string} snapshot - * @returns {string} Resource name string. - */ - snapshotPath(project: string, snapshot: string) { - return this.pathTemplates.snapshotPathTemplate.render({ - project: project, - snapshot: snapshot, - }); - } - - /** - * Parse the project from Snapshot resource. - * - * @param {string} snapshotName - * A fully-qualified path representing Snapshot resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSnapshotName(snapshotName: string) { - return this.pathTemplates.snapshotPathTemplate.match(snapshotName).project; - } - - /** - * Parse the snapshot from Snapshot resource. - * - * @param {string} snapshotName - * A fully-qualified path representing Snapshot resource. - * @returns {string} A string representing the snapshot. - */ - matchSnapshotFromSnapshotName(snapshotName: string) { - return this.pathTemplates.snapshotPathTemplate.match(snapshotName).snapshot; - } - - /** - * Return a fully-qualified subscription resource name string. - * - * @param {string} project - * @param {string} subscription - * @returns {string} Resource name string. - */ - subscriptionPath(project: string, subscription: string) { - return this.pathTemplates.subscriptionPathTemplate.render({ - project: project, - subscription: subscription, - }); - } - - /** - * Parse the project from Subscription resource. - * - * @param {string} subscriptionName - * A fully-qualified path representing Subscription resource. - * @returns {string} A string representing the project. - */ - matchProjectFromSubscriptionName(subscriptionName: string) { - return this.pathTemplates.subscriptionPathTemplate.match(subscriptionName) - .project; - } - - /** - * Parse the subscription from Subscription resource. - * - * @param {string} subscriptionName - * A fully-qualified path representing Subscription resource. - * @returns {string} A string representing the subscription. - */ - matchSubscriptionFromSubscriptionName(subscriptionName: string) { - return this.pathTemplates.subscriptionPathTemplate.match(subscriptionName) - .subscription; - } - - /** - * Terminate the gRPC channel and close the client. - * - * The client will no longer be usable and all future behavior is undefined. - * @returns {Promise} A promise that resolves when the client is closed. - */ - close(): Promise { - if (this.subscriberStub && !this._terminated) { - return this.subscriberStub.then(stub => { - this._log.info('ending gRPC channel'); - this._terminated = true; - stub.close(); - this.iamClient.close().catch(err => { - throw err; - }); - }); - } - return Promise.resolve(); - } -} diff --git a/handwritten/pubsub/src/v1/subscriber_client_config.json b/handwritten/pubsub/src/v1/subscriber_client_config.json deleted file mode 100644 index fa869f777da1..000000000000 --- a/handwritten/pubsub/src/v1/subscriber_client_config.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "interfaces": { - "google.pubsub.v1.Subscriber": { - "retry_codes": { - "non_idempotent": [], - "idempotent": [ - "DEADLINE_EXCEEDED", - "UNAVAILABLE" - ], - "unknown_aborted_unavailable": [ - "UNKNOWN", - "ABORTED", - "UNAVAILABLE" - ], - "unavailable": [ - "UNAVAILABLE" - ], - "unknown_aborted_internal_unavailable": [ - "UNKNOWN", - "ABORTED", - "INTERNAL", - "UNAVAILABLE" - ], - "deadline_exceeded_resource_exhausted_aborted_internal_unavailable": [ - "DEADLINE_EXCEEDED", - "RESOURCE_EXHAUSTED", - "ABORTED", - "INTERNAL", - "UNAVAILABLE" - ] - }, - "retry_params": { - "default": { - "initial_retry_delay_millis": 100, - "retry_delay_multiplier": 1.3, - "max_retry_delay_millis": 60000, - "initial_rpc_timeout_millis": 60000, - "rpc_timeout_multiplier": 1, - "max_rpc_timeout_millis": 60000, - "total_timeout_millis": 600000 - }, - "693222d32e887d96c8faeadca469f7763ccda85a": { - "initial_retry_delay_millis": 100, - "retry_delay_multiplier": 4, - "max_retry_delay_millis": 60000, - "initial_rpc_timeout_millis": 180000, - "rpc_timeout_multiplier": 1, - "max_rpc_timeout_millis": 1800000, - "total_timeout_millis": 1800000 - } - }, - "methods": { - "CreateSubscription": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "GetSubscription": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "UpdateSubscription": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "ListSubscriptions": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "DeleteSubscription": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "ModifyAckDeadline": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "Acknowledge": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "Pull": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_internal_unavailable", - "retry_params_name": "default" - }, - "StreamingPull": { - "timeout_millis": 1800000, - "retry_codes_name": "deadline_exceeded_resource_exhausted_aborted_internal_unavailable", - "retry_params_name": "693222d32e887d96c8faeadca469f7763ccda85a" - }, - "ModifyPushConfig": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "GetSnapshot": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "ListSnapshots": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - }, - "CreateSnapshot": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "UpdateSnapshot": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "DeleteSnapshot": { - "timeout_millis": 60000, - "retry_codes_name": "unavailable", - "retry_params_name": "default" - }, - "Seek": { - "timeout_millis": 60000, - "retry_codes_name": "unknown_aborted_unavailable", - "retry_params_name": "default" - } - } - } - } -} diff --git a/handwritten/pubsub/src/v1/subscriber_proto_list.json b/handwritten/pubsub/src/v1/subscriber_proto_list.json deleted file mode 100644 index 91011aec1502..000000000000 --- a/handwritten/pubsub/src/v1/subscriber_proto_list.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "../../protos/google/pubsub/v1/pubsub.proto", - "../../protos/google/pubsub/v1/schema.proto" -] diff --git a/handwritten/pubsub/test/schema.ts b/handwritten/pubsub/test/schema.ts index d1e6294640eb..44acf5dc12ff 100644 --- a/handwritten/pubsub/test/schema.ts +++ b/handwritten/pubsub/test/schema.ts @@ -18,7 +18,9 @@ import * as sinon from 'sinon'; import {google} from '../protos/protos'; import {PubSub} from '../src/pubsub'; import {ISchema, Schema, SchemaTypes, SchemaViews} from '../src/schema'; -import {SchemaServiceClient} from '../src/v1'; + +import {v1} from '../src'; +type SchemaServiceClient = v1.SchemaServiceClient; const sandbox = sinon.createSandbox(); From ad6ec08a1912ce67d5bc147fb05572644646a516 Mon Sep 17 00:00:00 2001 From: feywind <57276408+feywind@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:53:43 -0400 Subject: [PATCH 3/6] chore(temp): update api package to have correct gax version --- .../tmp/google-cloud-pubsub-api-0.1.0.tgz | Bin 216999 -> 216997 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/handwritten/pubsub/tmp/google-cloud-pubsub-api-0.1.0.tgz b/handwritten/pubsub/tmp/google-cloud-pubsub-api-0.1.0.tgz index 78fb6c15c9c492cf17e8bb018647b82a9d688c12..7c0e0ba9c81e9322fcfe9a50fa5365f0664b40f7 100644 GIT binary patch delta 101776 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

Ws1s5ES!v6 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ĿCyjAAbVg%0gR4UXd)jR5+pY9)>_0Icmjt};M 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

MPzc>@Oz7YF+NNVe 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 bKUU{OltuA}8fFrqw_pyvdyH?|<=j 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 From 03fcc9109a3ce541d38cd1f5936937575937d7cb Mon Sep 17 00:00:00 2001 From: feywind <57276408+feywind@users.noreply.github.com> Date: Fri, 10 Jul 2026 16:21:08 -0400 Subject: [PATCH 4/6] fix(pubsub-api): update gax package version --- packages/google-cloud-pubsub-api/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google-cloud-pubsub-api/package.json b/packages/google-cloud-pubsub-api/package.json index 5a8bf19a804e..516d780ae0e9 100644 --- a/packages/google-cloud-pubsub-api/package.json +++ b/packages/google-cloud-pubsub-api/package.json @@ -42,7 +42,7 @@ "test": "c8 mocha --config ../../.mocharc.cjs build/test" }, "dependencies": { - "google-gax": "^5.1.1-rc.1" + "google-gax": "^5.0.7" }, "devDependencies": { "@types/mocha": "^10.0.10", From a2093bc9587baa3a8c3997d860b14ccb684c62f0 Mon Sep 17 00:00:00 2001 From: feywind <57276408+feywind@users.noreply.github.com> Date: Fri, 10 Jul 2026 17:27:07 -0400 Subject: [PATCH 5/6] fix: make the json import pull from local, fix test breakages --- handwritten/pubsub/protos/protos.json | 5589 ++++++++++++++++- handwritten/pubsub/src/message-stream.ts | 6 +- handwritten/pubsub/src/pubsub.ts | 2 +- .../src/v1-old/publisher_client_config.json | 103 + .../v1-old/schema_service_client_config.json | 79 + .../src/v1-old/subscriber_client_config.json | 136 + handwritten/pubsub/test/message-stream.ts | 2 +- handwritten/pubsub/test/pubsub.ts | 5 +- 8 files changed, 5914 insertions(+), 8 deletions(-) create mode 100644 handwritten/pubsub/src/v1-old/publisher_client_config.json create mode 100644 handwritten/pubsub/src/v1-old/schema_service_client_config.json create mode 100644 handwritten/pubsub/src/v1-old/subscriber_client_config.json diff --git a/handwritten/pubsub/protos/protos.json b/handwritten/pubsub/protos/protos.json index 9e26dfeeb6e6..d377e386e9f0 100644 --- a/handwritten/pubsub/protos/protos.json +++ b/handwritten/pubsub/protos/protos.json @@ -1 +1,5588 @@ -{} \ No newline at end of file +{ + "nested": { + "google": { + "nested": { + "pubsub": { + "nested": { + "v1": { + "options": { + "csharp_namespace": "Google.Cloud.PubSub.V1", + "go_package": "cloud.google.com/go/pubsub/v2/apiv1/pubsubpb;pubsubpb", + "java_multiple_files": true, + "java_outer_classname": "SchemaProto", + "java_package": "com.google.pubsub.v1", + "php_namespace": "Google\\Cloud\\PubSub\\V1", + "ruby_package": "Google::Cloud::PubSub::V1", + "(google.api.resource_definition).type": "analyticshub.googleapis.com/Listing", + "(google.api.resource_definition).pattern": "projects/{project}/locations/{location}/dataExchanges/{data_exchange}/listings/{listing}" + }, + "nested": { + "Publisher": { + "options": { + "(google.api.default_host)": "pubsub.googleapis.com", + "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsub" + }, + "methods": { + "CreateTopic": { + "requestType": "Topic", + "responseType": "Topic", + "options": { + "(google.api.http).put": "/v1/{name=projects/*/topics/*}", + "(google.api.http).body": "*", + "(google.api.method_signature)": "name" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "put": "/v1/{name=projects/*/topics/*}", + "body": "*" + } + }, + { + "(google.api.method_signature)": "name" + } + ] + }, + "UpdateTopic": { + "requestType": "UpdateTopicRequest", + "responseType": "Topic", + "options": { + "(google.api.http).patch": "/v1/{topic.name=projects/*/topics/*}", + "(google.api.http).body": "*", + "(google.api.method_signature)": "topic,update_mask" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "patch": "/v1/{topic.name=projects/*/topics/*}", + "body": "*" + } + }, + { + "(google.api.method_signature)": "topic,update_mask" + } + ] + }, + "Publish": { + "requestType": "PublishRequest", + "responseType": "PublishResponse", + "options": { + "(google.api.http).post": "/v1/{topic=projects/*/topics/*}:publish", + "(google.api.http).body": "*", + "(google.api.method_signature)": "topic,messages" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{topic=projects/*/topics/*}:publish", + "body": "*" + } + }, + { + "(google.api.method_signature)": "topic,messages" + } + ] + }, + "GetTopic": { + "requestType": "GetTopicRequest", + "responseType": "Topic", + "options": { + "(google.api.http).get": "/v1/{topic=projects/*/topics/*}", + "(google.api.method_signature)": "topic" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{topic=projects/*/topics/*}" + } + }, + { + "(google.api.method_signature)": "topic" + } + ] + }, + "ListTopics": { + "requestType": "ListTopicsRequest", + "responseType": "ListTopicsResponse", + "options": { + "(google.api.http).get": "/v1/{project=projects/*}/topics", + "(google.api.method_signature)": "project" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{project=projects/*}/topics" + } + }, + { + "(google.api.method_signature)": "project" + } + ] + }, + "ListTopicSubscriptions": { + "requestType": "ListTopicSubscriptionsRequest", + "responseType": "ListTopicSubscriptionsResponse", + "options": { + "(google.api.http).get": "/v1/{topic=projects/*/topics/*}/subscriptions", + "(google.api.method_signature)": "topic" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{topic=projects/*/topics/*}/subscriptions" + } + }, + { + "(google.api.method_signature)": "topic" + } + ] + }, + "ListTopicSnapshots": { + "requestType": "ListTopicSnapshotsRequest", + "responseType": "ListTopicSnapshotsResponse", + "options": { + "(google.api.http).get": "/v1/{topic=projects/*/topics/*}/snapshots", + "(google.api.method_signature)": "topic" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{topic=projects/*/topics/*}/snapshots" + } + }, + { + "(google.api.method_signature)": "topic" + } + ] + }, + "DeleteTopic": { + "requestType": "DeleteTopicRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).delete": "/v1/{topic=projects/*/topics/*}", + "(google.api.method_signature)": "topic" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "delete": "/v1/{topic=projects/*/topics/*}" + } + }, + { + "(google.api.method_signature)": "topic" + } + ] + }, + "DetachSubscription": { + "requestType": "DetachSubscriptionRequest", + "responseType": "DetachSubscriptionResponse", + "options": { + "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:detach" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{subscription=projects/*/subscriptions/*}:detach" + } + } + ] + } + } + }, + "MessageStoragePolicy": { + "fields": { + "allowedPersistenceRegions": { + "rule": "repeated", + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "enforceInTransit": { + "type": "bool", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "SchemaSettings": { + "fields": { + "schema": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" + } + }, + "encoding": { + "type": "Encoding", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "firstRevisionId": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "lastRevisionId": { + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "IngestionDataSourceSettings": { + "oneofs": { + "source": { + "oneof": [ + "awsKinesis", + "cloudStorage", + "azureEventHubs", + "awsMsk", + "confluentCloud" + ] + } + }, + "fields": { + "awsKinesis": { + "type": "AwsKinesis", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "cloudStorage": { + "type": "CloudStorage", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "azureEventHubs": { + "type": "AzureEventHubs", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "awsMsk": { + "type": "AwsMsk", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "confluentCloud": { + "type": "ConfluentCloud", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "platformLogsSettings": { + "type": "PlatformLogsSettings", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "AwsKinesis": { + "fields": { + "state": { + "type": "State", + "id": 1, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "streamArn": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "consumerArn": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "awsRoleArn": { + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "gcpServiceAccount": { + "type": "string", + "id": 5, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "KINESIS_PERMISSION_DENIED": 2, + "PUBLISH_PERMISSION_DENIED": 3, + "STREAM_NOT_FOUND": 4, + "CONSUMER_NOT_FOUND": 5 + } + } + } + }, + "CloudStorage": { + "oneofs": { + "inputFormat": { + "oneof": [ + "textFormat", + "avroFormat", + "pubsubAvroFormat" + ] + } + }, + "fields": { + "state": { + "type": "State", + "id": 1, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "bucket": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "textFormat": { + "type": "TextFormat", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "avroFormat": { + "type": "AvroFormat", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "pubsubAvroFormat": { + "type": "PubSubAvroFormat", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "minimumObjectCreateTime": { + "type": "google.protobuf.Timestamp", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "matchGlob": { + "type": "string", + "id": 9, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "CLOUD_STORAGE_PERMISSION_DENIED": 2, + "PUBLISH_PERMISSION_DENIED": 3, + "BUCKET_NOT_FOUND": 4, + "TOO_MANY_OBJECTS": 5 + } + }, + "TextFormat": { + "oneofs": { + "_delimiter": { + "oneof": [ + "delimiter" + ] + } + }, + "fields": { + "delimiter": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL", + "proto3_optional": true + } + } + } + }, + "AvroFormat": { + "fields": {} + }, + "PubSubAvroFormat": { + "fields": {} + } + } + }, + "AzureEventHubs": { + "fields": { + "state": { + "type": "State", + "id": 1, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "resourceGroup": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "namespace": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "eventHub": { + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "clientId": { + "type": "string", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "tenantId": { + "type": "string", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "subscriptionId": { + "type": "string", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "gcpServiceAccount": { + "type": "string", + "id": 8, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "EVENT_HUBS_PERMISSION_DENIED": 2, + "PUBLISH_PERMISSION_DENIED": 3, + "NAMESPACE_NOT_FOUND": 4, + "EVENT_HUB_NOT_FOUND": 5, + "SUBSCRIPTION_NOT_FOUND": 6, + "RESOURCE_GROUP_NOT_FOUND": 7 + } + } + } + }, + "AwsMsk": { + "fields": { + "state": { + "type": "State", + "id": 1, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "clusterArn": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "topic": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + }, + "awsRoleArn": { + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "gcpServiceAccount": { + "type": "string", + "id": 5, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "MSK_PERMISSION_DENIED": 2, + "PUBLISH_PERMISSION_DENIED": 3, + "CLUSTER_NOT_FOUND": 4, + "TOPIC_NOT_FOUND": 5 + } + } + } + }, + "ConfluentCloud": { + "fields": { + "state": { + "type": "State", + "id": 1, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "bootstrapServer": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "clusterId": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "topic": { + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "identityPoolId": { + "type": "string", + "id": 5, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "gcpServiceAccount": { + "type": "string", + "id": 6, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "CONFLUENT_CLOUD_PERMISSION_DENIED": 2, + "PUBLISH_PERMISSION_DENIED": 3, + "UNREACHABLE_BOOTSTRAP_SERVER": 4, + "CLUSTER_NOT_FOUND": 5, + "TOPIC_NOT_FOUND": 6 + } + } + } + } + } + }, + "PlatformLogsSettings": { + "fields": { + "severity": { + "type": "Severity", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "Severity": { + "values": { + "SEVERITY_UNSPECIFIED": 0, + "DISABLED": 1, + "DEBUG": 2, + "INFO": 3, + "WARNING": 4, + "ERROR": 5 + } + } + } + }, + "IngestionFailureEvent": { + "oneofs": { + "failure": { + "oneof": [ + "cloudStorageFailure", + "awsMskFailure", + "azureEventHubsFailure", + "confluentCloudFailure", + "awsKinesisFailure" + ] + } + }, + "fields": { + "topic": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + }, + "errorMessage": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "cloudStorageFailure": { + "type": "CloudStorageFailure", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "awsMskFailure": { + "type": "AwsMskFailureReason", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "azureEventHubsFailure": { + "type": "AzureEventHubsFailureReason", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "confluentCloudFailure": { + "type": "ConfluentCloudFailureReason", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "awsKinesisFailure": { + "type": "AwsKinesisFailureReason", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "ApiViolationReason": { + "fields": {} + }, + "AvroFailureReason": { + "fields": {} + }, + "SchemaViolationReason": { + "fields": {} + }, + "MessageTransformationFailureReason": { + "fields": {} + }, + "CloudStorageFailure": { + "oneofs": { + "reason": { + "oneof": [ + "avroFailureReason", + "apiViolationReason", + "schemaViolationReason", + "messageTransformationFailureReason" + ] + } + }, + "fields": { + "bucket": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "objectName": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "objectGeneration": { + "type": "int64", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "avroFailureReason": { + "type": "AvroFailureReason", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "apiViolationReason": { + "type": "ApiViolationReason", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "schemaViolationReason": { + "type": "SchemaViolationReason", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageTransformationFailureReason": { + "type": "MessageTransformationFailureReason", + "id": 8, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "AwsMskFailureReason": { + "oneofs": { + "reason": { + "oneof": [ + "apiViolationReason", + "schemaViolationReason", + "messageTransformationFailureReason" + ] + } + }, + "fields": { + "clusterArn": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "kafkaTopic": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "partitionId": { + "type": "int64", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "offset": { + "type": "int64", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "apiViolationReason": { + "type": "ApiViolationReason", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "schemaViolationReason": { + "type": "SchemaViolationReason", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageTransformationFailureReason": { + "type": "MessageTransformationFailureReason", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "AzureEventHubsFailureReason": { + "oneofs": { + "reason": { + "oneof": [ + "apiViolationReason", + "schemaViolationReason", + "messageTransformationFailureReason" + ] + } + }, + "fields": { + "namespace": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "eventHub": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "partitionId": { + "type": "int64", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "offset": { + "type": "int64", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "apiViolationReason": { + "type": "ApiViolationReason", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "schemaViolationReason": { + "type": "SchemaViolationReason", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageTransformationFailureReason": { + "type": "MessageTransformationFailureReason", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ConfluentCloudFailureReason": { + "oneofs": { + "reason": { + "oneof": [ + "apiViolationReason", + "schemaViolationReason", + "messageTransformationFailureReason" + ] + } + }, + "fields": { + "clusterId": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "kafkaTopic": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "partitionId": { + "type": "int64", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "offset": { + "type": "int64", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "apiViolationReason": { + "type": "ApiViolationReason", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "schemaViolationReason": { + "type": "SchemaViolationReason", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageTransformationFailureReason": { + "type": "MessageTransformationFailureReason", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "AwsKinesisFailureReason": { + "oneofs": { + "reason": { + "oneof": [ + "schemaViolationReason", + "messageTransformationFailureReason", + "apiViolationReason" + ] + } + }, + "fields": { + "streamArn": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "partitionKey": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "sequenceNumber": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "schemaViolationReason": { + "type": "SchemaViolationReason", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageTransformationFailureReason": { + "type": "MessageTransformationFailureReason", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "apiViolationReason": { + "type": "ApiViolationReason", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + } + } + }, + "JavaScriptUDF": { + "fields": { + "functionName": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "code": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "AIInference": { + "oneofs": { + "inferenceMode": { + "oneof": [ + "unstructuredInference" + ] + } + }, + "fields": { + "endpoint": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "unstructuredInference": { + "type": "UnstructuredInference", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "serviceAccountEmail": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "UnstructuredInference": { + "fields": { + "parameters": { + "type": "google.protobuf.Struct", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + } + } + }, + "MessageTransform": { + "oneofs": { + "transform": { + "oneof": [ + "javascriptUdf", + "aiInference" + ] + } + }, + "fields": { + "javascriptUdf": { + "type": "JavaScriptUDF", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "aiInference": { + "type": "AIInference", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "enabled": { + "type": "bool", + "id": 3, + "options": { + "deprecated": true, + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "disabled": { + "type": "bool", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "Topic": { + "options": { + "(google.api.resource).type": "pubsub.googleapis.com/Topic", + "(google.api.resource).pattern": "_deleted-topic_", + "(google.api.resource).plural": "topics", + "(google.api.resource).singular": "topic" + }, + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "IDENTIFIER" + } + }, + "labels": { + "keyType": "string", + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageStoragePolicy": { + "type": "MessageStoragePolicy", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "kmsKeyName": { + "type": "string", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL", + "(google.api.resource_reference).type": "cloudkms.googleapis.com/CryptoKey" + } + }, + "schemaSettings": { + "type": "SchemaSettings", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "satisfiesPzs": { + "type": "bool", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageRetentionDuration": { + "type": "google.protobuf.Duration", + "id": 8, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "state": { + "type": "State", + "id": 9, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "ingestionDataSourceSettings": { + "type": "IngestionDataSourceSettings", + "id": 10, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageTransforms": { + "rule": "repeated", + "type": "MessageTransform", + "id": 13, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "tags": { + "keyType": "string", + "type": "string", + "id": 14, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "INGESTION_RESOURCE_ERROR": 2 + } + } + } + }, + "PubsubMessage": { + "fields": { + "data": { + "type": "bytes", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "attributes": { + "keyType": "string", + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageId": { + "type": "string", + "id": 3 + }, + "publishTime": { + "type": "google.protobuf.Timestamp", + "id": 4 + }, + "orderingKey": { + "type": "string", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "GetTopicRequest": { + "fields": { + "topic": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + } + } + }, + "UpdateTopicRequest": { + "fields": { + "topic": { + "type": "Topic", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "updateMask": { + "type": "google.protobuf.FieldMask", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "PublishRequest": { + "fields": { + "topic": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + }, + "messages": { + "rule": "repeated", + "type": "PubsubMessage", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "PublishResponse": { + "fields": { + "messageIds": { + "rule": "repeated", + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ListTopicsRequest": { + "fields": { + "project": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" + } + }, + "pageSize": { + "type": "int32", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "pageToken": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ListTopicsResponse": { + "fields": { + "topics": { + "rule": "repeated", + "type": "Topic", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "nextPageToken": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ListTopicSubscriptionsRequest": { + "fields": { + "topic": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + }, + "pageSize": { + "type": "int32", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "pageToken": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ListTopicSubscriptionsResponse": { + "fields": { + "subscriptions": { + "rule": "repeated", + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + }, + "nextPageToken": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ListTopicSnapshotsRequest": { + "fields": { + "topic": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + }, + "pageSize": { + "type": "int32", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "pageToken": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ListTopicSnapshotsResponse": { + "fields": { + "snapshots": { + "rule": "repeated", + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" + } + }, + "nextPageToken": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "DeleteTopicRequest": { + "fields": { + "topic": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + } + } + }, + "DetachSubscriptionRequest": { + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + } + } + }, + "DetachSubscriptionResponse": { + "fields": {} + }, + "Subscriber": { + "options": { + "(google.api.default_host)": "pubsub.googleapis.com", + "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsub" + }, + "methods": { + "CreateSubscription": { + "requestType": "Subscription", + "responseType": "Subscription", + "options": { + "(google.api.http).put": "/v1/{name=projects/*/subscriptions/*}", + "(google.api.http).body": "*", + "(google.api.method_signature)": "name,topic,push_config,ack_deadline_seconds" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "put": "/v1/{name=projects/*/subscriptions/*}", + "body": "*" + } + }, + { + "(google.api.method_signature)": "name,topic,push_config,ack_deadline_seconds" + } + ] + }, + "GetSubscription": { + "requestType": "GetSubscriptionRequest", + "responseType": "Subscription", + "options": { + "(google.api.http).get": "/v1/{subscription=projects/*/subscriptions/*}", + "(google.api.method_signature)": "subscription" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{subscription=projects/*/subscriptions/*}" + } + }, + { + "(google.api.method_signature)": "subscription" + } + ] + }, + "UpdateSubscription": { + "requestType": "UpdateSubscriptionRequest", + "responseType": "Subscription", + "options": { + "(google.api.http).patch": "/v1/{subscription.name=projects/*/subscriptions/*}", + "(google.api.http).body": "*", + "(google.api.method_signature)": "subscription,update_mask" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "patch": "/v1/{subscription.name=projects/*/subscriptions/*}", + "body": "*" + } + }, + { + "(google.api.method_signature)": "subscription,update_mask" + } + ] + }, + "ListSubscriptions": { + "requestType": "ListSubscriptionsRequest", + "responseType": "ListSubscriptionsResponse", + "options": { + "(google.api.http).get": "/v1/{project=projects/*}/subscriptions", + "(google.api.method_signature)": "project" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{project=projects/*}/subscriptions" + } + }, + { + "(google.api.method_signature)": "project" + } + ] + }, + "DeleteSubscription": { + "requestType": "DeleteSubscriptionRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).delete": "/v1/{subscription=projects/*/subscriptions/*}", + "(google.api.method_signature)": "subscription" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "delete": "/v1/{subscription=projects/*/subscriptions/*}" + } + }, + { + "(google.api.method_signature)": "subscription" + } + ] + }, + "ModifyAckDeadline": { + "requestType": "ModifyAckDeadlineRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:modifyAckDeadline", + "(google.api.http).body": "*", + "(google.api.method_signature)": "subscription,ack_ids,ack_deadline_seconds" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{subscription=projects/*/subscriptions/*}:modifyAckDeadline", + "body": "*" + } + }, + { + "(google.api.method_signature)": "subscription,ack_ids,ack_deadline_seconds" + } + ] + }, + "Acknowledge": { + "requestType": "AcknowledgeRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:acknowledge", + "(google.api.http).body": "*", + "(google.api.method_signature)": "subscription,ack_ids" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{subscription=projects/*/subscriptions/*}:acknowledge", + "body": "*" + } + }, + { + "(google.api.method_signature)": "subscription,ack_ids" + } + ] + }, + "Pull": { + "requestType": "PullRequest", + "responseType": "PullResponse", + "options": { + "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:pull", + "(google.api.http).body": "*", + "(google.api.method_signature)": "subscription,max_messages" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{subscription=projects/*/subscriptions/*}:pull", + "body": "*" + } + }, + { + "(google.api.method_signature)": "subscription,return_immediately,max_messages" + }, + { + "(google.api.method_signature)": "subscription,max_messages" + } + ] + }, + "StreamingPull": { + "requestType": "StreamingPullRequest", + "requestStream": true, + "responseType": "StreamingPullResponse", + "responseStream": true + }, + "ModifyPushConfig": { + "requestType": "ModifyPushConfigRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:modifyPushConfig", + "(google.api.http).body": "*", + "(google.api.method_signature)": "subscription,push_config" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{subscription=projects/*/subscriptions/*}:modifyPushConfig", + "body": "*" + } + }, + { + "(google.api.method_signature)": "subscription,push_config" + } + ] + }, + "GetSnapshot": { + "requestType": "GetSnapshotRequest", + "responseType": "Snapshot", + "options": { + "(google.api.http).get": "/v1/{snapshot=projects/*/snapshots/*}", + "(google.api.method_signature)": "snapshot" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{snapshot=projects/*/snapshots/*}" + } + }, + { + "(google.api.method_signature)": "snapshot" + } + ] + }, + "ListSnapshots": { + "requestType": "ListSnapshotsRequest", + "responseType": "ListSnapshotsResponse", + "options": { + "(google.api.http).get": "/v1/{project=projects/*}/snapshots", + "(google.api.method_signature)": "project" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{project=projects/*}/snapshots" + } + }, + { + "(google.api.method_signature)": "project" + } + ] + }, + "CreateSnapshot": { + "requestType": "CreateSnapshotRequest", + "responseType": "Snapshot", + "options": { + "(google.api.http).put": "/v1/{name=projects/*/snapshots/*}", + "(google.api.http).body": "*", + "(google.api.method_signature)": "name,subscription" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "put": "/v1/{name=projects/*/snapshots/*}", + "body": "*" + } + }, + { + "(google.api.method_signature)": "name,subscription" + } + ] + }, + "UpdateSnapshot": { + "requestType": "UpdateSnapshotRequest", + "responseType": "Snapshot", + "options": { + "(google.api.http).patch": "/v1/{snapshot.name=projects/*/snapshots/*}", + "(google.api.http).body": "*", + "(google.api.method_signature)": "snapshot,update_mask" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "patch": "/v1/{snapshot.name=projects/*/snapshots/*}", + "body": "*" + } + }, + { + "(google.api.method_signature)": "snapshot,update_mask" + } + ] + }, + "DeleteSnapshot": { + "requestType": "DeleteSnapshotRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).delete": "/v1/{snapshot=projects/*/snapshots/*}", + "(google.api.method_signature)": "snapshot" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "delete": "/v1/{snapshot=projects/*/snapshots/*}" + } + }, + { + "(google.api.method_signature)": "snapshot" + } + ] + }, + "Seek": { + "requestType": "SeekRequest", + "responseType": "SeekResponse", + "options": { + "(google.api.http).post": "/v1/{subscription=projects/*/subscriptions/*}:seek", + "(google.api.http).body": "*" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{subscription=projects/*/subscriptions/*}:seek", + "body": "*" + } + } + ] + } + } + }, + "Subscription": { + "options": { + "(google.api.resource).type": "pubsub.googleapis.com/Subscription", + "(google.api.resource).pattern": "projects/{project}/subscriptions/{subscription}", + "(google.api.resource).plural": "subscriptions", + "(google.api.resource).singular": "subscription" + }, + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "IDENTIFIER" + } + }, + "topic": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + }, + "pushConfig": { + "type": "PushConfig", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "bigqueryConfig": { + "type": "BigQueryConfig", + "id": 18, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "cloudStorageConfig": { + "type": "CloudStorageConfig", + "id": 22, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "bigtableConfig": { + "type": "BigtableConfig", + "id": 27, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "ackDeadlineSeconds": { + "type": "int32", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "retainAckedMessages": { + "type": "bool", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageRetentionDuration": { + "type": "google.protobuf.Duration", + "id": 8, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "labels": { + "keyType": "string", + "type": "string", + "id": 9, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "enableMessageOrdering": { + "type": "bool", + "id": 10, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "expirationPolicy": { + "type": "ExpirationPolicy", + "id": 11, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "filter": { + "type": "string", + "id": 12, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "deadLetterPolicy": { + "type": "DeadLetterPolicy", + "id": 13, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "retryPolicy": { + "type": "RetryPolicy", + "id": 14, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "detached": { + "type": "bool", + "id": 15, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "enableExactlyOnceDelivery": { + "type": "bool", + "id": 16, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "topicMessageRetentionDuration": { + "type": "google.protobuf.Duration", + "id": 17, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "state": { + "type": "State", + "id": 19, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "analyticsHubSubscriptionInfo": { + "type": "AnalyticsHubSubscriptionInfo", + "id": 23, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "messageTransforms": { + "rule": "repeated", + "type": "MessageTransform", + "id": 25, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "tags": { + "keyType": "string", + "type": "string", + "id": 26, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "RESOURCE_ERROR": 2 + } + }, + "AnalyticsHubSubscriptionInfo": { + "fields": { + "listing": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL", + "(google.api.resource_reference).type": "analyticshub.googleapis.com/Listing" + } + }, + "subscription": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + } + } + }, + "RetryPolicy": { + "fields": { + "minimumBackoff": { + "type": "google.protobuf.Duration", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "maximumBackoff": { + "type": "google.protobuf.Duration", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "DeadLetterPolicy": { + "fields": { + "deadLetterTopic": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + }, + "maxDeliveryAttempts": { + "type": "int32", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ExpirationPolicy": { + "fields": { + "ttl": { + "type": "google.protobuf.Duration", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "PushConfig": { + "oneofs": { + "authenticationMethod": { + "oneof": [ + "oidcToken" + ] + }, + "wrapper": { + "oneof": [ + "pubsubWrapper", + "noWrapper" + ] + } + }, + "fields": { + "pushEndpoint": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "attributes": { + "keyType": "string", + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "oidcToken": { + "type": "OidcToken", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "pubsubWrapper": { + "type": "PubsubWrapper", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "noWrapper": { + "type": "NoWrapper", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "OidcToken": { + "fields": { + "serviceAccountEmail": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "audience": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "PubsubWrapper": { + "fields": {} + }, + "NoWrapper": { + "fields": { + "writeMetadata": { + "type": "bool", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + } + } + }, + "BigQueryConfig": { + "fields": { + "table": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "useTopicSchema": { + "type": "bool", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "writeMetadata": { + "type": "bool", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "dropUnknownFields": { + "type": "bool", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "state": { + "type": "State", + "id": 5, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "useTableSchema": { + "type": "bool", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "serviceAccountEmail": { + "type": "string", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "PERMISSION_DENIED": 2, + "NOT_FOUND": 3, + "SCHEMA_MISMATCH": 4, + "IN_TRANSIT_LOCATION_RESTRICTION": 5, + "VERTEX_AI_LOCATION_RESTRICTION": 6 + } + } + } + }, + "BigtableConfig": { + "fields": { + "table": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "appProfileId": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "serviceAccountEmail": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "writeMetadata": { + "type": "bool", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "state": { + "type": "State", + "id": 4, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + } + }, + "nested": { + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "NOT_FOUND": 2, + "APP_PROFILE_MISCONFIGURED": 3, + "PERMISSION_DENIED": 4, + "SCHEMA_MISMATCH": 5, + "IN_TRANSIT_LOCATION_RESTRICTION": 6, + "VERTEX_AI_LOCATION_RESTRICTION": 7 + } + } + } + }, + "CloudStorageConfig": { + "oneofs": { + "outputFormat": { + "oneof": [ + "textConfig", + "avroConfig" + ] + } + }, + "fields": { + "bucket": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "filenamePrefix": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "filenameSuffix": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "filenameDatetimeFormat": { + "type": "string", + "id": 10, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "textConfig": { + "type": "TextConfig", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "avroConfig": { + "type": "AvroConfig", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "maxDuration": { + "type": "google.protobuf.Duration", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "maxBytes": { + "type": "int64", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "maxMessages": { + "type": "int64", + "id": 8, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "state": { + "type": "State", + "id": 9, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "serviceAccountEmail": { + "type": "string", + "id": 11, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "TextConfig": { + "fields": {} + }, + "AvroConfig": { + "fields": { + "writeMetadata": { + "type": "bool", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "useTopicSchema": { + "type": "bool", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "State": { + "values": { + "STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "PERMISSION_DENIED": 2, + "NOT_FOUND": 3, + "IN_TRANSIT_LOCATION_RESTRICTION": 4, + "SCHEMA_MISMATCH": 5, + "VERTEX_AI_LOCATION_RESTRICTION": 6 + } + } + } + }, + "ReceivedMessage": { + "fields": { + "ackId": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "message": { + "type": "PubsubMessage", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "deliveryAttempt": { + "type": "int32", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "GetSubscriptionRequest": { + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + } + } + }, + "UpdateSubscriptionRequest": { + "fields": { + "subscription": { + "type": "Subscription", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "updateMask": { + "type": "google.protobuf.FieldMask", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "ListSubscriptionsRequest": { + "fields": { + "project": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" + } + }, + "pageSize": { + "type": "int32", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "pageToken": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ListSubscriptionsResponse": { + "fields": { + "subscriptions": { + "rule": "repeated", + "type": "Subscription", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "nextPageToken": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "DeleteSubscriptionRequest": { + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + } + } + }, + "ModifyPushConfigRequest": { + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + }, + "pushConfig": { + "type": "PushConfig", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "PullRequest": { + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + }, + "returnImmediately": { + "type": "bool", + "id": 2, + "options": { + "deprecated": true, + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "maxMessages": { + "type": "int32", + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "PullResponse": { + "fields": { + "receivedMessages": { + "rule": "repeated", + "type": "ReceivedMessage", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ModifyAckDeadlineRequest": { + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + }, + "ackIds": { + "rule": "repeated", + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "ackDeadlineSeconds": { + "type": "int32", + "id": 3, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "AcknowledgeRequest": { + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + }, + "ackIds": { + "rule": "repeated", + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "StreamingPullRequest": { + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + }, + "ackIds": { + "rule": "repeated", + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "modifyDeadlineSeconds": { + "rule": "repeated", + "type": "int32", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "modifyDeadlineAckIds": { + "rule": "repeated", + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "streamAckDeadlineSeconds": { + "type": "int32", + "id": 5, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "clientId": { + "type": "string", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "maxOutstandingMessages": { + "type": "int64", + "id": 7, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "maxOutstandingBytes": { + "type": "int64", + "id": 8, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "protocolVersion": { + "type": "int64", + "id": 10, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "StreamingPullResponse": { + "fields": { + "receivedMessages": { + "rule": "repeated", + "type": "ReceivedMessage", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "acknowledgeConfirmation": { + "type": "AcknowledgeConfirmation", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "modifyAckDeadlineConfirmation": { + "type": "ModifyAckDeadlineConfirmation", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "subscriptionProperties": { + "type": "SubscriptionProperties", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "AcknowledgeConfirmation": { + "fields": { + "ackIds": { + "rule": "repeated", + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "invalidAckIds": { + "rule": "repeated", + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "unorderedAckIds": { + "rule": "repeated", + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "temporaryFailedAckIds": { + "rule": "repeated", + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ModifyAckDeadlineConfirmation": { + "fields": { + "ackIds": { + "rule": "repeated", + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "invalidAckIds": { + "rule": "repeated", + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "temporaryFailedAckIds": { + "rule": "repeated", + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "SubscriptionProperties": { + "fields": { + "exactlyOnceDeliveryEnabled": { + "type": "bool", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "messageOrderingEnabled": { + "type": "bool", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + } + } + }, + "CreateSnapshotRequest": { + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" + } + }, + "subscription": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + }, + "labels": { + "keyType": "string", + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "tags": { + "keyType": "string", + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "UpdateSnapshotRequest": { + "fields": { + "snapshot": { + "type": "Snapshot", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "updateMask": { + "type": "google.protobuf.FieldMask", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "Snapshot": { + "options": { + "(google.api.resource).type": "pubsub.googleapis.com/Snapshot", + "(google.api.resource).pattern": "projects/{project}/snapshots/{snapshot}", + "(google.api.resource).plural": "snapshots", + "(google.api.resource).singular": "snapshot" + }, + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "topic": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Topic" + } + }, + "expireTime": { + "type": "google.protobuf.Timestamp", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "labels": { + "keyType": "string", + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "GetSnapshotRequest": { + "fields": { + "snapshot": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" + } + } + } + }, + "ListSnapshotsRequest": { + "fields": { + "project": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" + } + }, + "pageSize": { + "type": "int32", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "pageToken": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "ListSnapshotsResponse": { + "fields": { + "snapshots": { + "rule": "repeated", + "type": "Snapshot", + "id": 1, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "nextPageToken": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "DeleteSnapshotRequest": { + "fields": { + "snapshot": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" + } + } + } + }, + "SeekRequest": { + "oneofs": { + "target": { + "oneof": [ + "time", + "snapshot" + ] + } + }, + "fields": { + "subscription": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Subscription" + } + }, + "time": { + "type": "google.protobuf.Timestamp", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + }, + "snapshot": { + "type": "string", + "id": 3, + "options": { + "(google.api.field_behavior)": "OPTIONAL", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Snapshot" + } + } + } + }, + "SeekResponse": { + "fields": {} + }, + "SchemaService": { + "options": { + "(google.api.default_host)": "pubsub.googleapis.com", + "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/pubsub" + }, + "methods": { + "CreateSchema": { + "requestType": "CreateSchemaRequest", + "responseType": "Schema", + "options": { + "(google.api.http).post": "/v1/{parent=projects/*}/schemas", + "(google.api.http).body": "schema", + "(google.api.method_signature)": "parent,schema,schema_id" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{parent=projects/*}/schemas", + "body": "schema" + } + }, + { + "(google.api.method_signature)": "parent,schema,schema_id" + } + ] + }, + "GetSchema": { + "requestType": "GetSchemaRequest", + "responseType": "Schema", + "options": { + "(google.api.http).get": "/v1/{name=projects/*/schemas/*}", + "(google.api.method_signature)": "name" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{name=projects/*/schemas/*}" + } + }, + { + "(google.api.method_signature)": "name" + } + ] + }, + "ListSchemas": { + "requestType": "ListSchemasRequest", + "responseType": "ListSchemasResponse", + "options": { + "(google.api.http).get": "/v1/{parent=projects/*}/schemas", + "(google.api.method_signature)": "parent" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{parent=projects/*}/schemas" + } + }, + { + "(google.api.method_signature)": "parent" + } + ] + }, + "ListSchemaRevisions": { + "requestType": "ListSchemaRevisionsRequest", + "responseType": "ListSchemaRevisionsResponse", + "options": { + "(google.api.http).get": "/v1/{name=projects/*/schemas/*}:listRevisions", + "(google.api.method_signature)": "name" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "get": "/v1/{name=projects/*/schemas/*}:listRevisions" + } + }, + { + "(google.api.method_signature)": "name" + } + ] + }, + "CommitSchema": { + "requestType": "CommitSchemaRequest", + "responseType": "Schema", + "options": { + "(google.api.http).post": "/v1/{name=projects/*/schemas/*}:commit", + "(google.api.http).body": "*", + "(google.api.method_signature)": "name,schema" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{name=projects/*/schemas/*}:commit", + "body": "*" + } + }, + { + "(google.api.method_signature)": "name,schema" + } + ] + }, + "RollbackSchema": { + "requestType": "RollbackSchemaRequest", + "responseType": "Schema", + "options": { + "(google.api.http).post": "/v1/{name=projects/*/schemas/*}:rollback", + "(google.api.http).body": "*", + "(google.api.method_signature)": "name,revision_id" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{name=projects/*/schemas/*}:rollback", + "body": "*" + } + }, + { + "(google.api.method_signature)": "name,revision_id" + } + ] + }, + "DeleteSchemaRevision": { + "requestType": "DeleteSchemaRevisionRequest", + "responseType": "Schema", + "options": { + "(google.api.http).delete": "/v1/{name=projects/*/schemas/*}:deleteRevision", + "(google.api.method_signature)": "name,revision_id" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "delete": "/v1/{name=projects/*/schemas/*}:deleteRevision" + } + }, + { + "(google.api.method_signature)": "name,revision_id" + } + ] + }, + "DeleteSchema": { + "requestType": "DeleteSchemaRequest", + "responseType": "google.protobuf.Empty", + "options": { + "(google.api.http).delete": "/v1/{name=projects/*/schemas/*}", + "(google.api.method_signature)": "name" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "delete": "/v1/{name=projects/*/schemas/*}" + } + }, + { + "(google.api.method_signature)": "name" + } + ] + }, + "ValidateSchema": { + "requestType": "ValidateSchemaRequest", + "responseType": "ValidateSchemaResponse", + "options": { + "(google.api.http).post": "/v1/{parent=projects/*}/schemas:validate", + "(google.api.http).body": "*", + "(google.api.method_signature)": "parent,schema" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{parent=projects/*}/schemas:validate", + "body": "*" + } + }, + { + "(google.api.method_signature)": "parent,schema" + } + ] + }, + "ValidateMessage": { + "requestType": "ValidateMessageRequest", + "responseType": "ValidateMessageResponse", + "options": { + "(google.api.http).post": "/v1/{parent=projects/*}/schemas:validateMessage", + "(google.api.http).body": "*" + }, + "parsedOptions": [ + { + "(google.api.http)": { + "post": "/v1/{parent=projects/*}/schemas:validateMessage", + "body": "*" + } + } + ] + } + } + }, + "Schema": { + "options": { + "(google.api.resource).type": "pubsub.googleapis.com/Schema", + "(google.api.resource).pattern": "projects/{project}/schemas/{schema}" + }, + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "type": { + "type": "Type", + "id": 2 + }, + "definition": { + "type": "string", + "id": 3 + }, + "revisionId": { + "type": "string", + "id": 4, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + }, + "revisionCreateTime": { + "type": "google.protobuf.Timestamp", + "id": 6, + "options": { + "(google.api.field_behavior)": "OUTPUT_ONLY" + } + } + }, + "nested": { + "Type": { + "values": { + "TYPE_UNSPECIFIED": 0, + "PROTOCOL_BUFFER": 1, + "AVRO": 2 + } + } + } + }, + "SchemaView": { + "values": { + "SCHEMA_VIEW_UNSPECIFIED": 0, + "BASIC": 1, + "FULL": 2 + } + }, + "CreateSchemaRequest": { + "fields": { + "parent": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).child_type": "pubsub.googleapis.com/Schema" + } + }, + "schema": { + "type": "Schema", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + }, + "schemaId": { + "type": "string", + "id": 3 + } + } + }, + "GetSchemaRequest": { + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" + } + }, + "view": { + "type": "SchemaView", + "id": 2 + } + } + }, + "ListSchemasRequest": { + "fields": { + "parent": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" + } + }, + "view": { + "type": "SchemaView", + "id": 2 + }, + "pageSize": { + "type": "int32", + "id": 3 + }, + "pageToken": { + "type": "string", + "id": 4 + } + } + }, + "ListSchemasResponse": { + "fields": { + "schemas": { + "rule": "repeated", + "type": "Schema", + "id": 1 + }, + "nextPageToken": { + "type": "string", + "id": 2 + } + } + }, + "ListSchemaRevisionsRequest": { + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" + } + }, + "view": { + "type": "SchemaView", + "id": 2 + }, + "pageSize": { + "type": "int32", + "id": 3 + }, + "pageToken": { + "type": "string", + "id": 4 + } + } + }, + "ListSchemaRevisionsResponse": { + "fields": { + "schemas": { + "rule": "repeated", + "type": "Schema", + "id": 1 + }, + "nextPageToken": { + "type": "string", + "id": 2 + } + } + }, + "CommitSchemaRequest": { + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" + } + }, + "schema": { + "type": "Schema", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "RollbackSchemaRequest": { + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" + } + }, + "revisionId": { + "type": "string", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "DeleteSchemaRevisionRequest": { + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" + } + }, + "revisionId": { + "type": "string", + "id": 2, + "options": { + "deprecated": true, + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "DeleteSchemaRequest": { + "fields": { + "name": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" + } + } + } + }, + "ValidateSchemaRequest": { + "fields": { + "parent": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" + } + }, + "schema": { + "type": "Schema", + "id": 2, + "options": { + "(google.api.field_behavior)": "REQUIRED" + } + } + } + }, + "ValidateSchemaResponse": { + "fields": {} + }, + "ValidateMessageRequest": { + "oneofs": { + "schemaSpec": { + "oneof": [ + "name", + "schema" + ] + } + }, + "fields": { + "parent": { + "type": "string", + "id": 1, + "options": { + "(google.api.field_behavior)": "REQUIRED", + "(google.api.resource_reference).type": "cloudresourcemanager.googleapis.com/Project" + } + }, + "name": { + "type": "string", + "id": 2, + "options": { + "(google.api.resource_reference).type": "pubsub.googleapis.com/Schema" + } + }, + "schema": { + "type": "Schema", + "id": 3 + }, + "message": { + "type": "bytes", + "id": 4 + }, + "encoding": { + "type": "Encoding", + "id": 5 + } + } + }, + "ValidateMessageResponse": { + "fields": {} + }, + "Encoding": { + "values": { + "ENCODING_UNSPECIFIED": 0, + "JSON": 1, + "BINARY": 2 + } + } + } + } + } + }, + "api": { + "options": { + "go_package": "google.golang.org/genproto/googleapis/api/annotations;annotations", + "java_multiple_files": true, + "java_outer_classname": "ResourceProto", + "java_package": "com.google.api", + "objc_class_prefix": "GAPI" + }, + "nested": { + "http": { + "type": "HttpRule", + "id": 72295728, + "extend": "google.protobuf.MethodOptions" + }, + "Http": { + "fields": { + "rules": { + "rule": "repeated", + "type": "HttpRule", + "id": 1 + }, + "fullyDecodeReservedExpansion": { + "type": "bool", + "id": 2 + } + } + }, + "HttpRule": { + "oneofs": { + "pattern": { + "oneof": [ + "get", + "put", + "post", + "delete", + "patch", + "custom" + ] + } + }, + "fields": { + "selector": { + "type": "string", + "id": 1 + }, + "get": { + "type": "string", + "id": 2 + }, + "put": { + "type": "string", + "id": 3 + }, + "post": { + "type": "string", + "id": 4 + }, + "delete": { + "type": "string", + "id": 5 + }, + "patch": { + "type": "string", + "id": 6 + }, + "custom": { + "type": "CustomHttpPattern", + "id": 8 + }, + "body": { + "type": "string", + "id": 7 + }, + "responseBody": { + "type": "string", + "id": 12 + }, + "additionalBindings": { + "rule": "repeated", + "type": "HttpRule", + "id": 11 + } + } + }, + "CustomHttpPattern": { + "fields": { + "kind": { + "type": "string", + "id": 1 + }, + "path": { + "type": "string", + "id": 2 + } + } + }, + "methodSignature": { + "rule": "repeated", + "type": "string", + "id": 1051, + "extend": "google.protobuf.MethodOptions" + }, + "defaultHost": { + "type": "string", + "id": 1049, + "extend": "google.protobuf.ServiceOptions" + }, + "oauthScopes": { + "type": "string", + "id": 1050, + "extend": "google.protobuf.ServiceOptions" + }, + "apiVersion": { + "type": "string", + "id": 525000001, + "extend": "google.protobuf.ServiceOptions" + }, + "CommonLanguageSettings": { + "fields": { + "referenceDocsUri": { + "type": "string", + "id": 1, + "options": { + "deprecated": true + } + }, + "destinations": { + "rule": "repeated", + "type": "ClientLibraryDestination", + "id": 2 + }, + "selectiveGapicGeneration": { + "type": "SelectiveGapicGeneration", + "id": 3 + } + } + }, + "ClientLibrarySettings": { + "fields": { + "version": { + "type": "string", + "id": 1 + }, + "launchStage": { + "type": "LaunchStage", + "id": 2 + }, + "restNumericEnums": { + "type": "bool", + "id": 3 + }, + "javaSettings": { + "type": "JavaSettings", + "id": 21 + }, + "cppSettings": { + "type": "CppSettings", + "id": 22 + }, + "phpSettings": { + "type": "PhpSettings", + "id": 23 + }, + "pythonSettings": { + "type": "PythonSettings", + "id": 24 + }, + "nodeSettings": { + "type": "NodeSettings", + "id": 25 + }, + "dotnetSettings": { + "type": "DotnetSettings", + "id": 26 + }, + "rubySettings": { + "type": "RubySettings", + "id": 27 + }, + "goSettings": { + "type": "GoSettings", + "id": 28 + } + } + }, + "Publishing": { + "fields": { + "methodSettings": { + "rule": "repeated", + "type": "MethodSettings", + "id": 2 + }, + "newIssueUri": { + "type": "string", + "id": 101 + }, + "documentationUri": { + "type": "string", + "id": 102 + }, + "apiShortName": { + "type": "string", + "id": 103 + }, + "githubLabel": { + "type": "string", + "id": 104 + }, + "codeownerGithubTeams": { + "rule": "repeated", + "type": "string", + "id": 105 + }, + "docTagPrefix": { + "type": "string", + "id": 106 + }, + "organization": { + "type": "ClientLibraryOrganization", + "id": 107 + }, + "librarySettings": { + "rule": "repeated", + "type": "ClientLibrarySettings", + "id": 109 + }, + "protoReferenceDocumentationUri": { + "type": "string", + "id": 110 + }, + "restReferenceDocumentationUri": { + "type": "string", + "id": 111 + } + } + }, + "JavaSettings": { + "fields": { + "libraryPackage": { + "type": "string", + "id": 1 + }, + "serviceClassNames": { + "keyType": "string", + "type": "string", + "id": 2 + }, + "common": { + "type": "CommonLanguageSettings", + "id": 3 + } + } + }, + "CppSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "PhpSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "PythonSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + }, + "experimentalFeatures": { + "type": "ExperimentalFeatures", + "id": 2 + } + }, + "nested": { + "ExperimentalFeatures": { + "fields": { + "restAsyncIoEnabled": { + "type": "bool", + "id": 1 + }, + "protobufPythonicTypesEnabled": { + "type": "bool", + "id": 2 + }, + "unversionedPackageDisabled": { + "type": "bool", + "id": 3 + } + } + } + } + }, + "NodeSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "DotnetSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + }, + "renamedServices": { + "keyType": "string", + "type": "string", + "id": 2 + }, + "renamedResources": { + "keyType": "string", + "type": "string", + "id": 3 + }, + "ignoredResources": { + "rule": "repeated", + "type": "string", + "id": 4 + }, + "forcedNamespaceAliases": { + "rule": "repeated", + "type": "string", + "id": 5 + }, + "handwrittenSignatures": { + "rule": "repeated", + "type": "string", + "id": 6 + } + } + }, + "RubySettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + } + } + }, + "GoSettings": { + "fields": { + "common": { + "type": "CommonLanguageSettings", + "id": 1 + }, + "renamedServices": { + "keyType": "string", + "type": "string", + "id": 2 + } + } + }, + "MethodSettings": { + "fields": { + "selector": { + "type": "string", + "id": 1 + }, + "longRunning": { + "type": "LongRunning", + "id": 2 + }, + "autoPopulatedFields": { + "rule": "repeated", + "type": "string", + "id": 3 + } + }, + "nested": { + "LongRunning": { + "fields": { + "initialPollDelay": { + "type": "google.protobuf.Duration", + "id": 1 + }, + "pollDelayMultiplier": { + "type": "float", + "id": 2 + }, + "maxPollDelay": { + "type": "google.protobuf.Duration", + "id": 3 + }, + "totalPollTimeout": { + "type": "google.protobuf.Duration", + "id": 4 + } + } + } + } + }, + "ClientLibraryOrganization": { + "values": { + "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED": 0, + "CLOUD": 1, + "ADS": 2, + "PHOTOS": 3, + "STREET_VIEW": 4, + "SHOPPING": 5, + "GEO": 6, + "GENERATIVE_AI": 7 + } + }, + "ClientLibraryDestination": { + "values": { + "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED": 0, + "GITHUB": 10, + "PACKAGE_MANAGER": 20 + } + }, + "SelectiveGapicGeneration": { + "fields": { + "methods": { + "rule": "repeated", + "type": "string", + "id": 1 + }, + "generateOmittedAsInternal": { + "type": "bool", + "id": 2 + } + } + }, + "LaunchStage": { + "values": { + "LAUNCH_STAGE_UNSPECIFIED": 0, + "UNIMPLEMENTED": 6, + "PRELAUNCH": 7, + "EARLY_ACCESS": 1, + "ALPHA": 2, + "BETA": 3, + "GA": 4, + "DEPRECATED": 5 + } + }, + "fieldBehavior": { + "rule": "repeated", + "type": "google.api.FieldBehavior", + "id": 1052, + "extend": "google.protobuf.FieldOptions", + "options": { + "packed": false + } + }, + "FieldBehavior": { + "values": { + "FIELD_BEHAVIOR_UNSPECIFIED": 0, + "OPTIONAL": 1, + "REQUIRED": 2, + "OUTPUT_ONLY": 3, + "INPUT_ONLY": 4, + "IMMUTABLE": 5, + "UNORDERED_LIST": 6, + "NON_EMPTY_DEFAULT": 7, + "IDENTIFIER": 8 + } + }, + "resourceReference": { + "type": "google.api.ResourceReference", + "id": 1055, + "extend": "google.protobuf.FieldOptions" + }, + "resourceDefinition": { + "rule": "repeated", + "type": "google.api.ResourceDescriptor", + "id": 1053, + "extend": "google.protobuf.FileOptions" + }, + "resource": { + "type": "google.api.ResourceDescriptor", + "id": 1053, + "extend": "google.protobuf.MessageOptions" + }, + "ResourceDescriptor": { + "fields": { + "type": { + "type": "string", + "id": 1 + }, + "pattern": { + "rule": "repeated", + "type": "string", + "id": 2 + }, + "nameField": { + "type": "string", + "id": 3 + }, + "history": { + "type": "History", + "id": 4 + }, + "plural": { + "type": "string", + "id": 5 + }, + "singular": { + "type": "string", + "id": 6 + }, + "style": { + "rule": "repeated", + "type": "Style", + "id": 10 + } + }, + "nested": { + "History": { + "values": { + "HISTORY_UNSPECIFIED": 0, + "ORIGINALLY_SINGLE_PATTERN": 1, + "FUTURE_MULTI_PATTERN": 2 + } + }, + "Style": { + "values": { + "STYLE_UNSPECIFIED": 0, + "DECLARATIVE_FRIENDLY": 1 + } + } + } + }, + "ResourceReference": { + "fields": { + "type": { + "type": "string", + "id": 1 + }, + "childType": { + "type": "string", + "id": 2 + } + } + } + } + }, + "protobuf": { + "options": { + "go_package": "google.golang.org/protobuf/types/descriptorpb", + "java_package": "com.google.protobuf", + "java_outer_classname": "DescriptorProtos", + "csharp_namespace": "Google.Protobuf.Reflection", + "objc_class_prefix": "GPB", + "cc_enable_arenas": true, + "optimize_for": "SPEED" + }, + "nested": { + "FileDescriptorSet": { + "edition": "proto2", + "fields": { + "file": { + "rule": "repeated", + "type": "FileDescriptorProto", + "id": 1 + } + }, + "extensions": [ + [ + 536000000, + 536000000 + ] + ] + }, + "Edition": { + "edition": "proto2", + "values": { + "EDITION_UNKNOWN": 0, + "EDITION_LEGACY": 900, + "EDITION_PROTO2": 998, + "EDITION_PROTO3": 999, + "EDITION_2023": 1000, + "EDITION_2024": 1001, + "EDITION_1_TEST_ONLY": 1, + "EDITION_2_TEST_ONLY": 2, + "EDITION_99997_TEST_ONLY": 99997, + "EDITION_99998_TEST_ONLY": 99998, + "EDITION_99999_TEST_ONLY": 99999, + "EDITION_MAX": 2147483647 + } + }, + "FileDescriptorProto": { + "edition": "proto2", + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "package": { + "type": "string", + "id": 2 + }, + "dependency": { + "rule": "repeated", + "type": "string", + "id": 3 + }, + "publicDependency": { + "rule": "repeated", + "type": "int32", + "id": 10 + }, + "weakDependency": { + "rule": "repeated", + "type": "int32", + "id": 11 + }, + "optionDependency": { + "rule": "repeated", + "type": "string", + "id": 15 + }, + "messageType": { + "rule": "repeated", + "type": "DescriptorProto", + "id": 4 + }, + "enumType": { + "rule": "repeated", + "type": "EnumDescriptorProto", + "id": 5 + }, + "service": { + "rule": "repeated", + "type": "ServiceDescriptorProto", + "id": 6 + }, + "extension": { + "rule": "repeated", + "type": "FieldDescriptorProto", + "id": 7 + }, + "options": { + "type": "FileOptions", + "id": 8 + }, + "sourceCodeInfo": { + "type": "SourceCodeInfo", + "id": 9 + }, + "syntax": { + "type": "string", + "id": 12 + }, + "edition": { + "type": "Edition", + "id": 14 + } + } + }, + "DescriptorProto": { + "edition": "proto2", + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "field": { + "rule": "repeated", + "type": "FieldDescriptorProto", + "id": 2 + }, + "extension": { + "rule": "repeated", + "type": "FieldDescriptorProto", + "id": 6 + }, + "nestedType": { + "rule": "repeated", + "type": "DescriptorProto", + "id": 3 + }, + "enumType": { + "rule": "repeated", + "type": "EnumDescriptorProto", + "id": 4 + }, + "extensionRange": { + "rule": "repeated", + "type": "ExtensionRange", + "id": 5 + }, + "oneofDecl": { + "rule": "repeated", + "type": "OneofDescriptorProto", + "id": 8 + }, + "options": { + "type": "MessageOptions", + "id": 7 + }, + "reservedRange": { + "rule": "repeated", + "type": "ReservedRange", + "id": 9 + }, + "reservedName": { + "rule": "repeated", + "type": "string", + "id": 10 + }, + "visibility": { + "type": "SymbolVisibility", + "id": 11 + } + }, + "nested": { + "ExtensionRange": { + "fields": { + "start": { + "type": "int32", + "id": 1 + }, + "end": { + "type": "int32", + "id": 2 + }, + "options": { + "type": "ExtensionRangeOptions", + "id": 3 + } + } + }, + "ReservedRange": { + "fields": { + "start": { + "type": "int32", + "id": 1 + }, + "end": { + "type": "int32", + "id": 2 + } + } + } + } + }, + "ExtensionRangeOptions": { + "edition": "proto2", + "fields": { + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + }, + "declaration": { + "rule": "repeated", + "type": "Declaration", + "id": 2, + "options": { + "retention": "RETENTION_SOURCE" + } + }, + "features": { + "type": "FeatureSet", + "id": 50 + }, + "verification": { + "type": "VerificationState", + "id": 3, + "options": { + "default": "UNVERIFIED", + "retention": "RETENTION_SOURCE" + } + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "nested": { + "Declaration": { + "fields": { + "number": { + "type": "int32", + "id": 1 + }, + "fullName": { + "type": "string", + "id": 2 + }, + "type": { + "type": "string", + "id": 3 + }, + "reserved": { + "type": "bool", + "id": 5 + }, + "repeated": { + "type": "bool", + "id": 6 + } + }, + "reserved": [ + [ + 4, + 4 + ] + ] + }, + "VerificationState": { + "values": { + "DECLARATION": 0, + "UNVERIFIED": 1 + } + } + } + }, + "FieldDescriptorProto": { + "edition": "proto2", + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "number": { + "type": "int32", + "id": 3 + }, + "label": { + "type": "Label", + "id": 4 + }, + "type": { + "type": "Type", + "id": 5 + }, + "typeName": { + "type": "string", + "id": 6 + }, + "extendee": { + "type": "string", + "id": 2 + }, + "defaultValue": { + "type": "string", + "id": 7 + }, + "oneofIndex": { + "type": "int32", + "id": 9 + }, + "jsonName": { + "type": "string", + "id": 10 + }, + "options": { + "type": "FieldOptions", + "id": 8 + }, + "proto3Optional": { + "type": "bool", + "id": 17 + } + }, + "nested": { + "Type": { + "values": { + "TYPE_DOUBLE": 1, + "TYPE_FLOAT": 2, + "TYPE_INT64": 3, + "TYPE_UINT64": 4, + "TYPE_INT32": 5, + "TYPE_FIXED64": 6, + "TYPE_FIXED32": 7, + "TYPE_BOOL": 8, + "TYPE_STRING": 9, + "TYPE_GROUP": 10, + "TYPE_MESSAGE": 11, + "TYPE_BYTES": 12, + "TYPE_UINT32": 13, + "TYPE_ENUM": 14, + "TYPE_SFIXED32": 15, + "TYPE_SFIXED64": 16, + "TYPE_SINT32": 17, + "TYPE_SINT64": 18 + } + }, + "Label": { + "values": { + "LABEL_OPTIONAL": 1, + "LABEL_REPEATED": 3, + "LABEL_REQUIRED": 2 + } + } + } + }, + "OneofDescriptorProto": { + "edition": "proto2", + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "options": { + "type": "OneofOptions", + "id": 2 + } + } + }, + "EnumDescriptorProto": { + "edition": "proto2", + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "value": { + "rule": "repeated", + "type": "EnumValueDescriptorProto", + "id": 2 + }, + "options": { + "type": "EnumOptions", + "id": 3 + }, + "reservedRange": { + "rule": "repeated", + "type": "EnumReservedRange", + "id": 4 + }, + "reservedName": { + "rule": "repeated", + "type": "string", + "id": 5 + }, + "visibility": { + "type": "SymbolVisibility", + "id": 6 + } + }, + "nested": { + "EnumReservedRange": { + "fields": { + "start": { + "type": "int32", + "id": 1 + }, + "end": { + "type": "int32", + "id": 2 + } + } + } + } + }, + "EnumValueDescriptorProto": { + "edition": "proto2", + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "number": { + "type": "int32", + "id": 2 + }, + "options": { + "type": "EnumValueOptions", + "id": 3 + } + } + }, + "ServiceDescriptorProto": { + "edition": "proto2", + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "method": { + "rule": "repeated", + "type": "MethodDescriptorProto", + "id": 2 + }, + "options": { + "type": "ServiceOptions", + "id": 3 + } + }, + "reserved": [ + [ + 4, + 4 + ], + "stream" + ] + }, + "MethodDescriptorProto": { + "edition": "proto2", + "fields": { + "name": { + "type": "string", + "id": 1 + }, + "inputType": { + "type": "string", + "id": 2 + }, + "outputType": { + "type": "string", + "id": 3 + }, + "options": { + "type": "MethodOptions", + "id": 4 + }, + "clientStreaming": { + "type": "bool", + "id": 5, + "options": { + "default": false + } + }, + "serverStreaming": { + "type": "bool", + "id": 6, + "options": { + "default": false + } + } + } + }, + "FileOptions": { + "edition": "proto2", + "fields": { + "javaPackage": { + "type": "string", + "id": 1 + }, + "javaOuterClassname": { + "type": "string", + "id": 8 + }, + "javaMultipleFiles": { + "type": "bool", + "id": 10, + "options": { + "default": false + } + }, + "javaGenerateEqualsAndHash": { + "type": "bool", + "id": 20, + "options": { + "deprecated": true + } + }, + "javaStringCheckUtf8": { + "type": "bool", + "id": 27, + "options": { + "default": false + } + }, + "optimizeFor": { + "type": "OptimizeMode", + "id": 9, + "options": { + "default": "SPEED" + } + }, + "goPackage": { + "type": "string", + "id": 11 + }, + "ccGenericServices": { + "type": "bool", + "id": 16, + "options": { + "default": false + } + }, + "javaGenericServices": { + "type": "bool", + "id": 17, + "options": { + "default": false + } + }, + "pyGenericServices": { + "type": "bool", + "id": 18, + "options": { + "default": false + } + }, + "deprecated": { + "type": "bool", + "id": 23, + "options": { + "default": false + } + }, + "ccEnableArenas": { + "type": "bool", + "id": 31, + "options": { + "default": true + } + }, + "objcClassPrefix": { + "type": "string", + "id": 36 + }, + "csharpNamespace": { + "type": "string", + "id": 37 + }, + "swiftPrefix": { + "type": "string", + "id": 39 + }, + "phpClassPrefix": { + "type": "string", + "id": 40 + }, + "phpNamespace": { + "type": "string", + "id": 41 + }, + "phpMetadataNamespace": { + "type": "string", + "id": 44 + }, + "rubyPackage": { + "type": "string", + "id": 45 + }, + "features": { + "type": "FeatureSet", + "id": 50 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 42, + 42 + ], + "php_generic_services", + [ + 38, + 38 + ] + ], + "nested": { + "OptimizeMode": { + "values": { + "SPEED": 1, + "CODE_SIZE": 2, + "LITE_RUNTIME": 3 + } + } + } + }, + "MessageOptions": { + "edition": "proto2", + "fields": { + "messageSetWireFormat": { + "type": "bool", + "id": 1, + "options": { + "default": false + } + }, + "noStandardDescriptorAccessor": { + "type": "bool", + "id": 2, + "options": { + "default": false + } + }, + "deprecated": { + "type": "bool", + "id": 3, + "options": { + "default": false + } + }, + "mapEntry": { + "type": "bool", + "id": 7 + }, + "deprecatedLegacyJsonFieldConflicts": { + "type": "bool", + "id": 11, + "options": { + "deprecated": true + } + }, + "features": { + "type": "FeatureSet", + "id": 12 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 4, + 4 + ], + [ + 5, + 5 + ], + [ + 6, + 6 + ], + [ + 8, + 8 + ], + [ + 9, + 9 + ] + ] + }, + "FieldOptions": { + "edition": "proto2", + "fields": { + "ctype": { + "type": "CType", + "id": 1, + "options": { + "default": "STRING" + } + }, + "packed": { + "type": "bool", + "id": 2 + }, + "jstype": { + "type": "JSType", + "id": 6, + "options": { + "default": "JS_NORMAL" + } + }, + "lazy": { + "type": "bool", + "id": 5, + "options": { + "default": false + } + }, + "unverifiedLazy": { + "type": "bool", + "id": 15, + "options": { + "default": false + } + }, + "deprecated": { + "type": "bool", + "id": 3, + "options": { + "default": false + } + }, + "weak": { + "type": "bool", + "id": 10, + "options": { + "default": false, + "deprecated": true + } + }, + "debugRedact": { + "type": "bool", + "id": 16, + "options": { + "default": false + } + }, + "retention": { + "type": "OptionRetention", + "id": 17 + }, + "targets": { + "rule": "repeated", + "type": "OptionTargetType", + "id": 19 + }, + "editionDefaults": { + "rule": "repeated", + "type": "EditionDefault", + "id": 20 + }, + "features": { + "type": "FeatureSet", + "id": 21 + }, + "featureSupport": { + "type": "FeatureSupport", + "id": 22 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 4, + 4 + ], + [ + 18, + 18 + ] + ], + "nested": { + "CType": { + "values": { + "STRING": 0, + "CORD": 1, + "STRING_PIECE": 2 + } + }, + "JSType": { + "values": { + "JS_NORMAL": 0, + "JS_STRING": 1, + "JS_NUMBER": 2 + } + }, + "OptionRetention": { + "values": { + "RETENTION_UNKNOWN": 0, + "RETENTION_RUNTIME": 1, + "RETENTION_SOURCE": 2 + } + }, + "OptionTargetType": { + "values": { + "TARGET_TYPE_UNKNOWN": 0, + "TARGET_TYPE_FILE": 1, + "TARGET_TYPE_EXTENSION_RANGE": 2, + "TARGET_TYPE_MESSAGE": 3, + "TARGET_TYPE_FIELD": 4, + "TARGET_TYPE_ONEOF": 5, + "TARGET_TYPE_ENUM": 6, + "TARGET_TYPE_ENUM_ENTRY": 7, + "TARGET_TYPE_SERVICE": 8, + "TARGET_TYPE_METHOD": 9 + } + }, + "EditionDefault": { + "fields": { + "edition": { + "type": "Edition", + "id": 3 + }, + "value": { + "type": "string", + "id": 2 + } + } + }, + "FeatureSupport": { + "fields": { + "editionIntroduced": { + "type": "Edition", + "id": 1 + }, + "editionDeprecated": { + "type": "Edition", + "id": 2 + }, + "deprecationWarning": { + "type": "string", + "id": 3 + }, + "editionRemoved": { + "type": "Edition", + "id": 4 + } + } + } + } + }, + "OneofOptions": { + "edition": "proto2", + "fields": { + "features": { + "type": "FeatureSet", + "id": 1 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] + }, + "EnumOptions": { + "edition": "proto2", + "fields": { + "allowAlias": { + "type": "bool", + "id": 2 + }, + "deprecated": { + "type": "bool", + "id": 3, + "options": { + "default": false + } + }, + "deprecatedLegacyJsonFieldConflicts": { + "type": "bool", + "id": 6, + "options": { + "deprecated": true + } + }, + "features": { + "type": "FeatureSet", + "id": 7 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "reserved": [ + [ + 5, + 5 + ] + ] + }, + "EnumValueOptions": { + "edition": "proto2", + "fields": { + "deprecated": { + "type": "bool", + "id": 1, + "options": { + "default": false + } + }, + "features": { + "type": "FeatureSet", + "id": 2 + }, + "debugRedact": { + "type": "bool", + "id": 3, + "options": { + "default": false + } + }, + "featureSupport": { + "type": "FieldOptions.FeatureSupport", + "id": 4 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] + }, + "ServiceOptions": { + "edition": "proto2", + "fields": { + "features": { + "type": "FeatureSet", + "id": 34 + }, + "deprecated": { + "type": "bool", + "id": 33, + "options": { + "default": false + } + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ] + }, + "MethodOptions": { + "edition": "proto2", + "fields": { + "deprecated": { + "type": "bool", + "id": 33, + "options": { + "default": false + } + }, + "idempotencyLevel": { + "type": "IdempotencyLevel", + "id": 34, + "options": { + "default": "IDEMPOTENCY_UNKNOWN" + } + }, + "features": { + "type": "FeatureSet", + "id": 35 + }, + "uninterpretedOption": { + "rule": "repeated", + "type": "UninterpretedOption", + "id": 999 + } + }, + "extensions": [ + [ + 1000, + 536870911 + ] + ], + "nested": { + "IdempotencyLevel": { + "values": { + "IDEMPOTENCY_UNKNOWN": 0, + "NO_SIDE_EFFECTS": 1, + "IDEMPOTENT": 2 + } + } + } + }, + "UninterpretedOption": { + "edition": "proto2", + "fields": { + "name": { + "rule": "repeated", + "type": "NamePart", + "id": 2 + }, + "identifierValue": { + "type": "string", + "id": 3 + }, + "positiveIntValue": { + "type": "uint64", + "id": 4 + }, + "negativeIntValue": { + "type": "int64", + "id": 5 + }, + "doubleValue": { + "type": "double", + "id": 6 + }, + "stringValue": { + "type": "bytes", + "id": 7 + }, + "aggregateValue": { + "type": "string", + "id": 8 + } + }, + "nested": { + "NamePart": { + "fields": { + "namePart": { + "rule": "required", + "type": "string", + "id": 1 + }, + "isExtension": { + "rule": "required", + "type": "bool", + "id": 2 + } + } + } + } + }, + "FeatureSet": { + "edition": "proto2", + "fields": { + "fieldPresence": { + "type": "FieldPresence", + "id": 1, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", + "edition_defaults.edition": "EDITION_2023", + "edition_defaults.value": "EXPLICIT" + } + }, + "enumType": { + "type": "EnumType", + "id": 2, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", + "edition_defaults.edition": "EDITION_PROTO3", + "edition_defaults.value": "OPEN" + } + }, + "repeatedFieldEncoding": { + "type": "RepeatedFieldEncoding", + "id": 3, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", + "edition_defaults.edition": "EDITION_PROTO3", + "edition_defaults.value": "PACKED" + } + }, + "utf8Validation": { + "type": "Utf8Validation", + "id": 4, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", + "edition_defaults.edition": "EDITION_PROTO3", + "edition_defaults.value": "VERIFY" + } + }, + "messageEncoding": { + "type": "MessageEncoding", + "id": 5, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", + "edition_defaults.edition": "EDITION_LEGACY", + "edition_defaults.value": "LENGTH_PREFIXED" + } + }, + "jsonFormat": { + "type": "JsonFormat", + "id": 6, + "options": { + "retention": "RETENTION_RUNTIME", + "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", + "edition_defaults.edition": "EDITION_PROTO3", + "edition_defaults.value": "ALLOW" + } + }, + "enforceNamingStyle": { + "type": "EnforceNamingStyle", + "id": 7, + "options": { + "retention": "RETENTION_SOURCE", + "targets": "TARGET_TYPE_METHOD", + "feature_support.edition_introduced": "EDITION_2024", + "edition_defaults.edition": "EDITION_2024", + "edition_defaults.value": "STYLE2024" + } + }, + "defaultSymbolVisibility": { + "type": "VisibilityFeature.DefaultSymbolVisibility", + "id": 8, + "options": { + "retention": "RETENTION_SOURCE", + "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2024", + "edition_defaults.edition": "EDITION_2024", + "edition_defaults.value": "EXPORT_TOP_LEVEL" + } + } + }, + "extensions": [ + [ + 1000, + 9994 + ], + [ + 9995, + 9999 + ], + [ + 10000, + 10000 + ] + ], + "reserved": [ + [ + 999, + 999 + ] + ], + "nested": { + "FieldPresence": { + "values": { + "FIELD_PRESENCE_UNKNOWN": 0, + "EXPLICIT": 1, + "IMPLICIT": 2, + "LEGACY_REQUIRED": 3 + } + }, + "EnumType": { + "values": { + "ENUM_TYPE_UNKNOWN": 0, + "OPEN": 1, + "CLOSED": 2 + } + }, + "RepeatedFieldEncoding": { + "values": { + "REPEATED_FIELD_ENCODING_UNKNOWN": 0, + "PACKED": 1, + "EXPANDED": 2 + } + }, + "Utf8Validation": { + "values": { + "UTF8_VALIDATION_UNKNOWN": 0, + "VERIFY": 2, + "NONE": 3 + }, + "reserved": [ + [ + 1, + 1 + ] + ] + }, + "MessageEncoding": { + "values": { + "MESSAGE_ENCODING_UNKNOWN": 0, + "LENGTH_PREFIXED": 1, + "DELIMITED": 2 + } + }, + "JsonFormat": { + "values": { + "JSON_FORMAT_UNKNOWN": 0, + "ALLOW": 1, + "LEGACY_BEST_EFFORT": 2 + } + }, + "EnforceNamingStyle": { + "values": { + "ENFORCE_NAMING_STYLE_UNKNOWN": 0, + "STYLE2024": 1, + "STYLE_LEGACY": 2 + } + }, + "VisibilityFeature": { + "fields": {}, + "reserved": [ + [ + 1, + 536870911 + ] + ], + "nested": { + "DefaultSymbolVisibility": { + "values": { + "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": 0, + "EXPORT_ALL": 1, + "EXPORT_TOP_LEVEL": 2, + "LOCAL_ALL": 3, + "STRICT": 4 + } + } + } + } + } + }, + "FeatureSetDefaults": { + "edition": "proto2", + "fields": { + "defaults": { + "rule": "repeated", + "type": "FeatureSetEditionDefault", + "id": 1 + }, + "minimumEdition": { + "type": "Edition", + "id": 4 + }, + "maximumEdition": { + "type": "Edition", + "id": 5 + } + }, + "nested": { + "FeatureSetEditionDefault": { + "fields": { + "edition": { + "type": "Edition", + "id": 3 + }, + "overridableFeatures": { + "type": "FeatureSet", + "id": 4 + }, + "fixedFeatures": { + "type": "FeatureSet", + "id": 5 + } + }, + "reserved": [ + [ + 1, + 1 + ], + [ + 2, + 2 + ], + "features" + ] + } + } + }, + "SourceCodeInfo": { + "edition": "proto2", + "fields": { + "location": { + "rule": "repeated", + "type": "Location", + "id": 1 + } + }, + "extensions": [ + [ + 536000000, + 536000000 + ] + ], + "nested": { + "Location": { + "fields": { + "path": { + "rule": "repeated", + "type": "int32", + "id": 1, + "options": { + "packed": true + } + }, + "span": { + "rule": "repeated", + "type": "int32", + "id": 2, + "options": { + "packed": true + } + }, + "leadingComments": { + "type": "string", + "id": 3 + }, + "trailingComments": { + "type": "string", + "id": 4 + }, + "leadingDetachedComments": { + "rule": "repeated", + "type": "string", + "id": 6 + } + } + } + } + }, + "GeneratedCodeInfo": { + "edition": "proto2", + "fields": { + "annotation": { + "rule": "repeated", + "type": "Annotation", + "id": 1 + } + }, + "nested": { + "Annotation": { + "fields": { + "path": { + "rule": "repeated", + "type": "int32", + "id": 1, + "options": { + "packed": true + } + }, + "sourceFile": { + "type": "string", + "id": 2 + }, + "begin": { + "type": "int32", + "id": 3 + }, + "end": { + "type": "int32", + "id": 4 + }, + "semantic": { + "type": "Semantic", + "id": 5 + } + }, + "nested": { + "Semantic": { + "values": { + "NONE": 0, + "SET": 1, + "ALIAS": 2 + } + } + } + } + } + }, + "SymbolVisibility": { + "edition": "proto2", + "values": { + "VISIBILITY_UNSET": 0, + "VISIBILITY_LOCAL": 1, + "VISIBILITY_EXPORT": 2 + } + }, + "Duration": { + "fields": { + "seconds": { + "type": "int64", + "id": 1 + }, + "nanos": { + "type": "int32", + "id": 2 + } + } + }, + "Empty": { + "fields": {} + }, + "FieldMask": { + "fields": { + "paths": { + "rule": "repeated", + "type": "string", + "id": 1 + } + } + }, + "Struct": { + "fields": { + "fields": { + "keyType": "string", + "type": "Value", + "id": 1 + } + } + }, + "Value": { + "oneofs": { + "kind": { + "oneof": [ + "nullValue", + "numberValue", + "stringValue", + "boolValue", + "structValue", + "listValue" + ] + } + }, + "fields": { + "nullValue": { + "type": "NullValue", + "id": 1 + }, + "numberValue": { + "type": "double", + "id": 2 + }, + "stringValue": { + "type": "string", + "id": 3 + }, + "boolValue": { + "type": "bool", + "id": 4 + }, + "structValue": { + "type": "Struct", + "id": 5 + }, + "listValue": { + "type": "ListValue", + "id": 6 + } + } + }, + "NullValue": { + "values": { + "NULL_VALUE": 0 + } + }, + "ListValue": { + "fields": { + "values": { + "rule": "repeated", + "type": "Value", + "id": 1 + } + } + }, + "Timestamp": { + "fields": { + "seconds": { + "type": "int64", + "id": 1 + }, + "nanos": { + "type": "int32", + "id": 2 + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/handwritten/pubsub/src/message-stream.ts b/handwritten/pubsub/src/message-stream.ts index 35922cdf7470..2b71542b6ddb 100644 --- a/handwritten/pubsub/src/message-stream.ts +++ b/handwritten/pubsub/src/message-stream.ts @@ -44,10 +44,10 @@ export const logs = { const KEEP_ALIVE_INTERVAL = 30000; /*! - * Deadline for the stream. + * Deadline for the stream. This will need to go away and be replaced with something + * more graceful for pulling the config out of the pubsub-api package. */ -const gapicConfig = require("@google-cloud/pubsub-api/src/v1/subscriber_client_config.json"); -const PULL_TIMEOUT = gapicConfig.interfaces[ +const PULL_TIMEOUT = require('./v1-old/subscriber_client_config.json').interfaces[ 'google.pubsub.v1.Subscriber' ].methods.StreamingPull.timeout_millis; diff --git a/handwritten/pubsub/src/pubsub.ts b/handwritten/pubsub/src/pubsub.ts index e3c535b07110..83effbde10cd 100644 --- a/handwritten/pubsub/src/pubsub.ts +++ b/handwritten/pubsub/src/pubsub.ts @@ -19,7 +19,7 @@ import {replaceProjectIdToken} from '@google-cloud/projectify'; import * as extend from 'extend'; import {AuthClient, GoogleAuth, GoogleAuthOptions} from 'google-auth-library'; import * as gax from 'google-gax'; -import {v1} from '.'; +import {v1} from './'; // eslint-disable-next-line @typescript-eslint/no-var-requires const PKG = require('../../package.json'); diff --git a/handwritten/pubsub/src/v1-old/publisher_client_config.json b/handwritten/pubsub/src/v1-old/publisher_client_config.json new file mode 100644 index 000000000000..2096902099b3 --- /dev/null +++ b/handwritten/pubsub/src/v1-old/publisher_client_config.json @@ -0,0 +1,103 @@ +{ + "interfaces": { + "google.pubsub.v1.Publisher": { + "retry_codes": { + "non_idempotent": [], + "idempotent": [ + "DEADLINE_EXCEEDED", + "UNAVAILABLE" + ], + "unavailable": [ + "UNAVAILABLE" + ], + "cancelled_unknown_deadline_exceeded_resource_exhausted_aborted_internal_unavailable": [ + "CANCELLED", + "UNKNOWN", + "DEADLINE_EXCEEDED", + "RESOURCE_EXHAUSTED", + "ABORTED", + "INTERNAL", + "UNAVAILABLE" + ], + "unknown_aborted_unavailable": [ + "UNKNOWN", + "ABORTED", + "UNAVAILABLE" + ] + }, + "retry_params": { + "default": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 1.3, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 60000, + "rpc_timeout_multiplier": 1, + "max_rpc_timeout_millis": 60000, + "total_timeout_millis": 600000 + }, + "693222d32e887d96c8faeadca469f7763ccda85a": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 4, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 60000, + "rpc_timeout_multiplier": 1, + "max_rpc_timeout_millis": 60000, + "total_timeout_millis": 600000 + } + }, + "methods": { + "CreateTopic": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "UpdateTopic": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "Publish": { + "timeout_millis": 60000, + "retry_codes_name": "cancelled_unknown_deadline_exceeded_resource_exhausted_aborted_internal_unavailable", + "retry_params_name": "693222d32e887d96c8faeadca469f7763ccda85a", + "bundling": { + "element_count_threshold": 100, + "request_byte_threshold": 1048576, + "delay_threshold_millis": 10, + "element_count_limit": 1000000 + } + }, + "GetTopic": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "ListTopics": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "ListTopicSubscriptions": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "ListTopicSnapshots": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "DeleteTopic": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "DetachSubscription": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + } + } + } + } +} diff --git a/handwritten/pubsub/src/v1-old/schema_service_client_config.json b/handwritten/pubsub/src/v1-old/schema_service_client_config.json new file mode 100644 index 000000000000..5a2280962fc5 --- /dev/null +++ b/handwritten/pubsub/src/v1-old/schema_service_client_config.json @@ -0,0 +1,79 @@ +{ + "interfaces": { + "google.pubsub.v1.SchemaService": { + "retry_codes": { + "non_idempotent": [], + "idempotent": [ + "DEADLINE_EXCEEDED", + "UNAVAILABLE" + ], + "unavailable": [ + "UNAVAILABLE" + ] + }, + "retry_params": { + "default": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 1.3, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 60000, + "rpc_timeout_multiplier": 1, + "max_rpc_timeout_millis": 60000, + "total_timeout_millis": 600000 + } + }, + "methods": { + "CreateSchema": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "GetSchema": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "ListSchemas": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "ListSchemaRevisions": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "CommitSchema": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "RollbackSchema": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "DeleteSchemaRevision": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "DeleteSchema": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "ValidateSchema": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "ValidateMessage": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + } + } + } + } +} diff --git a/handwritten/pubsub/src/v1-old/subscriber_client_config.json b/handwritten/pubsub/src/v1-old/subscriber_client_config.json new file mode 100644 index 000000000000..fa869f777da1 --- /dev/null +++ b/handwritten/pubsub/src/v1-old/subscriber_client_config.json @@ -0,0 +1,136 @@ +{ + "interfaces": { + "google.pubsub.v1.Subscriber": { + "retry_codes": { + "non_idempotent": [], + "idempotent": [ + "DEADLINE_EXCEEDED", + "UNAVAILABLE" + ], + "unknown_aborted_unavailable": [ + "UNKNOWN", + "ABORTED", + "UNAVAILABLE" + ], + "unavailable": [ + "UNAVAILABLE" + ], + "unknown_aborted_internal_unavailable": [ + "UNKNOWN", + "ABORTED", + "INTERNAL", + "UNAVAILABLE" + ], + "deadline_exceeded_resource_exhausted_aborted_internal_unavailable": [ + "DEADLINE_EXCEEDED", + "RESOURCE_EXHAUSTED", + "ABORTED", + "INTERNAL", + "UNAVAILABLE" + ] + }, + "retry_params": { + "default": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 1.3, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 60000, + "rpc_timeout_multiplier": 1, + "max_rpc_timeout_millis": 60000, + "total_timeout_millis": 600000 + }, + "693222d32e887d96c8faeadca469f7763ccda85a": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 4, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 180000, + "rpc_timeout_multiplier": 1, + "max_rpc_timeout_millis": 1800000, + "total_timeout_millis": 1800000 + } + }, + "methods": { + "CreateSubscription": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "GetSubscription": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "UpdateSubscription": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "ListSubscriptions": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "DeleteSubscription": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "ModifyAckDeadline": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "Acknowledge": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "Pull": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_internal_unavailable", + "retry_params_name": "default" + }, + "StreamingPull": { + "timeout_millis": 1800000, + "retry_codes_name": "deadline_exceeded_resource_exhausted_aborted_internal_unavailable", + "retry_params_name": "693222d32e887d96c8faeadca469f7763ccda85a" + }, + "ModifyPushConfig": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "GetSnapshot": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "ListSnapshots": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + }, + "CreateSnapshot": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "UpdateSnapshot": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "DeleteSnapshot": { + "timeout_millis": 60000, + "retry_codes_name": "unavailable", + "retry_params_name": "default" + }, + "Seek": { + "timeout_millis": 60000, + "retry_codes_name": "unknown_aborted_unavailable", + "retry_params_name": "default" + } + } + } + } +} diff --git a/handwritten/pubsub/test/message-stream.ts b/handwritten/pubsub/test/message-stream.ts index d5be750bbcb0..00bc31fff02e 100644 --- a/handwritten/pubsub/test/message-stream.ts +++ b/handwritten/pubsub/test/message-stream.ts @@ -160,7 +160,7 @@ describe('MessageStream', () => { before(() => { MessageStream = proxyquire('../src/message-stream.js', { stream: {PassThrough: FakePassThrough}, - './v1/subscriber_client_config.json': FAKE_CLIENT_CONFIG, + './v1-old/subscriber_client_config.json': FAKE_CLIENT_CONFIG, }).MessageStream; }); diff --git a/handwritten/pubsub/test/pubsub.ts b/handwritten/pubsub/test/pubsub.ts index c231deae118d..b2ecbfa7d29f 100644 --- a/handwritten/pubsub/test/pubsub.ts +++ b/handwritten/pubsub/test/pubsub.ts @@ -29,6 +29,7 @@ import * as tracing from '../src/telemetry-tracing'; import {Topic} from '../src/topic'; import * as util from '../src/util'; import {Schema, SchemaTypes, ISchema, SchemaViews} from '../src/schema'; +import {v1 as v1real} from '../src'; // eslint-disable-next-line @typescript-eslint/no-var-requires const PKG = require('../../package.json'); const sandbox = sinon.createSandbox(); @@ -145,7 +146,7 @@ function fakeGoogleAuth(...args: Array<{}>) { return (googleAuthOverride || util.noop)(...args); } -const v1Override = {}; +const v1Override = Object.assign({}, v1real); // eslint-disable-next-line @typescript-eslint/no-explicit-any let v1ClientOverrides: any = {}; @@ -195,7 +196,7 @@ describe('PubSub', () => { './snapshot': {Snapshot: FakeSnapshot}, './subscription': {Subscription}, './topic': {Topic: FakeTopic}, - './v1': v1Override, + './index': {v1:v1Override}, './util': fakeUtil, }).PubSub; }); From 4ef0515b0f4e3300a36dfcd7786b6bf97af98c1d Mon Sep 17 00:00:00 2001 From: feywind <57276408+feywind@users.noreply.github.com> Date: Fri, 10 Jul 2026 17:49:50 -0400 Subject: [PATCH 6/6] build: don't compile protos as part of the default build, since we don't have service classes anymore --- handwritten/pubsub/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handwritten/pubsub/package.json b/handwritten/pubsub/package.json index 989057b63fe9..50658f7d6925 100644 --- a/handwritten/pubsub/package.json +++ b/handwritten/pubsub/package.json @@ -43,7 +43,7 @@ "clean": "gts clean", "compile": "tsc -p . && cp -r protos build/", "compile-protos": "compileProtos src", - "prepare": "npm run compile-protos && npm run compile", + "prepare": "npm run compile", "pretest": "npm run compile", "benchwrapper": "node bin/benchwrapper.js", "prelint": "cd samples; npm link ../; npm install",