From e46292a9203e83558353f285ee8fdc07667c01db Mon Sep 17 00:00:00 2001 From: drh <> Date: Mon, 5 Jul 2021 02:40:29 +0000 Subject: [PATCH] Improved rebustness in sqlite3ExprListDup() when it contains a vector assignment from an UPDATE where the initial term is omitted. This can happen during a UNION ALL query flattening while processing a virtual table update in which the first term of the vector is repeated. [forum:/forumpost/16ca0e9f32|Forum post 16ca0e9f32]. FossilOrigin-Name: 2547cfe38f8fb35109b3fc5bdfada387fe4b2b8a304156b704ab7f03f1f71198 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- src/expr.c | 24 ++++++++++++------------ src/treeview.c | 5 +++-- test/fuzzdata8.db | Bin 2502656 -> 2503680 bytes test/vtab1.test | 14 ++++++++++++++ 6 files changed, 39 insertions(+), 24 deletions(-) diff --git a/manifest b/manifest index aaed353b1f..fff16cfa52 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Ensure\sthat\sTK_SELECT_COLUMN\sExpr\snodes\salways\shave\stheir\siTable\sfield\sset\sto\nto\sthe\snumber\sof\scolumns\sin\sthe\svector.\sThis\sis\snot\sstrictly\snecessary.\sIt\njust\ssimplifies\sthe\sstate\sdescription\sand\smake\sthe\scode\seasier\sto\sreason\sabout. -D 2021-07-05T01:11:26.068 +C Improved\srebustness\sin\ssqlite3ExprListDup()\swhen\sit\scontains\sa\svector\sassignment\nfrom\san\sUPDATE\swhere\sthe\sinitial\sterm\sis\somitted.\s\sThis\scan\shappen\sduring\sa\nUNION\sALL\squery\sflattening\swhile\sprocessing\sa\svirtual\stable\supdate\sin\swhich\nthe\sfirst\sterm\sof\sthe\svector\sis\srepeated.\n[forum:/forumpost/16ca0e9f32|Forum\spost\s16ca0e9f32]. +D 2021-07-05T02:40:29.435 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -496,7 +496,7 @@ F src/date.c e0632f335952b32401482d099321bbf12716b29d6e72836b53ae49683ebae4bf F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c F src/delete.c 62451bba9fe641159e9c0b7d9d2bab1c48d0cff11e16de2d14000603d2af1fcf -F src/expr.c 2d40c29e10ed37b1969ddb1616b598c30e318e8694686ab9209cbec31c310613 +F src/expr.c 5c532072d91855d1b91b2581c2d4447e517932713f583ed02020b7129f1cfbd7 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c e9063648396c58778f77583a678342fe4a9bc82436bf23c5f9f444f2df0fdaa4 F src/func.c c96ac6f7c4f2d684217c4673a80446e1b50e25b5ea79366f333f484622d010a0 @@ -609,7 +609,7 @@ F src/test_window.c cdae419fdcea5bad6dcd9368c685abdad6deb59e9fc8b84b153de513d394 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c F src/tokenize.c bae853ad129d1129c063de8630a3e99e306283bc40146f359b1bb91be2c08f1e -F src/treeview.c f34b02f379a99bdfd24971810765fe0993e6aa2bcd7e3fa5af8a54f353b429fc +F src/treeview.c ce7a3da38caba094c78d888d2366f749ea33dc8cbafb04218b57768fb8669a6c F src/trigger.c 7d16aa09e63226b6d8b3f0fc60b21cbfa596fc406288b2ebcf4266633d1ba222 F src/update.c 56fa0458b1ffc1042629f926443e8ed44203983df3ab2b0db2ba556e6ceed68c F src/upsert.c df8f1727d62b5987c4fd302cd4d7c0c84ae57cd65683c5a34a740dfe24039235 @@ -1057,7 +1057,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 0166b56fd7a6b9636a1d60ef0a060f86ddaecf99400a666bb6e5bbd7199ad1f2 -F test/fuzzdata8.db a44fe27989a002c0c9b554923ecf933b9f16750c1c0bb187a04f5beee0802aa6 +F test/fuzzdata8.db da92a0e336bf34ae89e407b375aaa57581b73b5f8f99b4de5e2557f64a3ca33c F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test f64c4aef4c9e9edf1d6dc0d3f1e65dcc81e67c996403c88d14f09b74807a42bc @@ -1685,7 +1685,7 @@ F test/varint.test bbce22cda8fc4d135bcc2b589574be8410614e62 F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661 F test/view.test ea88361d5e9bc8eabf9f573185a16aea73a885be9b6c6a95ae84908913416a80 F test/view2.test db32c8138b5b556f610b35dfddd38c5a58a292f07fda5281eedb0851b2672679 -F test/vtab1.test 99c0c13b5336ca7f87f137459de144b2f396bb8563fbd602e46bfaa425e3d8cc +F test/vtab1.test e5760911437a97f5887f41ed37d6b124b2c4d8f7dc6ab4e08be8c0dff75b34e8 F test/vtab2.test 14d4ab26cee13ba6cf5c5601b158e4f57552d3b055cdd9406cf7f711e9c84082 F test/vtab3.test b45f47d20f225ccc9c28dc915d92740c2dee311e F test/vtab4.test 8e73ed268f3d596bc3590f45fc948fb40f28e9c3 @@ -1919,7 +1919,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 49829ae3229b7c7c7adeaa970a84aebd5157bc93b38fd6d80d86cc03f5fdde6f -R 074e3a063f98e309829563ef30773d9b +P 026f08d4cff19a95e0f38f2ef431cacd65c7c77ed92e30d7f2ded84651f47150 +R 370a07f45c8536f9b9e4e0469f767d7e U drh -Z 460e3b0de88173af039daa4e60e46cf6 +Z 4f1da44a75ffa77140a4f27e7fbced11 diff --git a/manifest.uuid b/manifest.uuid index e6480bc7f4..3ecd262408 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -026f08d4cff19a95e0f38f2ef431cacd65c7c77ed92e30d7f2ded84651f47150 \ No newline at end of file +2547cfe38f8fb35109b3fc5bdfada387fe4b2b8a304156b704ab7f03f1f71198 \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index e5f02f0488..637ac9131a 100644 --- a/src/expr.c +++ b/src/expr.c @@ -1400,7 +1400,6 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){ if( !ExprHasProperty(p, EP_TokenOnly|EP_Leaf) ){ if( pNew->op==TK_SELECT_COLUMN ){ pNew->pLeft = p->pLeft; - assert( p->iColumn==0 || p->pRight==0 ); assert( p->pRight==0 || p->pRight==p->pLeft || ExprHasProperty(p->pLeft, EP_Subquery) ); }else{ @@ -1498,7 +1497,8 @@ ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags){ ExprList *pNew; struct ExprList_item *pItem, *pOldItem; int i; - Expr *pPriorSelectCol = 0; + Expr *pPriorSelectColOld = 0; + Expr *pPriorSelectColNew = 0; assert( db!=0 ); if( p==0 ) return 0; pNew = sqlite3DbMallocRawNN(db, sqlite3DbMallocSize(db, p)); @@ -1515,17 +1515,17 @@ ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags){ && pOldExpr->op==TK_SELECT_COLUMN && (pNewExpr = pItem->pExpr)!=0 ){ - assert( pNewExpr->iColumn==0 || i>0 ); - if( pNewExpr->iColumn==0 ){ - assert( pOldExpr->pLeft==pOldExpr->pRight - || ExprHasProperty(pOldExpr->pLeft, EP_Subquery) ); - pPriorSelectCol = pNewExpr->pLeft = pNewExpr->pRight; + if( pNewExpr->pRight ){ + pPriorSelectColOld = pOldExpr->pRight; + pPriorSelectColNew = pNewExpr->pRight; + pNewExpr->pLeft = pNewExpr->pRight; }else{ - assert( i>0 ); - assert( pItem[-1].pExpr!=0 ); - assert( pNewExpr->iColumn==pItem[-1].pExpr->iColumn+1 ); - assert( pPriorSelectCol==pItem[-1].pExpr->pLeft ); - pNewExpr->pLeft = pPriorSelectCol; + if( pOldExpr->pLeft!=pPriorSelectColOld ){ + pPriorSelectColOld = pOldExpr->pLeft; + pPriorSelectColNew = sqlite3ExprDup(db, pPriorSelectColOld, flags); + pNewExpr->pRight = pPriorSelectColNew; + } + pNewExpr->pLeft = pPriorSelectColNew; } } pItem->zEName = sqlite3DbStrDup(db, pOldItem->zEName); diff --git a/src/treeview.c b/src/treeview.c index b6f5c529d4..165ceb537a 100644 --- a/src/treeview.c +++ b/src/treeview.c @@ -699,8 +699,9 @@ void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 moreToFollow){ break; } case TK_SELECT_COLUMN: { - sqlite3TreeViewLine(pView, "SELECT-COLUMN %d of [0..%d]", - pExpr->iColumn, pExpr->iTable-1); + sqlite3TreeViewLine(pView, "SELECT-COLUMN %d of [0..%d]%s", + pExpr->iColumn, pExpr->iTable-1, + pExpr->pRight==pExpr->pLeft ? " (SELECT-owner)" : ""); sqlite3TreeViewSelect(pView, pExpr->pLeft->x.pSelect, 0); break; } diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 7e6764af0b237cb400f472116ec469a0fd9e8b91..f3a67bc7048bd937145827b4645940bd52ec2404 100644 GIT binary patch delta 38230 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 bZAndu6#$RAziG-$QS6Us{r(m0GC2M(=loET delta 38090 zcmc$GcU+Xm^Z)Hru9xTf9g2X0T>-@o2=*@6J79}lh#I3&;m+Pclu;8E5{)e?SQu-B zL=#g~FvcV%Dn?B-F%gW3srs8e^TAK@{r>g){qghlx>cXsXLn|HW_I>HvzK*uBg?AT z$g*o#d#hBsRjTKI(sLR&XT6J3_iEUChm2Ye%lygLU!@Yh_4T9nD_=6TU-)`ad&Sq2 z+V^}ts6FZHM(qw?S85AqzZpUm~^ZdvL1v*5{zMmCsIX3!jbJ z7@w8eXkTt^eNB5~pMm~U->0Xxo=-<@_@QL|n@sbYpEL67!Y78MPYjGc0)0gKNc55E zqo$7rpBS{l%M$gh1K)PntiUzPv@dFmCKWwVT~Ub>R9AAX2_I@V2tKW(+M|Q=ncAUv zag#P$(B^1;8cFrK6B4tuE9LR@M(yHkty+uf*RES1O~dRh+D)RQrw5Q$ zX-t5UgW7PY+g)eH*9)|10&9rUcI{JlK+9D^F^dOOl1Yg#xoFFj>^I9`ZZd zgQBcRs^!lAdavVq+7iZ^L%|?T6x6t(ZH%esv?)4f#gcMudx15}yR3aI+a%R0C+EH| z_WV>kS0mdc)oT+WqOSN_`de2B)cV5w#Z*@ z58IM;UMO3l)moa5=OSyrKHTS$RJ(dte{IG&Rod%J7q`5o&nc*ZRK>R^p(N{sn$-d?p0IK4{sSWGHNWhFmAa$A!&>*E|1BrA?vjWKjbG01F&xc-C=?Cf{aFT za|oTFs|n}32+=T2E7ym$??$wNi(0uBWEo@$Dktc?7}`X4OU?SA6r&?8>kGrwb%KCc ziolMobtNK8f`VAxEF9iRw^Zb|kPLqc2q#EU-GTZM3dR zH+1P7Uu|N3b~W?iTAF(>eTHFTeO-Ho9mnZP1U5YHp+v+?(A74|^(0kJ;`0}{?We3T z`|3)n^^oRL5`gCJN!qSksvEVcu`fbWZ5$csj`T$(VysutdmeZJNBebM zHF85z({axS=PNX3Ws0wXq=Jsm9`n(0=L+2r#?p#c>AbSkh#Pf|)|S9EI~eEY=q{?| zCS+oBst58yVS~D%r1TM1{A?ppAvY#+pHKAsdm9XTRkvFnM-xwg1NAjwxT~RN2!qh$ zUNtVk8#9^&N0}iSBEr%gC+ei4-+D*apRsAhXLLiga*U)Z8qD7q0#SaQ+pHf>#LZk2=4(zqA~4htDD>(qcwl1&Fwy8O56RsNdJ+bevy2B#Ng2?Z6;b64tN8^e=b-Oik8%cFx z7N2D@6uxCNL!$~^5e%7WFhSBRy*uxwE(1)DOg= zM*Vm#Yl|fgeS1;%Q-`H+POT5dFpvIgkuAf*Uv!MYN~3-=ZVT4;)X1@9A^rK3W4Nxb z*y8fFBgga1iz%)29iYswRsT;y=0VGP`VZKW;`(}*EXR?O1{TN{=#H;9(Kpnwcs$=y z-;BwtXyCOdwI(|C*=dbOHy#ro7u_tk^jt?wiq#(ySD zuY&iw>6^*9JEr^E<6qtMf+(+{k=Db>?)q18TQB`sk!^r$Z8+OW`aK#3C=KDV*oe{y z{`V%7QuT>CDN#~=_{@X~gA6r+luipxyX(|=XrjKCAm`Dbufd3y^@DNv6n%w;b%ds~ zY#o6*hhhFqeP5>Ax?bh$K%0mR89|0rpoh1h-E93C`Bi#%8w{Ie=#PV6)_-h}I&(*n z9%Oh0@*jrFuyc|AfcEv(!M;x9)gUa@mB5FsjU|iqWG(r{%k-kew!_U*+OJQ~)VIde zRr+gM))nJ7==%w}H`h+{b&*ut()he%xc7R4K0Bdcydeb4uDYcV^_D1O`Wd}D;8%Cy z$zS!IM7a2&{wVjeyW!-YdLMka%D4uyKQg9cyC?dy3@%>KA63)Wd!j~z<+R|2{EPb3 z;vPYNvf@knrHsG17k#~gGDS#VMb#l|S4ERp)}* zK*^W-1gJQuw_#a~Axeb8kAq0=Dq%kqvt?`#R&FiE2OFjd`2Bl&4`YY$?NCDp5mFBdiCh$O_!x(Ae!hO82;1J! z>md80eg->&VLO6?7%Ibp?lZ{#-5mlIqk=x;or}TONgafti-Rfzd~!uEGls~fS>qZ0 z8EyESaWULuNAc|#J`XY72|{y&^pHN-tAR4bFpdv$4Bu|ezkb@*u!l2fXUCz;W@z-B zyLSb40xrC6_hRr}y-O!|lU2UsP~O{~fTS8FHC?iYPe;X$N%f0RNm%6xjz*^y7(;*=*cEk!o`0rH_~#G;{Qjf2N%a0$hga&8FxvQzAoN)(Lmc% zy0dNyEhrf-km1UBxq~5+u}e@IR(Ch<>tq-tvQHqaui*xiTwpS6N;UL=c!x=YZMqvi z6xe0R7^R&6S+$J@oZZW?N;G^L#s7?nX%;gErcX1((2D6Lu$<5*!j|p^J?11CM1$N@ zQdP{V_9JD)z~|&A4Slt8FG;n(Gyi7aGYWwy+=?aR4egoy8TI>;OxWEJvRb-pKw+XG z4!+!Awqw$J1~nP1MkPp9s(#!nsid=Rr z3?t?lt{d1bxLH)2cHL!$?=A_=L4?;)p=D+KH8GE|7{J{E*} zW(yc)^UkNY);QGam=@IO2Pg>l#N|D8I&fg2VZX?Jgz^K98W?iea9d;#pd9Q@n9|;* z%NwojmRojJjp;`Xxgx8Cm4)VUIPs)mv&gETsGq$yl9`TM$ozJa*y8$&8H{Vdb5bRzqb zA5I6L@v@;7%l!X#`hRx#&;0*(`d3H@QNCP?Z~iw70F$p6jx%--jh`E2midXFPL9%P zKOq^?AwQ{z^p?LlwfTO+Go&qkI&Dd7{RCu4EBuYAUF;_aL-PCUQ#;>J5QdcQkDzv< zzc#hQ`~+l3z5E1WNS*w_)JFRW!jKyH3Br(S`w7C3oPL5ZB-!txR+Z^@s#M}%enK+D z-~EJSh>!e)WQh0u#D#d%Z=v=}KgGP_B|kwJ;)j0PLB#j{8fwq@DHIS-`f2UO<9;#$ z@sMAncCVjNyUUkJ?RMV+YV&>bsNLv$h1y)-9BP;QW>cH#%bZDn&GS*nEoS&KsGZ`Q zPVEHWG-}g)Q>h*9n@sHx-y~`W_$E@D?3+MsS09};#Ew2XlZdgtvDCKljiENuH=5c; zzEo;Md@0mAeIuzg`i4`h_YI}xdF&fPs`|D{m8mUWNJ7ybTu4IE?q5i_j&{#N5{-8E zLXwR3&4nZxtz{ueMr&M1GSM7gNHWn(SZG$M)MpkF9HTzIkOE-!k%c55_3niv8Fl_b zl8HKRAxT5MZXroSy=EcJr(WzQnW%k!ioeyb_(>+}%-MbtiaNtTm)fcRm#LlTC()?K z`Cp=Tlz$ergZv~Vbszr>YP#{jj6XawI7LBt z3Tc;}iBMrNhQbeBjdpzbSHnt?sUW+jaWYQ-)39Eo6U#QYF%3fPcHNO_#tkA9a;?i! zbJMRL$PHbd3@|^)0@*Lv9l85A_W?_=@eeFh8=K2af()(jd^)=bS=$_ex#}<($Ng$} zmA3Sr#x$<=Y8dyYVKkKOvW4I`e;Q^85T9s|g5^&Qv-#{}ndZni<75Gn&N_{`Yd`M| zKMdAr@M4fLMrJxtzB07K_Myi9dU>d%+R>G}?2G_L0T6BchEJd^ZfvY2vEdLBWxOYw zR!{Z~LsPWzp&*muiDrx+Xe?*=X$xahfmyKiFylFfAGa~K5}1NgtdZa$8zv34B@2-L zsU;eI|HaS+lw6ArF7CFNA%B(_1j=c-7o2)*=vd8XK&CEcN2!~UwowN}J`VFj_Me7U z&p4gY%XnKOjg(Zs2ck_#iZ<54w+9#p2s&56K;H;S^=>5RWd=kQ*%a71*qA00Ix4z> z25s07=27 zI^30o=EeI)NveGetih&{=$>!9E11YxieX$U>5m=~-!nNevVPqL43ZM*;P&I&Mhi6F zTjw&a_8VVftTy(2$5_Ph$YNt3!i_NYJ)@Swh692ICLJKecG~;K_Bd;~agD&jA@L*q zJj_~UTqv>#YA;Swf#ufsr3oS1hM_}rD;~OHY2NQzBzs2u28a*Pb5B07Z-@u)( z8AoVXLn!~9xu8-p4Tm;|D0<7L?WR`}6jnv4C>m@TVElPF*+XF7lqSpUVKO&7IkvX4~y(D3R$%eaQoz9U9QN3{Uo z0bQd&442oz@B+S7VjL{8W+j+3pf5lj9ytc)d%5dy8qoR|?NU9|@ zI6+hJ&Ns$djJ1QbZl;~Erk{BXWM4CN!hZLR1`QjFqbiLBqTH6KjmPNQrgsH={}*E{ z6Wh0rLEkT?@eHT@W(0vHK*ma`7bg8_BnTl9e61D29Mg@pk0hAh6hZ^(dSJsLKz5+A^V_lH}E|dUFL}(|P#A1d^If#tmNCBZXbLuwA$Owxch9>*6Xtu&HAPrl z$FzX;fYP5$r}5oz6M>vPL5VfB#@PC%_eBC&qbC|8a56Kc(xIb`@&^=lSDM1%78)ft zeQ}N412xnzB3NsN>`Zqnm?xQPz_#B_b)iHuL2;CcP8WS3vC7y0;`bRlK-5_CTaXlH zvS7RY#!@ z=KTU5Tw_X>*?2lH2#v60yU9i9!!=VWs`E^LG4=xF>@-GWi;bpKtvpRqood6SbBt9F z7YT-6*e-~gZVJS6JcODA*F#LTU}VPMI?hM!D6+{={@4@=kvom$)&8VAM*e2%Ln{Bz zwQj!G^ph-4msBU*|C;U`Ul1O-O#^nvbPyhdm`wkiX&XO$h|_`HGmVCd0p^7m-IF zLD*bVLhgb{Ev)|1R1>y-Z5od6UglOwDT48)bN^NmBo&Ea>}5D|*%W~Zk4&K=tlep9 zmN(0^xVVCw-&|B;%ufUqzBMt%UV)5@rnML~)3jT_*zZltH1dm*>hN&RNArL-^O$)7 z76@hz0DNmIgY1{g4X|*WNn)7#*i>JZXG*FYjkufSaIBcMVV-XWq3vLGx)YF8eeUzc zf6T=}A*kpBUsqE%s7#d&m{ef$lPfu69*-3t6VvO>PRQRVgh1-Iru^#J?ggwNhy#7% zLMXUox(7-hQ)?hq_hP)xd{!VlIeL<*Eyf$oXGOLcCB;nf$5JRiqj)gAuG!2WbF6tJ zlDlakK*A?x!Z%goGAOEJ>I;<@O?psH1g*mdHO;3rY&ISUH#cRv)vqePmn2nj1Q*Cg z#@Bkq#!0?e1h)_6EWgM(T0)<+_PfMJ296-*r6PW;vL{ z%+m$F9G!Ugu~4I<`7T=r(T|NDQ0%6in03!|l3`{S^Lw&P2x4&>r@xr-1zP{=1RrI0 zG2n}yFHkGaNj7~ppf$`iGa#W^P?0T2)l=-{jO4+M)}}ZpYi-_!WG+ig@+*?+Og%n+ za6n-;Et}w*3)y4L(`BIkn<1;p_&I(x)?80yuVThHQ+?sN*4BWDlg*piYjAV7c`zjX z$uzkuesRES-$X>ch72V1D-b1YK(_DE<7=yw#;Z8`oF4Ttj!-@j;=2$&oX&XK*ueP--SIbfu zbwk()`J0qUaP$>xH|)bKM+Ei`^iH+%n96cPWbeY-r$PfrZ)oif^%q(%VrQMDw?W5A9l3> z>rzVxNNo_V#fA+npECIzb^92jtCZgvK51f+1%hi2{HzfA7iFQG+XXoAo05bBVk`$l zb`cN!rN|6*Z7jbFtcYoXwEnH^^!HR54hk(cY6r$T{wnE7|%c~fdYUre*C*MC(q$*-pa10jE$VK_J4(n|h>_`L?PQ!Q8UYPzL? zfmOiiIEM>^=2?boWkS90&3HCW%2|pgZ!WUb6Xe_3Q~hQzEw#L?`#O7)pNc~Y$Z0RN zOyeecgFd&QC_dB$q4O+_G3B;3iQ#MWEtF&bbcLm<%@MC+)Px8~j9v@K;T{%DvW%j=?>&nhXBAl1sM+_J zc;BKG(74AkT*GTl_5@ec?1ZU;QSZr#U3TSqV)q-z;Z3X2llb;YMDZs_qwkA*!XA8xI!?puF`yx?# zWSxO(Ewl<9FeNyjVrvdfhuZDf!>HKx%!Q*|N&%AzYm=zLz;0~>m5(Dd7&1(`$%-E; zRH`t&hO(Y%;fIlmAD7fr=8FWr^lE0Q1>0H(PHg(CQYk>Kamp8bHa+xeX}N?Sj8|GQ zSnwIWv9_)9 zhpL|bn59r48`MI%N9YWc&ruMQx+!#S8_{0rgA>~-n;BCerHew_bF4z!vlR-~NQt1t zDOr%xkV4JSMCF#iY>@MpF$^-N8v8>@6H~3+tTHpCw^!ov>rP6T$n0?QMPm>q^ixV0 zUhl3%2n5<>G%~G)!d6NWgeH^2PKcv_Rb&`Htv)pVP@JTcNd&}{4^ZCFx&G|xcazco z_ALKWu|uf~pH>>J_-Z#Y88TRjAYaLi$GcfF1>EdW=5rO3Jk=7;L6WaaU|v{oQCWcg zRK>>uodusLeo&^%QFywxlE|v1+m;c)!{rMk-*DVBK^ZEtn$@EHg5e)i6|KO6Ve1WL zG^|Om)W+3Kl^OIrgPzN^qN1BcW0c-n#`3yYjBu~H;^qR^s#z#`Kw&kcPqWs-1M`#t zA`64|E93}lkfrR^N?u8I^6v;^htdg0ELYwTm*_;@BD^-#`osJ+jQUcb{PGa1gdrQ0+XCS^r@@*CCAo?g zqYhiIGiu$*%4k8ZL*q7r=*iZPI1!hS zw&y4cW7k-xLi}E`k;agiOVw1sWmLTO4G-_&j1D=jl=E9suN`LHfK{>?;BT^>IP2p56<$WlNrhVv>$4ZmD z(TWo$HM8h(OSv*$Anb^15Re88?VD zmblz>g@WJ@lr)@EsjLuLJS;e`oP*#<%S1eIK}n`<<$q8e#oAZX4Mg{1_^p}c6yCVR z!>51He}^Uf4-OWxfFZ!s))qa)&yafqaq^UFS|Vi4ltb~!M1}UpAFnDl7GMr;Oi`kt znP@F%9rEHW(Wsk7eu|1El{=i@S&Vi3566iDuF+ffs@1`?dMoJE9Bo}1SUzsej(~B; z(nMXr`lh@W4>+u3GF`EBjbfzw2CtQ(!){QzPI(NKu~s8$f~|iFtUH$GDUtsb7h+1H zH7{TqJPsVwmk z0b5irs7$ne0ehNRyzs5=-i%RN?q3fuu0*JchPltnfK zt-lKO88#ki{Y+p(;q+_DCyFnn82ut$T|kMj{$Su{JU_GH5Uaa*~ z1>=1u(!%H{XZ$lE`;RAD$;(leM;d|A?^qi!Y%N)%pXpQ(M|V zVK?gw0( zdxZjjkOvZWSr6icRaUB}7>BG`xEOGneQ;oob-zGp6>Awj3@Qd&rGL7j2$2vg);63# z@{QJoBAWm#KKvTqe9byjE7g`%-|+&i`C=cUs?S-Jl z>`-`JppF z#^42JX(qs^TY?Uf>RPE3Bh~soA8j_4Zn4I(|5|tLRqG!dvPx{k73eGLEe(NG(rqg_ z!g-K7&q8kezO{#**ST&>fy6#^-ZwtB*3~V@iSyT`V)M*rlF58*&5|jlDP^McD}UJs zl|vl_Kcs0ULg9EvEl3#e7>yH0Yk=kLj2Hkz#%fyQ9?^D7qMdP#)|Mg4S@b%=NSTh0 zAj@czFlDHt5y3fW8bK&lY+({Fhuvx5G<3l!4%;H8TaugUr()P$B7fKc+qrCKm`o{G zX(|4&z+s{7^Y3x|3^xVYCdq6$mSsn@Wf(Qp{v(8FC<5;_8}UBXwN|IkQCS zcUtZOC0gZ2OzUiWU0}IbW~ERU=GC^>!uMC()-mX@!^Tk|X+2oS+G43r$@VT)IHGle zt+t4D``fNbRN@#dDO*G+7;YO)b&kGi|jSLyU$jaVZ*65QA+^=l|CM#g2!WX z{gIODr#aQa2&ooE9(Eeb%Fkk!ZT z<(7Yoy$-%eLk*~GNT)ExYnL%;h)u(=-C`TT6mMYF7TZ~dA1t@E71(yHDzLrFxO8F# zwgakm5Z+Hx(PN)%+Yyny301po@8bLGZLu1H!Lvgwl!SZD_J+uIgQbh@MZBO_$UGmM zuvy`Himi4)Ku7}miLpIk>0zq`;~3i`*c)!wL2QZbHO$Yp%?QL>d!Z_hYQh@svaQj| zRAv0tnCC1au~;g|JBi8tP}?$!JJ3NWe}SG<{AG~v{%+e6hNsTj zP%Tp_@)rSeQt#uv71K{(nRa!PHru~A)nFNQO&*|OE_IR2O&QIlcl9UC25 zPC$;|UWS+N+Nj$8B;?GrH-VB6trlMS!S)5(ey~*u>=gLEu?@$RO51kP@b+lRzm6Y2 zT0cAn+M^)`J3O+L1?sQAp2{UTn=;pCij9hFYS{Xht&{G(q85It#r}Hw|MG33u_f_U za>&?^}W( zzM1_7H?4Od>XL0BoE~5|fwEiQ46;m=>f2J&ZWD07+CGpGuJxm$&>ncj)*Sn4?T1Bn z27IS&VOT5Nt`@M7*-pX#SxA1t77Ts7Ip1tVsRurFh{D#AWnU>{*ds=d2_y&Kw#WrDuS zSExOCUi)A?nM}uJoF8ppA`l3c^Pw08^9S0~aeItCg^(~H%L#$MwDwY{=w=Ir8)0?> zTH4qjaa`=;Rof9f7HjW8xENl%Zi{AUvDpb0{=S2qie@jt#jkDQSih59ual`5{N^j* zJ8WOeH^8ffHT-SiLT~#d`SOW6{x%rb$NmnJKc=rfg|H$U!E#A1(w9q zqvzDFWW{6c6y1G^8K2u*Qt0}o+!)itY_$YfG})fXzQXI-5sd>I!zTi}20p+2E38Pj z*AdxuNPAOmfo*2mKcxCXxC!`I7m_HO%L{AH2dB=XY4I5%a&yIswEzn-LU_Vy(UzA;i8h-t@iCuc|vc2S9%y~oBD-z7#ccpY&$)z!(Di?)!rR@ zzh(!WI+o4|FcE3_Y=M(O1$FqI3K{IDA-}Qczy!a&13@aK_Gs*}$9{~l`;eS#Z-`Cb zviH%lIGlgj?iV?DCOsgi*4`BpitIgk>dICINek@#tNBldr{T6Zc;y7CZY4xl*k8n# zPTD`!%Izt#n#lDh5LrEZt%X0H(!A3-NpS&^ex$*F!u{D1BPa#-f&C4EJ;JJ)b~}R) zFWckcX}W!H@ddjmu%9vcoc(|pARLJBHr$?n!Q_walswaZYX3uEkMZVN`x^{b+$J(0 z@=N<=_A7>!+X+llcH7_MBM#7#HMtm)GOlY8I;<#H0wNogLv2 zTgy=d+kOqwV1?E}Dk}kNp&kyY21hhz8y&YaatBFueio-^E|?=7$8fLHF+kwBnN06E z9W@0E4RX*?M+-&SbXBYIA9f2y*K}Osa9LQqGyq8b`#|Q!IvU&;>KG(4Jw(TqUPoufr8JJ@8>!Ji7NO~&^s@)&sU7w3uVxN4fn^ZZ z$w3Yz#u2V#ov?SDpQv)XKqDy_ zLHUFcjsqHka&GEr$L5jm@8})x_>RL|H!&gv)|hJRp>m8yq1ZPYqI|Ry_I;T`#r-24 zO(5%Kx|rsf=oriIam>$f_yw726KN5WQ#Ed^G1JjP%eq7IJjV`Q=!QA|Zj|4h&3CVWT8$4`*-y=aAf zX(B>;k@x`e_qy6)R)*8Sl;}1wEnCF2Xx==gMQa)}9DINBWm)C;lF%@?+16PflWMx| zQg-qdsrABKM;5D#H{+clltL{DcVg=ej*rw-!*sLExd@lN=6FS94WK}AQC)Gqq$@9f&s`Hcyy>81dm{+@RNeuVN67((#<*7E#NCd~0>$RiTaE;+x)(Vn z|2W7=b*PL?>f21dcyB_2+kFz!$2$+0s8i>X`u^UuvRVE4m!m0SkO_;DyI@h3ld@ge zIaI7zxL53eTV2j^jI5*RXQ!4*^LDxl;q-oSJEjIX-(Un#75(Pi2O%z3I%I8h{)xf0 zoa7+76PO|Kc-T1ypR9HW0;VRr`UN=ZfjLGu0eO~N&MJudN~XipZD&h{N9#FzN~{-F zz2&sf!aj1EAT-i>i}i+^yvU!_MSo(1EMCX9aQ<{oC=|N;c<}ON*ssZwRCzJ)mW9UaXsN07m3kroR+4;)2?ZhkH1CGPx(oY5@9XiZ+3-yN=UZ z0VU_yMUX3$WdDLVn{J-DW^PFGs39s=v_VNbX99$t z47Wh&Imbi(+7Jjk72Xfh54lWm;A=+?Oq%V|v=5Lx12=V{35>&nCqvz(;@OTnC*j_E|u0fzw> z%ylkiEERL^@J9)EosS@@p3MR;Wja^0G+H25%J8hu8BZ8lZra)K-29Mw5cQKg7^f_9 zj?$@_L>1lE_Ji zoQ0VGtMg!hr5CWW#6el!^sgKQ5R!Au;V(?Uq8OJ}gpgp@BmV!1Sk&4T!Tv33{OAqm zIEfI?=v_`D(@s88+utt$tx;txmZiGBCj9GfvCrZ(kEPEPOf$N+iLkYyiwb>J@>EDu zT)t|rQb6G)$s9=LiTvwnnC5W3P21w%GXE|>^>j@0xCs2_t^~-H`~{=#=rx#r+)3qE z>5!Q1NaW6hZqcQja?(zk0g3A!k1_v_GnERK|8{|ibcNhShd7n|B7|jB~2UX28uZ3Z>xAIge`y9;17awXm?nmH&(@BxR}<@K!Hj*dxac0u1ko!F;&c z81}29KOq86QuY#uv6}eq0pefAus%=O<%LI+`~xBEfpfZc-q9}p0g|ffS;CFhfnPP3 zsor0n4=mU0{TCB;0!%D`QVVTjv@F;EwHQ?Ap^`Jf=M<-5Xr8m;UrhB0FqH*9ub2u- zdH90oUjF&gRP%Y059R~w3t};xu5ixB(6`8rpzM$<7_tr;T0+?(vii_4aWwDfhtd#N zdwhi(5acWFC`gi>EihH>q(!Jm6zfCQ1&5(n>!QQgA}ku`>?vSEwzDWe(qgE}ahAba zn@BlLw{sdMSzU(&wgjs-I4y*SlsM+$T9=DbuuHLOQ{d4V@?rVc9l_7nhI=M*3d;x! z;yub@opf@`cUl88EGJCJd6i5`?Hq(LwOtowwi0|L1~-Q8bG8+5U_;k_##Zsj;A1Rn z>>`9~H6&jMKZd8GTwO$h`;sq(6EYg(x+PL!SV63qib>(l36z+wDa3FAWJ5s$1ydy_ zC@LugR}v(gcWfm8?Ha5W*R>pj(OVs_lKo$H*zs^@S6@Q%AUQ>hL)tt(U^rq0_YTi@ zji}8c;b@e3& znNk+DQeBheO>g)255d)`t`|i)hX~mW`2~UlhZVS97a-*qgDvlfB?Q_BQLJ6E!=MWY z`BiRRwJEfwC4`EXXqqgm>n_>g0a2f~+|`3K^cuG~+rJqutY&UD@3aMy4~dO9o0mnl zm7CfY_%_G24$c<2{=~?aT$dSDp^>q&mGnA|T{hWUqF3t`%9ml|k;(-FGpiWS*TteWTCMFGZ}O;3Q&4-%Ra+wury8f}Jh-3`s*hcZ!wX#G=l`+ZK}2pzmaD5dkym3Haw7mxd#lVYldUUZ&Dj#O zV?BFWUYIAJlk`epv{O*(mmYFz^kVTN*I7xX9rS);HAz7@aTYoCdce>B&&f_e9illlF07pB*8kf6{?!ALe{dD`~b{eOp8whUqU-D_9 zF2x^J~-5cU*`kLfr&8e+bd{Ty(Mvchkx4BZ&UN zMZZi@-%XI`#}HlRnu`k>yBBNN1x$%`Q|;hKE!?fuysU1!m#(MAx^HU;DohNkOND)% z+{?85hDXIX+OynULF(-e(Ourq%THU%-eCT$8*GYm)C*uIxVyJ|kRX>6u~bSo!4m{2 z!=)`)QQ#?KxU!%7WyY>RSZ8$$DoyZA;KyFNX>v;44?@3oox_U*-IN>t3`)QA5J)z} zO(5Cluy&1`a=|0qheY-T6irZ5{GaN6S3~Gv+86F^R7y2dx(K1Qy=%CJeT8Y)+=LT$ z9!!@i3f&$ms%fP?0@KfL6;tQ9OVpG-4a;)d1l`R;js0UK)i)!bN$1B3PXzAry9WoZ zI?G>^CRqDn;RN?U0rxI(4`Bo&`Ubk`cGWUB-LAR~zM<}B*m9NoyhwF)1!vWDFk!cW zaF{7MZV;%D&NsnJ=2qEHor{|`xF@OEU9k3Z&&8ze9+vb zc^Pgrl4|0{eD`FLeFxdA+}m-%Tb?0-@aKDoU+Z~?emg+j5>Edl)9*CxF(lAA=B|4_ z<{$L53|Pi}y!ptJNF|JPDH^tgdz#_={q7}<{Q%75c>xZ9CmB*dbFITZMQ)>39#1#S zEY<8ceO89{)iF1vFTN$YRzlUA$^g9aj)z~6pXAAAd9x_75+!=e;KoRG;OJZh<)_q% zboTL3wMX`8bvkB+d*5M}R#DtLHj8Q=MQH;0A(WS@cS7nL?i%>s8F!q>eu9h_ByzCl zxD7sns)rFvaplME*EIZ^%C|iOL?Nxodh*|kY&H2o_DM+x{{%V$_%zid*Px`9{L8@} z{udJ@jhywBWEuw?X>}vE(O9=c zCq~_NeM}y>T%^ix75U<{(cYvZ13XkmD_~kv-mOHTiv#2oS7Tqbhj4ijsxq8GsO&RL zW_V+ww;5fhKjP`kis`DGMAxDMf$l$f=f~^EA{7Oz)M{jlJ%@;$DeiYDv`AGi^p3P6+B=1+B)p$M=u4PvJrb zPbchV^fVBP>wAVt@?`SU^y_Hkjh?M7{l1gC56|MOjTE*|;$eG7C~>;AKuaISpYzd7 z)vHF7bFYEqH7LFsdDl}1nl|@*O5kSBAonoL{>z$?U8W{_-cZw}&5Q}2wPL^$3VV9`Q)y<#6x!w>zl+)%APHCY_Pi`GC+UD|Fid-$ ze*Wa#a!-(e56-%y7^h?qK}*T^T+28a<&+D3PrVQ;26-sHCN%p8*ZOK&mQZ*%Rm#R6 zhIw3!|Jd0)KJ~kl7D?*t8C;y|IjWZE_g*TWopAmmxS9m(s)LTT_R|fhhqJ1UWjU88 zT|ie8UdoSf|5ggQ6@6C|l4nX6xLf`XE_RZlAp3$yxu@^tXso>MR+!w3It4@0WNjhe z$scl?Zh&Ps-B&0#5G4)KP>PXy)PnP4y>p=Ho9_6$^R9Vt{Z01=#V>gXObb~^Nd82$Lqe4FH4w(x2%>6wx*-vE ziS%8N4A6b8=Qts+ITIy91l^ixvho>RQk zko^>K43i#tErMBwz8S$YP;%j`R+se zJpF@*suknVch3C_InF%>GSK+$-YcA(c+9x$sU^ZbySG2IZ{}UeAGU|mPhEC&|LVD~ zVTp7C@-$_9rV9Zd*#UB_QVgDo^L8Xm>>jy9{!T}%O7|S5<3$ZmDrBvt-&``k@9qH) zI(awquRB5cJr`BD8NF0r&>3>ZP!5os(R_v#`wSj|&p(KDf$}QX*1)`U`rd2TK=B`* z9+2A4OBL_~v{JFhyHm|?wmo`g@LVFgfJ72#itd#3q+fN)dMpO>&F`5TosK18L?>N^ z&C+PHpfcaR7~6m6Aq*}w-5rQ0)IBNvqi%u~U%Nvowe*iL{U3*j^HiuCy2~9f835QTaerApeZRjXk2hwBOTJy6-uv@}E6{E8tXU z-p>26+>J<2f}&ihC%2qwRBI9E?LvSp7wtNRd5PYs0_z9LW$|U4*U7t-7ab;Nd#Ln? z){ySY4Z!5}v=>yb;8v{H$4fQk1JSyGA^>zJd%YSq6QhTCFNktqnr#SXM0qxogq@xZ z&^*OkMkjXPa`!sSOZ5^GHViUadu~CYxvmw{*SNFE8!hz?z^}%8>oGPQ(|!=?0^Guh z-YkKQ!16e$h5!{>1KmIQhv0YfRUZjyHOZ}zqut2(Of~U(hIgV?o+YV%X;JO7_d&ud z-qZ46dLb367Lkm4&ht{1Ck=d`sWUM(#xtKshw9N#waQIf?IQ09k&S`U2(rY`7t|ZE zY?+tPma!1FKx~51tGws5GTrw3p19&i0(HefQ4)BKyf2C@9i@}r46Qs@QWa7` zKmYB}V`seebT4i-`01A4$-jSDlb(fP_p{z&L8c!wQ4>H(8ybY*|7q=8z@nfEEIN5c9RbNVm7DxX!Im2efvTRrTaO$>2ILEChbSadX5E(G+8;) z$P=t`wyQ*7OD-l)HVIF%%K5Gy<{Qvk3rW#k@x0?^QRMfKu8nr1Zl-=Cvzv^G|NFHkzUs+ec4>nk|d{S(TK z8v(<1Bf_?f(qD7|>MS=d<=-STko>BZ`GJ9ln8obb=uRhyh;YuW}amWb-He}6F=ghMad zRUT7>NtN>9U7u`P4uvDxzhVhGh>{zezD)fTw^V~3ir@WoT$Br*dp{+QVZ&ZLj=-LJ$@Qq+YR9g9z)dA%6vN8;HP>9n z+Epn*Y#H{3Jwvb0(6f91tj6z~tgI$-G~9|C24>J0!RuJrF&_Glfmv#NdW)5P7WpU^ zItyIJl&z&FSGbC)@w2Wayi)5~*%y(cG0-Qvo}|e~phx^+iwnE{4W;?69#n84-cBW% z3e1DwwM4N|+gz*d!bTPt<=Pku4?qpMu?`UW3Eolt#2to_-&rJd9CgIyl6$cKCZKvEtok$G$Zaf|#r| z;eG`ND zcafPY+IlRM=au8=!aON1v`I{*l>S<^IMfK1P8o(ZkYG13q4Pl5w$gzZEJ zC>TVEwdyJ#GgGVbaBiP7%R~{~eUbvqoy-PrmNo(Ybg~F79-Z3dZq07#C+~v|Mw@V9 zU$U5iJkwSc;pC@SOs?_1H~e19Vutefy#11e+8&S$r9d6!>tZ4sctF~Wyo1R5D;6`- zNLC$A_BF-i$#7AcFTzFXG>aK$d^{fh_zjDh$loixVkE4nY~QxapegT2O<950Qv$1m z_fXWArzDN42w8te{%BcdtqbJQ0(-ko8U!9vD5dk(Kg041r4=CI7BQXfI_ys4f!|a9 zYzZa>E5(V>a)ZIDmdy+x zWS-=p+6|&E{K)c`7`f!|T)K-eA4`?F3eI+(@_Ts_DYvDZMmeY4R>0NDE6sF{iHX7m zmQ*5}P0aqTctwB_VE#^wTK^Kc8VAo`iAg;9MXDq@oef$lzip;7dqmOl6O?z9zFo{< zUH6LEll)A=eo?1-n>&$pKOpYo3cD$X(d)`#K4pHPjg93ttp6H$D{2w%Hgf%yN$cd( z$naB96n>+)18#+NEtmIV$bBw0iOfhJ;~&oz1;0~So?8zkON}v1WDFC3mKZ}T&V@(D zA5@g$ZoyjDim>ATlPV9$J=v%o@+zD$KQ716hV9{Kmzh+-3sWwIt8|4bm!P|D*~>@S znG2xcDpf9(VHsO5zHbKdS$0Uyrow$<9DDGv{2aP_XE-5X&(J{Rua;|=C)@p%i4I*B zI|&gGND2%vuZYLYf{^b^YC7BNhp4#7t7H+?N&Ra-LAwUcxRXN=l-% zp>8e#?G~yS>4sW9S~_BeUaqcA#z8}@^qpC-G3gx04@F5fI-e*d2zJ`|wv23(c(x8E zUE-B1>>=@%wL2;QYd0$QJFi^SOL8+?2Q;KTk_269NwuP4XM?WrzHFHzCfFl0VP$5I zqI9>^?)kyWca%F=!i*G@P1ukAWz^ap%_NJ066!C5!!7FLc2L_HZq5emjVM1;!q{*q zd~CFrM6PKwEBvTdLeDoQDONelE_9OO%}}P5&2wv1Fic8igS$#_1&Cu(63=&KpD^W3 zNS)wrj^XLX@Lc(z+e6>?m0YkRtV~nTuZn_xRr-eG0{_U%(_XK20$N(~ur8^}`=De9 zC}{>v2?g8cq0)XkOay1XB&lq`tL`mejOntAJZs#1d1p_iU5R2(E)d@3+|ll$xJj~` zJ{LtFmkQxPk#@;E((euL67ACY`;~@wH|=UJ_N0pOVkFBgkZ_{mp$u{PmDSgXbWUDeUb^R}jHr6A}QwfRkorFbHgk7T|pB&G+A9la@ zFOd*0=v3B6OlAHK9!%Nl3*iJ_s=Cfg70I z89r;GL1P+KjYUJ8+T?~z>e^6BYs&x2qp^X%yTQ(tmLlx3uekZ{#@>eVO>!3HF*jUH zHuG`SmM)GI0gF-NQZ~Jn9lBU7$JKQ0z1LSc}TPovR`UJ zAI%bxCf0aAgcu#T06~m+9-NNL9}uuyCyG zWZjQS;D?!1wTNe+7+HRfB8uE%0_*PephvIE5+BSFAx&_Yy%+QMhAheD-m;J;=wHYX zEqhkcls^Ddsy+`KH(|56F=tvbVY8nb^sF#<(iuoCuSNu5Or21a5AWEZ!)$)8fBSN_C>- zU`lVE>kv|}iNNmY=lY?a~1z;8tnU;A*%PL$eF-s5fybDxvnH)?bz?X*cc z7amP053G%gj&;VD5wx){zSM@?&6sjY-eUyb1v4;rHYu&-rd*D!F#<=@AsywGr`{w* zLgvsUw}sT^X!kFhOWGDmfp_P15%Ro2&?q|8iqqRlie{-6WxJ6XycpY~ST0N$gb7+L z52&9C^aeB0p4NO|3uI89UFpocu}XMWjiJT&xl>u%Z1<;Jg;nF0AaUork8$nQp*_XmnF!E_s$1HMrjpBMf2$!*~+*#d0UA7DYc7 z8sQiZ(20Ba!oNXsgaaRh$Bl$p_!bs4tv9=|Y?(|o*E~s7-dxPRAwZrsiYTDAefUh- z!Ha-to`+B0cO(y0x8>zH)e3Ul!garBMveb_Gmr84mNRQEp7ts>2-(dezJx8+AgI(N>xx`pz ze14piX1r<7@Q#{Eic7>w?40|3v*`&x`R_x8NBrvPbVF32YoFx80^NTJ-EW=M-ajFd zdi>?-&BX(hgoU(m4A1Wh&##D-HezSWHGxHWwn<^JR7@wfgP^L1I8(NG)|iDLmktPN zkPU0hrrDWPb{-=tYq)Fy>+*ng&7l+f5vlqy$g$67VSxY{fwXh!#37!xK}H~C9-XM- zAveng-1UU9G@ni!!I#*%VkCX`jM)5!lvr+jeu_?f$`dw73uN^)7iOr8*K^uzeP(Q@ z4$#l}F%b3>YIR*w%rz1(0F1rl=d$9k@xG9XYQVL!4!bMiWC|HnchJlqxo!Bc|jG|RJ>`^i>c=E;^yADIXu;xAsuQd$9LR)(F$ ziv}G_NZlsuv}-$-NG0vTXl4!c%;wjC1ilixQ9a3ksQpTW>UwFzVk1Pt5D)yjqTF#n zVS?lsIMl<;WFG2?qrA-?J1HyV6sli=glG1PNk$ke815;>H6m2q)a|GGgODnNMtZj5 zLJ6*5|R zCU5033ha|n<^7!U3!uEDmD|{Lj51QMqUu|aI_oTC$>`Z04D?s1=6xBrjQl2M^QKE= zh4Vc@t{aQn;ekL{;DJC`P1Svos$>9KwttBSijvo;dH@f(&26P>vxNTy&Im2iOrx0B z>0)oUi|Qk#W^~9dW$=v!o4gck3l6z)jU|Y_mm!WK$ajsqsZ)ur9{db;)VhHS@4@&o0M=v1ci)3-=yqwGKAb34%IQL-wa^76)DgO!-V1S8c3x|kxN|F-e|E2p@&kObAOQ0MCc z=NTi~Myh@UCFUHH(X?p~QHOk7DBia4q zr030CAQ_)`vp~6#TQ|7{K^A#=nhF-!%mYtMMptZrl%fxthj)RMEU?Xp4w*!dNk-xC zvA_-*06=?4dq>+ z-UxvpA_yX#C#+_HOFZzz2F}Fq3Ab|%3;b@xY}mCJMSM(wE1dcEmNCwcYzcTc4ej{; zXaER5$^sT1a$P1Fq#k1dhY`4kXa0CN^G{eH+6cT^Fma`({Zkf*HNG^+CL@pIED+BF zuWw>*g~l$B#6wR00cLyl2<{s=wGlvD*wWz6G1u|8GlLnFJTXp6Dx20TLWr*ImOg7(kW+u%EFu3ex9jb z{?0`ZK?F79dyotM&h04hyxfhY)r#R|O+8c7cswqCtne$gUu3G^$mnc1qo0`CfxqYN z6dQ3V)KvJH1qzK;Fa*zzaI{NI?P?@zXq8_`&2nF5LXB)P3%`OX^R3HK8C#d%aGq`? zzggZGYAE>d4m9$xhdbmCQghv-+1Og>9$_t~4&@)Oixy)ef0=5Ap)3BervZG?6{e2l zaiNWZG)oMtf37k$j|YN*8lCwUQ^y&l$>H~FOr6NzuZs@8;BiENw;9AvMlrShxKwK{ z@uK0*7I?>#uq9c68@!3B(|FPgQ{6mk2dquHFN3eydGmR26jS?MJ zn2q9{%Lpp$C&lrkHm1(zaVolnh2!(i zl~FJm?x3u<+nQP<=2YT9e1YDBl(~*bx_ls}5k1#csg9aHcfBvz#2T^SgwQ}m=dT{v|0<7|*tXl10Rl93S^X5aD-Km& z;fp;bj_Pk!Je1o{>Bc4xSFk)uV(Ht|DhR;AO6$-_#mcOC%3mDhZexGt9;zRs+{p{K z;jC^jibhe1TxH=9IVmunw5c#wE-6$JO`(ZOa+m-_8UUZe+m(K>1G!a+<;4vo(7;{y z9B!(~Roc?YF^U%cfC?tD3&WH+6FWFn=`29eS2I*u%Jb3)dHqUx6BP?PKSF_<1<33u zgr+H}H|n~`#Ew0tv=Ia)OcJVpi;32iDlnTJtaRc3#c{fO3!$0UDO8rK#=(t4gKepT z+M_IZ{S8){hh{60^yyILxf{htQU40n%U`kn9I5RYJPPcuW$;bgJ^~_4b6e0IZI!{%S3}Zc^2N#Ql$~S%exM5FT)mSs{%`} z>m&t2%avCA&BIo1Q}V#lRx4gA_(I{U1xHJsc@obC5RqflNLI31Er6a`P*+m^>&hyj z6|=12V=9dTPhuT~d^Apqp+a@E4mTOzYmGLrhsv)v5vuyVLCV*H08h?BWh`KxRw*wS zz3->&`6>qcQ)&v&G4g*Z|BM;r(SSM(ppg~I>)aW+Zk;NFm5x;ZL*+Y^d7S?CSlFm; z)V4$ou&Ey?i%n!cpx``Uuu{v=f=+YjumZIduRh2;#8-6=cqq?S#v!Mz%F@tL#X+{m z@fj39h1OZ61VYCZgDwv%ys8wUHD1BoDBPt$W4u%OljqQxvUe)u$-P_onhmT|aLm?) zse_eFZe^_OGlfnoO~Ylz*6`;1B1&z<*8iXYKFxea@$#agO`N?6O^l;E z?~`~=Zn#w)p-bo@UIkvQsWMu}==DK;z0vhIbt%<W;pks9G5rvwCJVh;)*7Y4Oanhuy7G+s z{MRgqRd1RFyt+Njp?I}n(t+sz8l~Ks(E*2L&J+;6i7{A?8CAOt2zf?nb>Y(bQ&t}p zaQsI zKjHpEu$c^A0geCHf_LnbLMT^ld4tSt2AOwo%HX7TeQa1m!&NxJHH?jJd`QQzC$_1^ zw$gDYZ5*h)Ltrt+_%Q~>d|ry#Yx zzpBP7*^;*%Zk5PUR9=zNV}M7@xX@-T8*P)&xDK5K@lw;bi#KIv(Jymi+g4x}D{2 zQs2fEzf2jd0O$`)rIjhPS%t4pLvtEhcSpg^a(ahqrA>UyfWM`(0Tt>tkYAx1?A^mE z%9JbZFSOJQSIiAut-X(QsYH56HbdO>0id71he7)vAk(n}e^Zy{SM0_U(c% zF=J2pHHnff8g|@&qI0r5S{#*pquSZY(`s`wE}AH_X;4(0QK6`qNwwEhTt^cHaKJY8 zY69zgP6e>h6ErbOTS_I(G#j-Zu0^r8>Q%tJJV_f(S_(beSer^$8)+`egL4I~{6V#` zic4xQv%mrW)N4TRL%k+YxkYm`-xc*suKg^#tcqJ??X+1arkXmG1PZarl!W3{ndzj-xI>qO;0Kw{q-ukAFO=5?ftKcLr* z)_Ln!^kwx=s)r8!rN+<$O|+)e_-C~VqanaC|1y*Q@X6S0l2dUaOZ^-cU(nAeq;of;NiD` zrmH>C$a(#=jx5+gD})*oHx~1(N@#aKO{0|^(0hw|YEIU*D@t-K&geKkvqOgtxLZPN z%erJ~A8-|BUVjZX1idvV<4b}1rKQvKTeN0uKtFApSy)2V9<+GXyH*?^WolNII#7dk z((|-90|j8z*r~Rs7RfSmwZmq3{|Y%8v|K|qXt{{K@2vqLYPbf3sHL>{b^*tvBegx| zs295APtU)1QvR4p<4L(+i!UuKo6pwfX?JoBW#u^SVfN@a?P)_fIbI8~WfQe~p`0vD zUzb>_yw$pN{ade7?gN_0A|KHHFbOY}PI(9>=LOn1s3uD*H{<_l{Qnh9eNuZyV2d8r zrkS9KZ1kk|EPHOIHU)~v(z5LdtoC884EIVDX}8&+X-u!sAEvww`bw&Z(L09LV~7=2 z>WS3mE*y&2OEFF=*dGJ<&`Ldty06zJg*NJmEbVFSQ@HW6^u0Q_xL&Bi;(9fye?-R9 zq1n2~+Lvg*+O05Ut#a}`M_=~vQdG>k3an}kvnnaso*4nTkhj|%Ws6^GLQSE3wmd&r$_Smh!uigbPk_GxKR&`wSo2_pn;WkQ_ zQjW6YC$&~)7|SjGRPRm$XX%@>{Djd$8_` z$P+5?bS|LiOIk%~T-L9%oX-StYm{?#5XSP(!r(wWrv?Y$IXT!5&q=|)cuol3is!gs zZ#>5Yd*YcN%*JzcFbmJSgFWyZ66}s=Ztxa7dk1l^m@_MwiD#!^2RvH_+vAxSgg1w? zX|OGxk-;{2&TmoFcr^B!4y0%1buj(33~DTI;i3KWl+WQSWv;U zI_SZ3Ul34EjvYY}&;RxPl(YW7UQqeJzn^l}RG3T|7gXB(#gp-WYB9HePcD7{=2 z;kEcnF*M26^TjY-wAL0wlVLqlJQmM=#rb&dD!v;}Ry-2V^5VPjTvN;uRF)RsiRa_R zci?$nF^7d2TO7di&f;7=Z!bo7TYDD|M!#BH7o*p$a`A0=O2z1JYeF#(Z(NN2wni2A z!qZxeUbjXRqt`80i_zOa|pLsYh2$3-9ynEas)`Z%^fRR;>dVJh3Cf5pB{ z)7@r(F)BX&cB-8tIAMQmwXiE&bqj2}=ja32rgS~PaT)XH0CH-PGunzfADcMfL!rL{ zaK_S$=i!afUB_m(AXA^jrgzb=TCE;S#E;_{=0%i=1$*i<1?xdn;A0YA)1k=d%~Kws zqEY%m_EA4Q!z>)7&}l9fPL-$>5T{Xq58F>dryg5^?YmUj9CQNZ^2bw&PRI9mcb)Y#j!?6_1#bSk_xQ zJW(2&WhP%G9;cd=6nH$0)H@o^*L!uHHP6#e!ugsOC+oKZ_E&!mm!;pU!wdf;`PXZY zQSMdE!ip#9Mds))CN%u`{eHSwqjjeG{(39wu|@CCb{6O#IjyQCVqYIl*CZhp<(`9{$Pb2sTs#&ew9Xh0K!1fEx4~)f& zkzQcTt<&La`y;L+)Zlhsu0yYk8%oCL*j4B0jE%gg-wWgY(ijT^*_95#2g?`zeAHQF zd6CyX1Bc2-b)8~8`UomX)fsf7$1fHC-pQ+`ca=wEAH0)Y}b$aY=e9ML~0tU zU;UZhACL=t=+@V0U5qwoX!F|y+I~_u_Ow5ltKZF$A#Q+11!#?&}l@5*|7tM7zE<58_>HBX*A-BjrVnQ`Khx)#xR>-6KGsj_OC8o!$oYGC5ga(u@#ktw5C;GUjn@8G zp%u771yL@us&Dkx@JDPQpe1|#2Yn>>mc{_ZtwrbbQ`}p6@$;B*1@(F=YQ~NFe_V$D{1IByXbA zf-|cIw8+@Gjz;XP>Ww!EwvgA`+lsTPXK`WrG)E^^eV4_}s$Pq2jg8~$)^$K_^gbjAjmWlA{3k@vgO70c5l84o*!b zvkmh8VY0@dvI#V~pfOMdbG=x~HlsI(crkf~dOJF8>2RRmbT5yeL9gEJU1LppQ4ady zl;B-2SmTj2nXc8_!Orr$U}rAY;}?6SiC&!G#ciiHM-(Z)+qKYWEur+$V_Ip!u{P9o zgjPgr=Xkk6vlDlT-Y%4|B@?}qu?L*!ZBjb`!&5=c2J_d?#fe%eTex~7Lg`BOn_X*-C@HfMaErShR z>jmVcjz&tO^w#EVPUi_+;jrF&S`b>ZvSk)HlH|sihS8nNE%BW0OcO>{_Gj^*{fkfn zp{FRHc~`*_vTT*5DV-;86RN%%kL|}&?-Ur;zh>b|5vLy~?g_0Z?-TDZHhYJ6mRU$= z!q#R^u&_}4d{$8Aogy&X9`99)(Eha}@sJ@a;)io=kH+l&54=lF0ya{s;uR`cZUHvv zr}4PS1YkK--UeVnqu%ze;_d3A>ObN)a}s|Ma2@THaYpCt$SU^5mkQMF zMej6DJ;0-q?m70B>*`KvutC>5WJG(HUvRMv} z92yYSma#_PdVl3t*VeU3=y-#A;NaZ-z4tW}_GA|~c^eD=r1hqL=gkQx=m=*wy13O_ zKwZhZ_XgbyxMs%Loi4uX4R91F<)5^#{CiYLMh$zgi@SJXMooai7b~zHe|oput(lgH z(m|zyy&a{Sd|RA7=Zy=3qc4IfBA>4$r0fkKvOy-UD?{gXXY2;-f(&)IK8%HT5DgO z3I4oOx+WdG0nPKgU>e*3M_EbFnknZ$wg-4FIW(nr(gE03nsE#EM+q{scJ^W8aSPj! z<;yikV+HBFJ+ou`^md&(0c{&|*5BJV&?$6hPYm*n60CQw(Sxv99_+i%I&`rw*p+f} zeC1XwOP#~$+4;CT>&w=W8cZmCdtpM!EJJ-z4BWvi!};Ig%rcVKeMD(ZDy#-iJ0eT- z=Gsd~KVfHW$N7%h0dM%sINx;k*d*T*P79ps;B=Odn9kCs`;I^_xpju`M~jff&d>D4 z;mX>rg}xy+YqljK#QV_C=Fjy#0wlw&^L_CGNBw=~E+hE1r+imz*4~zg`FG$w1;7$M z6S@M)8sohMTlt)CG<1Ypm-tF;)?3ku4 zc;`flHCb`#%5q;*yKo=HjEEn>M!o8T7VCZ-sQ9KktbK72Z8&AgPM?e6ii8D#qQu1v zgbN-vKlWWV4l4j|*SdL83<)Nitk^&}r%>4)CXJ<3_!6Af0dOO2 zjtEU@$OpcK&gm~WgZ(WLn-USEkn^B#n)9LOrUq}rwd(g8*{nV28zwX=KsM9HkG(&& z`Ly)rxN)#aQzjqwK{@p>%`CEm$5;CZcaKtb*Tf#wdUbNe>*mjVW?=@ioaDXsDD@j1 zkL7zKtCNkc^}T8r9%p6N6gcP2{L|MS-b%J;*2|GH%9v|2S(!8CR{(ER+G6Rid|MPt zIPW_z2v4xGMk#r?;`*X*1$Vuzdp21H$NSQ}i`D(&(@erFn(~_&s8BBfYG~F-8w}L0 z18i|b9t*9vr`*m^;4?PIK=?{`%Xr;HH478&;BZ$slzGXNGDfgIhME>rozH?xX#Z@s z18b&tn!?-ls11l?|DE437$E+m3PGnW#}ZMJok2=kN>6@$y21tb(`(uX0pwbJf5urOdp5}u->!%o=zj*I$`+0>NSDC_N( wh~mCfk(RQM1Nlcg##oAk;zq#$+mV(MD+syl!`3Mat=1ukmh-P@zk}lc0~#(u0{{R3 diff --git a/test/vtab1.test b/test/vtab1.test index 3d2e233366..0934ef502a 100644 --- a/test/vtab1.test +++ b/test/vtab1.test @@ -1558,4 +1558,18 @@ ifcapable fts3 { } } +# 2021-07-04 https://sqlite.org/forum/forumpost/16ca0e9f32 +# Yu Liang crash involving UPDATE on a virtual table with +# a duplicate column in a vector changeset and invoking the +# query flattener for UNION ALL. +# +reset_db +register_echo_module db +do_catchsql_test 25.0 { + CREATE TABLE t0(a); + CREATE VIRTUAL TABLE t1 USING echo(t0); + WITH t3(a) AS (SELECT * FROM t1 UNION ALL SELECT * FROM t1) + UPDATE t1 SET (a,a) = (SELECT 1, 0) FROM t3; +} {1 {target object/alias may not appear in FROM clause: t1}} + finish_test