llvm17-doc-17.0.6-150600.3.2.1<>,ԉfлp9|vwB 7E[df?釛rp!E&jm0hY+e %#a3=_ɵ@SF? LL 3ɿ&ٲ~!;1gM:\|Z]^Ӊ+uV ]?;D,3~7`4'@m_N P0etoB8f'rٵC4GZ ՛>kR2!8A= ; 7OD~IQ#>>ͼ?ͬd  ! 8| 17@77  7 *7 ?7 K7 7`7s7݆ݬ7&LTz(89:kFG7H7I7XY\7]+7^bc6deflu7vTzI\`fͨCllvm17-doc17.0.6150600.3.2.1Documentation for LLVMThis package contains documentation for the LLVM infrastructure.fлh01-ch3bSUSE Linux Enterprise 15SUSE LLC Apache-2.0 WITH LLVM-exception AND NCSAhttps://www.suse.com/Documentation/HTMLhttps://www.llvm.org/linuxnoarch|a --m': 8l6u5n0jLOE:c&&4top9SMGNrF>H%)C'V9A=EFq0Kb&z65l(2$m4`[\v9&z}ELF~~?93:2*w4'/ B4)12v7M:f"!|X}}vn}1#.2dTOPn!g0)[3-'.R&k(  6x*!%&6d'ZpLqqjabVtw)0$t0HC/5yJ'*! "+e]   v*l,!*/%) a  {ee^e1t0' HCD^6Gy4'!3D_ v*l#2/w  |{ee^e16/+s+HC53+'C;212'"`[\v9+L99:PWwK=2"##"'"JJGRe.3YZSFAF~}E@9334S3R4SS22125'"`[\v9L99:PWwK=2"##"'"zJJGRe3YZS~}FFE@9334S3R4SS22212%~2T'RMNh9 > v++,BIi=!$'wv<<9)CX|nJooh`o2b_"}FRD6w 7b$j3zc>e>?ob,ix.A#_/AT`gxCcD9a [Wo##OK2s3,4B !=,MU:9(00QH2'~l A4Ft)+s`:P7*1W!<(jB[g1;?jS$ez^XolIf4TxLZ"ZgOo(-?inwZrt^^?N)j L`^/0I3/=(%/XcmZY0GFB~WH&]!x4>AfAP[-yONE/<_@w, )l/ +6"rsTL?*1W'K@,| KC{f+[Ur0ObEPl2SW;mwi().,ibCQR HV_Mr"i[>Ai`Kb{u\v$:LZ[DS1ZI*' Cfl[_Wv[j5-f@J;g[fbJ&=/2g.ɉf[[m-V1m&lTvRwKzqMfo~j&rX!@gX0I+*jnEeI[]s_X1DGDIX,bT5 b1`V_j;kMNeU-E-$:xI["&ZZAI,w$? yt0|fːϫczEr~{(\,(6A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤fжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжKfжK950198bb9ef00bbe8e073502d59151a5583919c3d0beaf5820b7dc5eaa5abeceb4a2e0e1e5fa4e018800008c0a5944d76ccfa879e7cceb1b9e1efb659dcbea4c9ef677da3db0aa4e9a75a6d97b697035a3be39723163f2bd35bd9b5101059dd41903ecca342b0f2a7b6cd0f54bf1afda7b446f30c825feb90ab052d246b91c67a089fcf15c3bdaa42d13352ace5c5599cf2475477d0fef2fefc420aa9726ff9315d74beb274dedb16adbfc9e09a36c926c0a7b6c39c31208b54c8369dc835bcbe28580b1485637d61369944db6fac5e82d38e2e39cc16fe7ca698d02a99cb91ce60fb91f1ecf0822f361d568eab8f9e73fdd35baa2b40d43c47dfe81b5788035959f4f919111a6ab200b4711a829ff6d926863fbe69444ec09dd086b974a846b8ee0db15255a5b0935ef3e3c30d3cd9f3ae797defae29cf2486dd2333fc394a8dcbc974e69486ee00f54be1ec684d7b68480780d7d225a2b6042c1ee81021be30c864fba3cc853de4cd5c7ad32bb9a4bef36adcfe2b32f05db83a1d921e88cc84b9acf247e09fd5f1a19939959b33a640653b88ee1de4740d972db561749f3c0cafe9fb6ecf4b3b3be35e868e668bb7b82f944136b8fa5f1d97f7880935902455a6bbdcf6934a9df0be8a1900c7cdaafbc058bc8695f61e15f674903e814515d6e446f1e91f7c65a6da9de30bece29d8c0a26c716d6e90736b0fa48d333a4506241d7faf91b2f9a25cae9a5874247e13fa067c9376a1e7069147ac760f87846b4e7ce87d3ef9bd665d7b072ddccf9671587a4206acb67a3993360ce2ab83b5b8cef797a16fc11da0b4b2cb7a72ea98e101985851adc1569efcf6372bdd02f253711bf845f7329c0f05c9f4eee21be7ac36bdd3f00643b90f03f839edbf7ce256e6fa2cff1653c1ec7de277e4beb98ea609c8c736989671a6d80b87e098503014701440d501d1e24b936a3ab481a3a59211464a02f5998049d30453bc2994357ae18b8ca7b6a31e663add249c6532b6b0d2305a9702cfcc2bf013eae8fd69ddf651f4864b172fb922202f5c9ace475694a766312cac4aab7328cc5cc0461db016b7080c05c00a7b67bd35ca2cd7a67ce55392ab15e717a7e0e26a1006b7f5c284232f7f5d6bc0bcb109b1822e183cc90cd00212acd8fa299bb24b81ad99cd6cdcd08bfd898bf8230408a1118fe198103e8b05da252fd9aaad8a01d42a72039b1b9d1f0ee9a6d91d4c129ebbe01457244bd9c3a51527f993ef071c658889a6e3674d4a10ec5b287846f904ea6cc257790c7e39f9ed1babd33b4e817b5f58c647d4c66d82882a9cc6bb4ac839537ceef58ad26b70ff538d34edbf0b7afd5b0d28fd6afe512b576ef9318cf434ea0eb5c86b7792ab8b202541374894f4eb5df68b31ff969b77a85984c1a8963ef1fcb226d03cb39abf6c256aeca31d2a32891b588af5316ba86255be5c894c8cfdb43674da9bc94fd81b19ebe250013d51f88d43c2095b5ff42493a7d37fa581d59f252ebea3819a240fd9dddde9a71a0ce52e37601d0830b109ae5230a0a3fe18f61b540ed784c3d0bf48de3ad0a5395e3130c2e42a44dd00576a58d507818049c4630fe68c6234b04056268af20f0e4e4af04b65197b75481a58449a8365b62611426173ea1d026da3546624b5fef45e108d618b2078023df13cb47529e38d370218423849eb7162810745ffc70930b7f5f3d8b04406d6bf4c3230fbea455ff625367ebe47fd59db90c4406832b204f5af8d2b9d9fdd8a77ca3111c45207a5fc4342ca027e5cf7e7a3ea5be66ec94d4fd121aa994738f8c078de21704d13d5533cc4a710e2ad872b2b2831aed43761dda0aff32ee3fc548189899084e415de28d759014463040aaee353ef09784ccff3aded17b862211823b14e580e4544b291a24f93baea853d3b697c49941d22376a802a17916233d63b660c695b726bf1a23d3073216a68b9447a75965b537e2ef0d46666c1fc86aa9d20846dfd490e19b4afdd9d8a576ab08fc08546b973810a368fc2143b362a14257d5227f633724095d04939e9df70e5c2a5e755cbb7ec8dc29d35893d526fd872edbce6d589b16555d465a58366d054ec6e7528ef35ac4565462f0c3b62bd916aafb3047728da612edc0d496b2843c0ec76e537fa90fd3e31b226ddf8fa79a3ccc75302d68dee9183b5d72f3feff29ff10e0ce9e93ffd17ba077645c6733de4ec45069eddbe889b0a811a4949c36b9d7817a089269e73c2213e41cde7af63067958baf8463da36a11771c82a008f920fbc02533b41fd732750846cbbb044cd55daba8e3a709cbf11ef0fb2121c82e18cec385c02b23792f6363e3d710c7cf2a37f8c48e8581241303c075fe6ec54cbdf761b14a9cd4ef5a40d85e72c5769f85242721dab69522cc6d6291ce4f41192a658d50e04c63156669ee50c4e336a331fa4ba261c13abdaeebce39af9d507614a58a6d052d074f35417eb82e14616a7ca68c1fff5fb999486f169b1c87065f18d16b34e355e24436ac9e83cea1076962bbf41c59a6edd97e5907f10769e4b6a585baeb82c3c95ef731a8dc4b5618fbf69e784d9dc71037a5950880b6bf9891b51660cc360bea7ddacd75a2d3feb8103d0a8c9f2ccf084298c9947d99e08104f2ae006db2c020ff61c8d63c555fb3b9a3b1178a2bc5a31182cec741b3c3dbe0d020867178fad1a9dfc3a60002df879730b24fc9efff299b74315f38ebfcd2889b88c50d97b692b069aeaf7fb7324ed9c58ca47090c21972d6e6df45faa83e19680f6537c9e1720b6dfc2c7e410df4257c3bc99a1f86b0d589de7d92f77b33d6d273a99efd98904d593ed464d6b0a67aa584bda0753893d689c697df0136d7bb113762a2adeacd20cb672e212226a80d8e4ff7932f8e81d81dc55431e323f6f4a24cad1771f468224a8c3b5c5eb17a2c53ce655b1fba1611b8eda1ee3ac117c373e15d275cbb52440fe1ae0ca59253f6f670d95a148ecae240f16656b66a4c4c0c72f6bbac82ecc589afe491211862f5beba518756bc6827d47acdd900666ac851d90967e5c8aa6f52c7ee1725430d17cd7ef13b80deb9e42df28d3fc7c14647e02ca3d4d72b990cdccdb00a3e8d1d77a84e4245ab4e48750a6b15c78b28e60308da056098a48570e37651bc3d5284b55f5bd4ce8e514a857f6e9a7333094bacd9d6b9943ab1070b9213a0b303eecb4a319dacc4bfb3786e065a262d6e8672602be22e4ac4e3974018d6176782a6fc598f0b55f488bdffef0606356e3f19d049ae9abfa73fc52a772dc22788e0e8284b605ac210f224eeb7e872d22b8aca08120c1bb48d776a80bc0c56a8f6ccb8fa10eb695546b33393449bc8af8de12637ba0de0ec139ba76d88a24534d69c076f39cf682f97b5146f948c7db263243bb3cebeb07dbe158b3bb1b03aec255d64935666ffeb17ae21f9df7b56323e7a2abf09e254a75c1e1e6a8ef140cc25fa158854af2366a1e9bb83cf6a8721d033b3541c8982c626fefd5a6f332445f62a4d09bca326ff389d6a62d5805abcfa3e9dc41fdf34991b0228db15a546e929cb8ba6d4fadcd2c3c697f80a97e11bec9097c4e8468e16806cda0b5c251ac85066fcbe8b0b5a9aa4d573ed391e99f0b4e20c04b549c347cc5fb999220e7b54bb2a4169d4bf8591fc99be5c6a9a67abb7655a7587df775687d0cf32384f94bcd6096fae16c797814b129f015b0f26c556c8f287ffcbc3ec1540158cbda2be5c8f1251b0126b29dbe0cd559e75bec3da682a62a6a7df32a729a43ea7d93b345605597970e9b8e30191b270bd413ea3d88bb619a76c9130e8ab9156609ec9051fc62515d506908b404bd5818e1b6df2bfa17c48be294b84b3d8f72667da1be9a3b3034e2a2bb36ff4d276671428ba8b522d2afdea4a4eca6bf4fd70f46de165a2d5a486be27b730c4dbfb75f16e8ae3ffa7d0dea65a763c05df408cfc2e648427a9bd1c98de626c9a789904b1c81f89dff37a0d418acae235f47437ab687017a6f5f3c907744e8c099d472daa25eef861e9edc756ec0dfa83f5082e54593b6b617670546147e7291466521916398d7d0180aa54ddb426aa8c1bfb8a76e0f7e878e73fecfd3d8807c6b73d665f6ee58fd72ec55fce9dda8bcb4cc28d61c14eac7e435bfe976ebf59deec9e04d4fa534aa153fa7b533a378b7339801dd33ecfe43d6b9f2cf858f3b171271c47a6eba848dc087b3ea8870f327408ea17269ca187993399613ef77d32a4cdef489363ff73716a7792088ee1959c1fb6247979f5bfb229946ed6c99129a7b76917b937f3670e04e3cd60c88831ec7062bdbd5c5a661007ab87f6dbbf91344c0bdbe884eeff9ff6a887ebdd4c3880fa2e801c9a5fde7eee45dd84082d0626d806be2c3a3e8917b2e70a006a559da4aec39dfc0454852c7d3410a78d76e1e720bd2822f07fd49c820248618ff4b5d0160e24d32e5f087200765db00e3f853e5950206bdfdb5d2ca2f7e8715f26e50b74cc612c0f48ef9ab90871cbd71835cb14393c907e5dd0970357f318d6161e436d93759063b329e549485539ad5124cc6e69de582ff1df0e73c1c7fe7873dcc7ec14be00ed6c0cb9eed74190ded5e1b3ac970560a2d49fdc7ed681f7e785a317bed22f50d6586da1a503012f3d4575319f10ac10631fcebc4e1f9f035655d433713ae955de1a38a738382b77b81df65bbdd0a45855768a1ffbd7bf5aca9121756956998cea0e0cfbc91f68e6cd7d9dc6a256703f7e0c6229991bfacfcbdb24a4be269ce622259de9dc4e45608d22e8d20038fd17724ec0d4d5b742fa3c434d1e8c15efe395f0659eb6308aa2e9cd7f8fe74153331cf3d7572e5becc42a09fd5f03ba1ee55a620c7a5d217616dd8123b0c39bc49bb2ba48bae3ff44a5218018f166303135d0be0d82fce49fd4353cf5fde971c02c2c4eb145d9717fd54bbc5fc9b04e41a2a60e259c9ae32864144b417cffbeef12e25ecd28499d8a14cefed0725925eba5b7f2762c653ee256e450489d1f9266c095a8d34029f948d95c5e0118287e1e29692d89a484ec19cdf146efa81a1c75ea65f21bd45f6921e55bc62d6031328f2d0787dd07219266fad3c4228ab55adc56ff985881a023dfe5e96d132137e0c8485291ecca676d93fc2ae253202c1a513f2a8fc790c1c4ce971987d2aa4da6c7aab8cb26008f2c138a28b12d62e2d37c754d8b9e93c02615cfe8bd005f3585f0a2325935e3b7879636fdf95ab840deca20d152cab0ad36d85cf3950b48455b0d9774d84eec42f50dc18a0c89c11749b55e210598206b308e067b2f8768cea83d6310f79103d5dfdbfec89a43f06bca3b2ee10a4c38931ac4382a27a746f6f58d95ea1831bb554328310fc8b93c6d75479a19fa37f2a496cf17cae80630f9bf03fdb259113a6280c30f0ec431c0ae1dfa25a5108095ea87f2117b19848d8ece60cc162f781c8521e1f6ce139bf20e6eee32ea2828f9c65540c17730e3028a45639fa965ba461931b2e84ec668ed86785e372c6284cd7ae90fa520d44177204c5afadd720c7f91533670fb496a58d89076ced41072dd42e198eade74b4c3c071deb6a9ced8993592ac43381a3f24eab3f2aa14e1c0c1f4a1a5c36a9123f01ffd842edbe7a0a37689e282919998d0c856380de8d2576884d68be78d8f9d941ebce60b5a45550608f31a1694cf43a6b21e533e6ba3fd8c8ed43dd8b94f792576799c30fa4952b5ba30c2931a3af629a308ee4fadd38f2cc78922b5b1bd856ba38847725aabda862aa8d52364cb0147ed55ac08742403454f42c0dc71d3752ffc21edff66b2953383557fa37bf9d186028c0f5538591215bd9d04f029002102837bcb9075d06036d3d1b6895c28c930c0850651a37251b65f0793da75987b7a57ce8dbe03e4f3125ff76e2f59fccc025f52d7c972b2371870a2db9af6967b716d11025d9a9af3c1279f822baedf51a39839dc87705e5759aa3025cc7c9dba9421fa76a478ae5f0476cb074ee9ee98b6840001614069ae3122ff93736107d1a478dbbf850304d789151673e96e42388f7431c173527f9b0490232b03bbeaf2ace2f6a83a3c7cf68d0b42ec3477209174121c63f0936be4d663a80701756cfb0e98043b3c1c3ee1241fc4604934dad00ed9a4c3eabc388767003c72de9b22275878a2025e55302fbd425afb58ec0eb28c6a768210b683893e26c2aeb9ac4d20534e66d3e342a29da9527ac8bc55d017c1d945197151727af0afbe94d3b95e4bcbf8829e9d9ed1ba98653746759c276cc9b948c53b919fce253c6da2082ef0d8ea22c66f3982403a2dcc62c481c4f5c7dd05731d50df0c90697d96a0bfb2f1f008d2ad9274d373913c22fe3db4ecd98595cdf635a59a8df70902660de38d052f429ae5c3009f7353a58ae96a378cab24007018e422340fd9ad0c185038ddeed37619a52069f2c2ff972d72b9fea7634d40a8fc1a82dc56344cacc2c654463dc3027317cfc9dfc29f7fe5e975272376763eafaab7a3a67055fd83332092981051d9f8cb9a2375e2f0941a9067dd2f5fc9581edf381daf72d8aa2c2ade85741d82be3d7b360f937459ce8c4d784e9971fe27ab025001f4656e20c201bc3ab3fefd35b450edc3402b38e4d896119a08092b9b456d8a338d1189824f01dd54f4cd0ebac86f02650271ed56e87c760f22e7815edc9e9610ec3b401971d4b9683498c40a18cf5bd919e916eb7875f72767a0f52bcc1ce7e341d48049eba4e989e9a540d2b41f130b2e1b7b2ad47bf2b7f719584ca633cc36b65b213bc0c3be2b0f56fae3852a7018b39d80bd280aaad94773f788f18d18f263c72b25f148a206501f50a22658b195431204922a97279ae57dde4323854c1081ca42d11e885b2e3cc39abade82990299b74e329d0d01e48e0d9369ac826b25c2e5eb1a703d8990201c12b13939370f880db1857499dc6754cc391dddca627276ced0aeb3ed11638fe690d09cabefe38977be0f6ba0e8d519cc2af758dbd18396c8d133681561f7322ca4bc843f3249a4bf54cfe1db62ec51781288aa8000a960a17d17e06d4ddc303bc46e514587a25639ba9acd5c727afdfd0218ca706e0dbd4329fa396c606a48b6dd2961e9cce840f84a512a278c9c7041f3b5602dad5385c5bc0dae57049f14a88d7616ad5990f6fc0aaf3b7d5743c2027899b9c9adcc3e68aa637b02de2ea0b7ae17e1922406aadcfdc11f51dcaa9295325c95444f0e3b3cf287de5bb2d157d5b41b3b55e8778a950f746e5ea0bf52a4f5d3498a80863f7c2b36d6e367fe766b25d71e127f6b42c40682d873a04647efbbf83c7d47110111cf558da881ed6d0aca2371e6e38ffd9af1f995422cea4ef01f879c17974da064b258de7c646199c4fb43cb356b2496851411206a85f925ede5a625b66bd178d03ed1fb8892179b7fe52eab95b432afcedf5f5cbafb9114ca774bcf816a20fa3043c45892219812ee77122616d8bb71137df07d2140328c7b725ff3fbe79e08d798878b6794edcacf1c05c7b1d1d455d9131f14ee9f882c7620435820de962a79db4b003c92e8bd40df78acd6b9ed8a988b8aeb20934a56394634a20c6135d936873a5d659b0749f0a585fc4ccb5dd01be802b50d4dcbd6be6caa14cb539457a97e933deb542044b7377ed5248780b382d0a42fbdca6df444b7c0301b24a5ae2c39459a8db1743cf6638ba8f703854ce59dbe80fd1f5c3ade14c4c55f959738a6726c71cd77eb5211980a8f15d96cef71b8112fc21d10d4fc6693ac1b7db78ed38edc839ccb7e037551c20a5195a88e011c8c852f89a019e3cc8deace4a90c914061bc968f92b614469e11d71a780527109e1947e5cdaccecf153204aca10c9251bb776b43a3ab4ed1c28b40d355cc39ec779c282e467d41419b40de1b9503bad052a8c4bec05c79c70cee5276fa5b271f72d871adbef6c0d8bca0f721d7faa1010f3ed22c51ba15ee0a01152c9bf989b05391721d324f504de9882583ef6a63bc89f6bcb94ddfb161159c74c8291232e2185b43959e2387d0c5c33e113a27f3557a965faec2b656088a28bfce30320eb007d714124998061dcd5a37b2887c7b9af6b4e42b75c7f75f30b2f9eb9dea49b2c02e990da172c7674a68da273ecca0ef8981aaec39993172a51a8a7978587d6e1cf0c4308e68e0f8921962c3f273f7c52d74a40810e2f48910a1dd1bb9754ff111c1a5458bbc806a8c043ecec1b7e6196cb9f32d8ce5ccc62ce546bd2a0c6549a3ee4831babc32b35ec78bd19329449a0feeb1f1c96cb95a2e86b0c4aa63acfc835c5226b812540ab5a8f1cd7b70a5b31f12b648c97cd03d2cfac846d4dd262d420a26a37664b9a9f94d7e53977605ce5cfa4df8f080e0603027b8e841692024c8504193ce01e341b729bdd3353ff757f31172348e88ea2c20933e32291153a00e3a6d6bbb3e7c0a23626ce9f1c41625e781b90253d9dd1df4e0543912f6e9acc7fed53c5a261dfe8d361cbe6427de0d750e3c218753bf136ae22f58536fbec3a7cf787dac5bea2da45b1725182f68773f6be20cbe400eaa20c3dfb07fdef475824642da9d42f3d8997df34a4de97b2682f6827773c4dd84012bb473aee17a7ca0a2c165554a9540b385c732f1d7bc2d6b80aa387ecdc6bbf5a3d64dea41ae6dd8cad3801a73d6be45400a7db193ba67290082aa8514881937b1b50d9eaa5ccf2a7807cbf235ae3a5b4a22be29fcb7e320b0f23943e776b1fa4b402cfc1a2ec14615f38de0a5bec5a7bf8d3c1535eefa5c65ed2aacb6d0030b651c3888afebce1be7d77371b45e56194697ad63b935ebb883a3a3923610d1488c9c314fb44f5f2d60ad591c7a7bdacb19674310d8a8ff1c160d55dc211eb0aa5dda1e513b46228ef8edae8e8992acb15d6b4efde72070158d24d5fbfbb537ff8ba81384a9ccd89d86045e6784afffe9bf2eb77687b77e35b6e55384b312917f90eb04d71971e2a2ad18ddd4680d52206450447abb96a587b844c68e833bea0f389cfeedfb87dd78b269a2c6e7a98ba1bb3b88f1a0863d79163fc5adc3d0d0d4ab8aac6f86e13bfbf37ad01f4bf25b175e0bd215b1fc2b0bd87bb1fe9bd9811136d830f67ec4c37041865b85a4c7653985ff0b9ea8ab09e210f270cc33ff82c3a158c7181ccf67428efda69c16b7cde3b5447782c2d517bfb79104c81607bf7f7bba4f57e50961b992dfa4ec381eb94aabc2e6862d222dc6a74b7f06cf2496e63a330bb81f9c0a7ce36b4ee0388debbbf3f983a61afbc9b4ffff968ef45d4fe22bfccb58c151b3f5bbef0b79c89fd1f846cf61fda3c4d587c7fcd30b7a26c93258e5913759ecd605af8bbbff9f18a45b3f3faf393ec38ca51eee2c9424b4f82e35250bc16c40540fff95c34d83898d84ef6e99be7191cbc22444b4b9fd2213d2c1b4bc5a3c8cfa4abbcebb5554a1800355e3e6d30031d082f21b4e27a4a6a96519559faef1931bccd445fd842000bedba1985ca7fcf92afa4fb63e713c4a361dcace6ba07593cd92b99736ba9bc5d8808d5cd113fadc75cf32f4c051c6af7f135b828b19a7106361bec834d9e47cd97c3dc028f596c016f4fc654f4222f98fc3e739698a79cbe499e18cc6d812e5a9d7db9e0f0c0597a003fa6ed4c41a261c056d89e0d985d8ae4a59ceadc3981387eae179bebe493f9c8ab4a9d15e7ab19cad37a2b405787aefd8ca614829a7b7eaa2957de2f1aa14342adac88155da2d344faafb61b966f691454790eda9e7af8b23b9e27a1ed3a2506c1b1054a3339d2d15b799bbdae898f4d32d4a9769f47dd0ab9a9c72a9237aa4e2f33d22f6b3f4600be99bc3f441b3d2e7341656a042b2ec26276f206261a2049d9ffb8f783163eca433f46b7be1cc7a4f93e0875ac8e06e605b8b73fd90e2e158e582fc2c781921b2091e867823d8d0aad316262efe057b9cd6dd80f02c4397552d717d9694e934c0d9724273a9fc880cca9da7f92f479c18b80c5553378945d2fda26e99ca73af246adf70deed70ae2f4ca51d7a5cc202827bf5448006d8be7252ebafad5618bf311ad9b3c60a125bd22fa02c3bae3bcc20271bb5c4fd7b92533366959898a1a4b92c1e3d1f7cd11c2a8807b6badb8ccba6fbad6b4b5b5c3ffc69531139ea41f4d5dc1cb68e87b36d1650e770aaea3c0e1383720447400194f2ae7b9d2e6ba0734cbad7828e482dba1bf260c84a1a75db515e56b706e3fac445bc1c4140ead7e6605e40f1d1f504dc3c167fa04058c513b13f08c30e027030f9dbeca858d8759ba3060ab685e3373664d52e60781facfc565575b1a74d90c1f6362a57194a0b3b9e4a93d3d03e11751eaa81734677377ff150aa5c3b9ed5426c1b19c26f34b12ffb45bc72627fe561e7be4ed36aefc9e0c37f48fcd04dca015b180679382003557fce13f11c21b8eac957e106e3a250c4acc567045f9307d480a79931d9516ce144ae22ba1715dc660c5bcb72374d987780b77f4ce3166422ab90fb4d752cf3fc12f8b1c02a7a170af6e5699667f8e2dcec96ce679e124ccc1225daca0b875a771275f3afa8c0bf45600094c78f9c41c34abd71aed6663bc089e200363c789789261fd73ac371df24255e19b1dfb96e9638fab16eda919ce77528ae6647725ab98a81692a2269a341b41d644d8694f3588d963ceb7de15fa96d81b904c93b6c325e6309ca55b82fffc0e5910aba35e287ea62b728c0c43039b45bb73cef3bab63c3e4cdfe66e14efa09d726fdbbcd859ad77b6b276a6da337805a15b025dac977be3efcfc242c075a0771f4ab1d982dce31c75d7763854e3610b1004b66d4b19437011cc6cf0be44d8daa215bd5adb7a037b1f3a5f6f4902632ac58e407095573476399e39fbabae66488d240ffb74ccfc4a88f5c02ff47e99be3953ab1d396fc39475e2045a523acdebca331bbb08e4990100f94d90608f8863baa9cc1de05a6bfa3bea548d0b6db2f06f9e6db5e6e1ee01793afb13f3beaa4e5d2991357f11b0153c403b515b92dc811aba92788e714962b90c0ebd209f66167bdeb97167c1a59bdb3ecb362f331a6a63b7b3b5ae6cddb4bc8c0cf16656d325412a55ab861e727367d44ee700e1ad3143b0ee428eb0a6254477f3b511afaab76acc5880ce5b93ddbb5501d95ec51bdd8acee9c0985a9b7c4e4cd7bd2038b0c31c8361368b7b55d50455553836666ee88ca81f16914884bcb991680db20be7ec9f8812c22314c7da61dc895ff6a8b8522335758cefcadd9ea0a487d20c139efe4dcd83ea76c7c460e29708c0a4f6f9b153dec6c494d42f05b619a8c4d981b6be58da1d94e4e18fa38737b716e6d0027404acfdcd1d2440e2d2f6cc5f3a031d37aa7dab01e3d6132350517f814d139a470b2f59a67ce25e75a0cfa7a26faef6a002ad55c891c24d68540282e02873562d8211a56eaa8ff4352564900e89c25b585dd682f3424d664b6f18b6786be48c3e983eb9b8f5f4756240abf67f058a2f83b66ebe7ba8def92dae89e33f42851c588a5d022e8a580072bbb97fa75c91753858a2588049cc03fb680b5b21a43ff39158fb29312b6b1dd469cc00617961167758ba8d904162e4991fbc7fe46a9c4cb64583912c3d4957eea7ba46eb3cc6fb8bdef59001e8ae49821ce915232679b453898ec101cc0b092b937326ff220c63d2b0007ba496af6efded62bb3de9ff82c6c7b54a8dc1a7d3505f839a30e937763d14e3e0af0e8169cb1e0d22e5d05e7d407eae2605ba56604b3b3ba60dd3b02f85cb4251a74e5c42ab3d408f02a5d4aac284f6abbe8ee8848edeef66d131b7f4fee245c1e842bc04f36775b1c50f03d027ba0ee0046075effbb34359ab4f1fe9d6906b9ad1847565ebb5e3ce941b462eba4d89c721e0a309fc35f2f133c190bdd6a8d56efa2124ee9c03d4ceabd85357116afbe7d1e6ce426787bc3a041f4658b372cf1629b23db61f17d086906ecb3a42c28148179560517c50e1c1a79b6008c341b193ccce31f2988332ac876df6345603c94ac48552a8a90facc61f53886f33b5aa21e95d4b01fcda922648fe955ec78948506e8ea71afb5d6309a7014bca4a36a264c5d7581df1acae15f39c1ecc1697febddb6fc9ec15ce7521ea906e09e83e3075d56cce11e1312b110cd0540cb8ff2417aaaea23ec2bbb4edc52c94e480e34acfa8fb53233233395c16e70b3c5c2789fcce31b73b11ede7182af7bfe653405feeb1ce408f1477f14de229ddc3ab800e1c2997a5d6718483c772dd5314a5958514cd539b1c983746e7d05c721f33e7fc12b84d4bec95ca035b220fe36bc0cd1fe1e787acbc20b8aeebc1b8b81de8a6609d2ce61208631021daa076a7e4965c262474a6f7f945c1a68e11090397afa6b89edeca01e1e7ab0273b19a43fdb76d9b9ac29481c6d714e230cd1a9935e9d00a64718b154e1902c3028f70ced29452b626dd0a5bb50ec72d50c6727d6d732938b8bc2450e7bfd7c58291c3449398fae6c9b12ccbac05649d09828fe22181e7310558221f525a17203f6b0364b516dcf09d5b2bed6b4bf105fac17fa774b466ada7a20e07b52139344f65ee5da94b1297007949b2e905d3464bf7fe51d17bffd9363c442b22503feab1eaf7169ffc32e7feb74a918bf5161029f570907041115cd6e76ecd19c6ad14ddb2115206ed58bcc10f1370a9de8f5db11932f0048f44441e68cf0ccab44d145d7edfe86be8445bcdd35612fe0a70766902a98a9ed2156b1fadc90208c784e9170eca3b67f62b481a106380c929b6ec31fa5c9c84b9517f69d28b9638d22cfb0291f788d62ec89e9e5c97e5ff51de3bfeb602b344ca8d3cbebdf92aaa4483fc4dee93f36f55a375e6eb35d5519de9e98cc2c8d4a074e036200e5a0d0f0318e8b1fecb34ed42163c9623aa0a9389111f39acb92e1f134e517aff8bacae5096a091c8cd951d38ab3e27a27b59728460abda625f795b19c8cd3db0755485a28660d2e078b10f64e9725252fc07bc4110e7abfa1d70b22a8521392e4e6116531491040de3e4a853c99cde87b8b9ec256d23cfb0aa315ca324456d2b41c7082aa94a714406fd8cb513ee3d2ef806a8d7e16df7c6ada821ddda4ce3790d70b2f86dcbda597578b256d2f15fe65f1637ea1b3ee00d0a876d47daeadc90b3d4b3fee5c83d8bfa3f9f6544e5b06b6e17d037e4e543872eff6cb84eecaf0cd5722505f0a0ab25d9debcee5e2a2f33cf114b6faabe88b0ece8bea9232940272fc824152c68198dad1e08a0664f24c13d51c8b45c711a06dc0f433f9add3e84b0aa7de10bcd02ab8483716790df16c8cdbf30124b9a808473c37f4861b1e95b84969798afae32da21a0b5ac87af9c7155b0875ab9e9c3b2127b9b1ce5404df9a4b3a6c41f7385fc6548811690139cf8a9818c75d3287ccdce64f9cec6810b80b59cd682438ef7f54dedd05ef5860bb808c9cdcd4903d95b3a4caafb439415d1c08159a15fca2cd0ab569eb639bbf5a0c71a168da5b531b745391d31b6029d4038d8e8bf4b9cde622b92a629a2471b3fae135cccae2eb550acf250ae2666cc29c2888235c7d4de98cb51054c27d4465b077d012dbf6dfbf009e53bf124313b543bd934fd2c948824177e6e0398b0e8abe63a6834713336ff93b1a603f83c2bc4ff39b71da68b689d895e88ae2925a1a1ff10cbb9636ad901963408fbc189765a56f084bf72a6fa0c8cd0ba25a55e408f2bd70d67b89eaccaeb04ca2b59399c3c73d6ea3c4e53c8dc9b1f33c4cae89be7c9e7642ee391d9b99a85a9361cd7c08af632792bd0d10565a837f3975a94b57d54112471d994f5fb80f570a3db4e7f52ab94957563f21c69a60f2146df6fbd072032c1f4a20a38cb4702ba761f9ba6839f0a8915992a0f2dc18b16bad02b68fb1171555becb2c5cc5d2e77fc49d1a90a0f76a4318329b601221bafbd7f0192fe7033a1537d4a692ac8bdc1635055ec0e9e399577be368688641b610c244e10493f807b700bd7142e5ff4a9951df5e41a9b5d7aa6a12d5e96c4e8b75f264f514497c7170679c89b9e0994cdee467255fc3d78a66b7cc02236c42735a4953a28246ee59c1b521e644b988159b3a769a07f74ca6b387813ea1f4895267ce92a9c206a07bcef10dcd1ef93d60ea7da98c26d8e407ec2dc1b68a4385160c10d2954ebe168b2885f4cabc401a37ea5f7800954b607fe9c1aa05ee36cce23ccba8b02f1d19cc1695ebda2f11fafe0d01ceefc1101ba191f1789513e5332d4e491cf49afd4a942cfa397900fa1c76867a5d72739ac99f99dc563ddbf3b3619d93f34e4073cf4873e6ec22d34c2afa54bf901950deec49b78f9aa2baf0f0e7695466ba3c7839c26a6b0d7c5e5b54a0d007a144f3824690d7e781784ea83f89546a5c298b0f457212c3edc54a70ad517a441c631f6eed25080bfdaaec7df6e51295c1557c3d35724603ee5a98dbc325a162156b5c5408cff689cf95df03d1aaf0b92db0642c0495a8b98a086c66e0b5cf49ffdb77acb07567b15f35d0a0030c7191e96e59c85e8a1c9a5808dbf09742af7f836e3e2c78ba317dd73a459d9002ec24bec3541d23c864b023fbbd21c200560099d1385676cc02b27e4ce859f9b5c122e751589f4cb951fa0b5a3797fbb1cd482d15fbf450132cdb6003255e859e741f099c443d448b8d693b9c0ef89846164472c369112c19184e58c6018758915a1860bfe584dcc97535c5dce80707b19daf8b6b1d010d5a17e30921fb8f720786fef11693c369850bf7e8c3c08a0204006640ec94d248e0a861aab00efc189d6fc70f1cc78897876c3b4b1913bd9681b9984a207e9ef2ec3004a557f821d6268c50eaef75b223c1f6d9dd2fb409e1e1e95b1fc80e6d4356d640ea634565b303e4336f9f94698dcc25d4ea95281398c36f1fafc2e6ee8fdaa7874f446c4e9ebc314a7c7a543d40fd56ed32ef0f11023036945b190226d249c41594b09c3201edc067b9894b8bdce65654588c2e4313e2be7107108e9d9926b140e4cb42ad2cd43480477b95a4b28ebd5136313202bcbbf7d248694fe3e1db96313d435d51969629199798b9fc823db0b0ef080405c4ac52421cc929f19679b2c9585184db65699cc2a9e1783bd6fb0411ec6d8991436fafc6ecd4b0c9b7703f09171fed123ba373646bdf0a9c3c07639e31225c7ef5dbe095a4c34c10b24d12e9947e0b9910c8f3ef2ddc33a42b365beedbef0ff2bb41728b2057591331460f0371fec1f6177fdb72657b4bf2659c9dbe364c5b022c9245b1e80fc70db2481b32284ddf147fa0359c5ea55d1923cccd150edf0054e22b054137fc4444dabcb2d6cd5b9137e8d9e387e03fa2530c9d63db20a044964ccbfa09f1f20172e0de4c6dbe6c7fed694179f882931490e1dd58459fa7ae6b93d9f0aa6e97a843d36fcc53303959e66f2d87fcb981f2051603c5fa70f97e3b5458a8b4684e8ac35e75f8e65838b4a0ebaace7561328b8e0f08185f4c84237ee0e12e655070498ea1c03ab1e0bc078926ab36db7fb1e96721b7eea7b5d4260be75e9c632da2a61c816c501bbdcf7f9c7086add24693a899843656783725bc6f65edb373f3e9c6e09b96094c2b2c4e72ffe84d742d577adca4a9e1e92514fdfc49c77336431d2b418379edf0a5aa6f6975780309c85b19bcdb8cca04bf750fed5f75db8b1a880dafd9004e30cbf364da240457c6d5d0adedd48a8349fe40ae8414696852337dc2d81c4c09cda978dac4d99c0ec3714f226e8a50e7d6f1d03b54bb1a8ee28d54804a96ae5ceec7743b7f71d300dbf8ddd305f1b0af23629b1d9858a84dd152b4bfdf82737de0d464659087be10b20ab3a5cf3af6e8f8332e6063775c24aa421217613b9a45b10e0a3b2cf158d5e445d91de50370a2fb54ab4aa63b194c3e1da6dc3b2796b1bb41ea94a2face7d59ff3e796f687a63ae741a1212da77151818d631c15775c4ac142a1f7e9c69b84b30738e2adc9e1b73292a08e7efb1f6b080ca8baedbe8d68f948d941dc3d67ff8257961fbf29915846cb3ee65e25a55d380050d8ca5a87fb1dcee60d58c2e2e876dbaf8f3a87c3b03aabf5705246c6757212154c6b6a17ea023d58a6414b2a42bae8d2f70008202c63d8441451205baec8479d91c800af503af26a8dad2c2a05be731bd640443bc11a68720a8253192bc48a8e559cfd11585176e571fa7fa88ea594786e13ee78f4919975c12f50f5aa407ab86a6c2d06797fdae217146b68f393f77c34353896a4c9f3800851134cba8c42de843820861001da0c41fe45fb1786fcf7bd4d2a21d0ba0fb97bdf4465801a029eef9dfc8e7ca0fc774fd784ebed92c76045a45c76a94ef291253606b5cb955e0c615210cb079906dba85f2f03a21772469edb1d154035ebd07d3681e7a7367650a090174f3a30a18e08965565e8de4fe36ad114a984cc573b8a18130edf6bee62d55d2e4cc1331673c502c173dffa17ddfc1ebd8a1fa4b8630d76edd0431445d9e0a659f30f9251da8764fbe10f2b2c851932955d27a5b5b1fd49995c34c19140fedf6c46e3610268fa6ebcf52728456a8819c4cc892fabec0141e975c69b44e11c31d2e82226e671c11444965b21c4f8ea44de018d0a7b65605a90e32be0d6990955afc4ff499af683636c03c90599f2f266f8741b36f4637e6fb711c11812f079e76d529c7810b5188e573590dfff80e06e128ff48187e30f5c54b5d2599bf9734fed0675d624cf551becb5ffe477311b30880b8f17fdea03c8796b0027503ff4d6728a5cce6498e600d589de2929961a4518bf5feb20b980c4a49f0ffc7cf045ddbdd35d090fa9ef2c9f4079415af909e1249021bd15f010cdbf471bb6565b829468d39805c5db377b4f968e534807a489391d20099c9e96ba2e1b2d0e03125a133c78b47f476be6382af79d38a82b1db2d54794309b79ff810efb4e71383cc324defc55b58078fb9e6036fd98718d36bdd020f1c4b18d4a41be7a0cc4a44c802c887ce259e21fd3f8bccbc29d6da93d2e1e902c84c47c7fca9d091a14f289bac4f744a07fc1434f175357e0edbc2b0549be41df585f2e56adafe99f18ce357237555aff40da686fa7f82bd4ed22a347fc6ec1bd19e2b9e86d7165ff4399e5c5ce02c2afaabb08d7dd35f4ba8d2a1b24f5b985f213a829e9647cc4ef3326d9e7e9b65dd9ac82f9a5ca24d9825b12a255d69a25341a2903c322b95d131349ee28de5917e2ba331a299a5d6d695711b3cd72dc2780450e55c4b3c6cb9a0d68acee36b0cf466bd5ba2c7eea684032d6ae08e068f88f00b614f68833c144d1a582715e06bedd2b0a40ebd16b448540b0039228f48c6634f85069f9a241146d44dd783fd21b5d23f73c54210dec2a396ccb0c02fcca53753a497783dc82f26c61d11be8062f44edf95c766e0afae1326db2526dcdde9155d8f9406252d7b4f7e152eb7a90215739c52bed4eabece944f349731cf532976db7c74c04527dc6897b1f330802c6f5911d90e778f5a2043898e8dedf670460fc27b37485d1a9f402562aff93f46cd1b7c578e5b49e9d076720d32fce3afe5f42e02c54ac3d691168c0a2a2b7b55bd6e0df0d34b60cb2ec6484a7c6c535d29451b7df4ff674f35c64f1f13333151dc2e59e3f4c0ebd65e600c20a5edd7716ed4103f3b8eaa8e729fb21b7525121a5c27974e0375eec32b51cc379a5ca87732a37be7349728f7e75d5b2cd5989a60610c9c2358260ca5a10b89ae8498e2125832291ea6d8788a25a29ea6e26e5566c1217bcdce73fb9764f6bfb11d2f70caf59b760cedde0707888adac9f6978a9448b020cdf148a4da5e8a5881964c7c0f35fe0111bd82784e3081c119eea8f7ac5057ae3c5820228b5f4564d5e0ec2bf894e6cef9d2be60cf7a81260554fd469ee2a3e472cde3fd7eb738c28a14dc747f39400b68f2e2c72ca2013eb18ee87bd055293f7ec2d0e865978ec147e845649928db04b632e3225c488af132161b2ebe59ae5ce36d858ace420d4f8ea745b4d04d6c486a4aeafe8c1f93a8285799817f5b85c038154a88f31f7609715305db74c32a13de0948b85454248465d7de183530f541717d7ba4af78078457388024c32b10d250d067ede19a2adfb14ee1bba496307c50c341a1be8ac8eb68943c37d4ab4045bd464ac2eb82830beda604e35b36b354d538d2457f80448160295f3c908134785d074f0b1dcdc58f2351c59f4ed818c89c872f284d2c92e51e17eb2385461df4ecc89cfe424c6a96d0ba99fde768eda636712f8a0c9a465002d1d3ea2f9aa08a8d33d25db6c811a996ee34d87bd64408a2ed51e656e763398ebbe155bcd72f471610f6a38cfa843ea929a37214547ee975ac6a47fbbaaf6fbeae8d61a2b9562fa8a5af933c34d5fe8cb664f8c357b4dad784f3e2bc9f4c92791759bc2e7cd50148da4427aeaa60204d5694e0c33504ae51b029d34eb2e1d90f0082a0b91e17a3ef8c6963c6ca604aa26c198069ee7815176888f57d4f96fa18b4eb3bf21f29e948b0743e8b39fe881ebab8a62fb6da51bda281812ed43f1c27100e2e233ba9158dfc3969b5810726364b23c47c29d7fcd663c2d7a8bb02c656c81d91cb641d06c1586c76152ebced348c205b9088fa116a07ed1f482d25aa9e4c4e019d3010fed9eb3dec16d862903134568a8bc6da05566b8b500ed23f79dba36feb3c4ef085b32c8396cefce874af35fa5859809e3dbb320a59dafef6d652155ede17b1b8df1bede294d89a8983569035674f8bdb3aeda45161492b026e49a3555c9b1b4c646b0c527c31b3aabc993206dbd6b9921d355c46094a2f449b1281ca64f93adf769a33e418da9bf100e78be75e3c8ca4a4900516dcb773b0bb7c310cc4b7c084a4b55f7918eb1cb9e57449e3bdd5aabde190435fa02cd718757ea2ae191a0bd21c54e4877bb3819e7907b4f811a3972baacb85a373628ada9ca9efda26dfe83dd0a2fd25d9087537c52dd878ab21e4c6a4c37367aded0ef2b7e9698dcc827bb540a9ff1fccd4bf64a0552c4528faeffcc3f4e10e38c9c96fe0a9a3f704bb128d5580973035729f72709006342bf33540fbf6ea8347f8335289b0abd42ca11390fec7382e965f26771732afa82e563b95532da7a6575c0a324baafc3899d03d8a5a58d5cbcc0af85cb096ec389b1c191690eab3bd5b06be092303c934cf429865048382551252b18f403897f7ff028bf75e64e82ebf283a14a3ccc8ec8d5824e28edae1b8ce3c646b62d34cfd8f11d77f3bce206c6a5fa0098c811b8aa22dffd5fdc8f7f87ca57c31b705da12bc38336d961b43988d6922fb47043bdedea36b66902adad274aab338f1cc0eb5eb458beb4b2496529899a364fe10f29e53315d7ce410f507a7e76e1d4030bd4976b470cb2716bec48036c5d196dce945b58f9f37a808f3abb3b841e79e4826607e7009ed90fd01441ac184c03b12f8d9bb4729938767f5b6f107d1e6c9fd24ea4ac167030241d1a490d7ddb85b490bc9e3850f5686822a59385b631baae38876f484ce1959a076928f0f93dc13dd990ded01cd245513ed0adee6bff71a39d14677cbdb6c66342bd74f1c8cd4baa2f2dd2b946f1c16c573a3f1cfac3aa823bbddea0e42e66e2c0e458a29b7c523f647803be7292db73d67ee8b3c502dc4bc43db24f62cbad3b534cea06d8c1f68e4a90060ce93444f6a6adfb5175ab339dc5852e41f8acf8807099b679571fd11443a2b18a29ec537021a5f0dc8e8df0cc930faff63135fd9a16563fa6e9d3cb7dbf6d29f251661edb40e14bf8f46804778f1a587f51ac09c3fd05dcd69c83a7d2eee054f307965304b3ea71fef6ce1c1565e1407dd1981f9669119bc1ca2deb9a15e7c68599d4925b6d0b1472a15c765d5d2c0c11ea6fa14afde230ecf1ebcebec3b8044e670389fd2a19e2ffe546965f04f5c7fbd98e58900c17e8cc42b6a31334c514bb86622b1eb2a59acf94b1dfd04e3ebe35acacf7f1934f1a656761e5dbb8b984c489de93c2303f0a3ddddd0136eaf8cc340d10addecd964945ed7396beb9a7305abd5ef1e77b824ac795933b8ae2ce07828f29051b134ee141d85856ae0b9bb583caa7fcd083ae0f7299ae9dac985674e56e1671a270aa315288c902ea77e5d3591665d76dc7965a276a77f1e9665db5f0c7906fc028f902a411f92ab264507e885ddb08ea81c6d7c685a7648c06ae3c1ca853bfff12cee156161f2bef5987b490895d7688c547b63182095f421de3ce43ea337fa2715f0cb89e3ad186353dfdff581b700f647eadd8b0e11f95a0346f08898735dc04a1a1aa40e270aafb27d1fef43e1cf68c44a6d36cfca0c2600abcb20831c30ce7d689a6815c6c6f617b91e9679c8993413216699d23a395e4a16029c06c0c1fb034083f9d7a52a03c03b376aeadddb9759ef959964a5f50391f900b096dac0961efbff8eeb9326dff6f92a80af6d6362d178cfcdb661decb7d512d60b849f46648590b785999a2c57d19904e41c08324febf2902f7f5f920be63905ec7370853bd29667c60040426f906d0360ccea52fdc0d445269eff4446dedae822cb23afdca81958fe9796d0707907a3914ee76092fddad41f2bd3dba019b8ef260a867120471037a3d164972cb61ebd579fa614f9085bce4dd415b9e5692448ee68ec11a720a6120ff173749f404065257c463b1555783469b37364f2fd73fc99378ea14854b0f84c3988302de68f2fccd692478ae9b09476e4c9ceaf092718f61824b2dd9b05d2f25454d6236697a3819ea9d9f224ae9078e501c3e0e35527ffcd5e1a3c344f1bec65462d4631239a2dec6dc52da0d8bbf418a4269f6d1ffa2515e9587af0da3e135a7e724cdd1be2ff8f5a83740ba215517dfa8ffd8975e22d3e039547d2f3f499eed997c4752c6e5e361132b557799b7438b521599a5dcc442d1b350787ba0e413918f59bb4eba559a995b2ffcccc1bb2104f1a819f1e241d0406d0a35ec9e15ccc5cd357407045e9af90f2902a7cac168dc441fa1b0df85a8c68ec6b865481da6bb830e3525b9d81f3875725751e60789596c893df2dd77f3a57ef9f009f51e39681e3a1d343b1700f234c772ce25cdb356629e9ae5c6e8c7e02150811fadce06071f3770738e6b8a9df2406fecb9ef7bc2c2eeb11fe3436180b671d7500f78e97a44f3d19052fc8b2684a5622c67457cc18d156c6700a642887adc597636ed06834b4ca4246c72d886ec63773ab5e6612a172f5831cbc7e9e67da76f5f247b268d584794055007e59ed8d1fa2b37775cee0b7971ebda1599df81b643e586ec2ed3638bdc3012002b04ed8088d5ba402c4307e027279bae8d48ded762ebf7d87301892eb8458387030f42155324beea96c0f326f0274ed3ef94db0ed79b19c8f0f1df922cef1bdd74e821bd39897444f61e9de4db0146081904557a571fcba5195b73cda98d0e3dce43b5a4c9ae2333fb28437499edd0b2d8d3a916b4e2d6446d49efc13d3118817726bcd9936c8532586d8bca5c59d661e0801abc1f88095b9347b1c353e2a76718cc02a3822059c05f0f1584a1518ee611dbded9bae2dd6dd484d6102319f7acbb2a9212ab6a44eb9ac08db63bacbec6222dcb44bda47c4c10df1641dcc3ef422dbd8785d4cf7ea9627841f1d617b1a1bba015e400c8cdf8190e17d863e805e76c1fe37b0822c14a1e474220acbcf85a1362545fa6837a5b9774a2632076aae2dad793e2f48561f8887e92e0325f62e2a292eacb5850d6915e9a15f475d8bb1e95d21c362d25b48619dc445ba4a1f44c48e4094a1655d5022cf4a611a26be40058aba65ca44bebf0ee626c0d6450f24d4a3e13e0bbb6c09d3b03d60efe98513f7dc7af8c2bb1e4c9f167e76a91e6f74cd21dbb3e43d94bb92e19c5e4b6fe20a57705d8943320f31aa94776ef5e80c119a515c21daf905ea5ce2ddd843843ac8033d912af23b4fc913c23a947612b14d0a4a80c78ae223e67cbd410c9f802369f70ce92c91b915939e2923c1faab1e9fbc11a4ca7a0e568b0ebde2c92a55adff290d0e0d54f44f967a5d72424f09b786770810fea8540853e689a6a11dd3bec6b0fce5dea9be174b6b7a8f7172d4e3db4e2538c0e04be1c582d2e3c420c9bfd2d8d8598dab829174df67aa6ebee42c0883502a2f92c0ee13176696f134867652513a3e8a395f36ca5c53ed03b431686d5da519c5391c7c24fe809483d121cd03b45e62742d530441f140dfcceaa3bec11e88683955928f3cce4c6393836558d82712744e51ddd8b489ef26ffb09f2a0486cab38ea5d420b749228d643492dcc58d590b31a7c3188c56ca2cf020a9bc3b8c3da8b74869cc49a3a36f70ae2248d5be357aacea57aa7242be79ea592d4685865a9f0a42f38be3b9c4638bf9b66fff37cb1cdc7cddc65949bdf1210505c4ed3244a474892f4742569857f0829e0462d4575b245158b732a2adbc2ba2d8f7bdd6700605f695f302e1490eadcc6e713d151de9722d13183d4e576b5c29ce26f459dce54d1cf992e190330c4e5fcd721d4041ad57d6b36a9a883bfc1392125d8b70395302868cf963f387fd2082c5a87b65f56ef1e3f497caba5141981bed08231bcb4c82a4d5ada7d5db47c92452f02b974ce0792b89613925e1141551eb84a9021d6f4c9579cb13052dc501886a09f682004899d13d1ed2b1311d269bcd649c323bfc74434b828bd77ffd5d6fcd29cd87723ffd731d6156432e9ba0b2bcacf6ad7a61ef0a7fad4d3ad52b8b9c8500ff4c90ef36d09083015966d55ee14676e157f24fc4942afff8f31c2fb21c1ca7a50f1a14908b2bb30d60a406486e92dd4ab44037e70147fdd79ed1f7ae9fc64456421b49195d561547b63347e1fd52fa93d7520142625f4f38bc5fc8a1ac71d1be1d2fb13a708ba3999d51718dc7d16a549578fb706641a2c1026ca2e83f301d8dc6ce8601f6a08900b7ae0529aa07ae827829bc1cbc3fded9644ac38b662f86d5b64ebae25c06281bfb500eee93851ad8570ffa5caf78c42d8efa980b9959cfcef339d3d3c437a98c19eeb1c3b3b9fcd51bc8620ba18d851bb8df5b65043d22d4939b9e95fda41c464dca169fc6d59a71402d3ef51d72c0593e85e8f0af4b4d36635ef493c815dc1804ac12cd5a5bdcc14be0198058c1639bf0b775d7235ea5405736ae254a33a70b8d1fffcb60ef9f51daa4eedff85ba9d8600dcbb857c84c7b0df7b56e3aa81c93e82efcb1b92e3ea40209cbd2ea6eb15a4f52fd60fc6405ddc41de55f6ff366cb8a5ae54fe9a3cac4fa53e7f4150f149f52ac50ba8ff11b208c86db4581891a6167b0668af54be165296e087b320c35bb16ac931adc04e0dc80c0d66bb07107d870ba5c0a8d1511bd0e719eb25fed1c0a6037b4601eb06adb66574d85f4f66006ea2314a3c1e9d9466c33ff7823f078e535f0b58f88929500fb0d548eb07ab74ce54aedd76671ac6e6292b868e94131d42095ecb383f5dd2d896a8e950517624894145300bc348999424b39fb43f3386e677729eb9adf995755c6e41b4527509fdfc54b96edc235f3c58f595ebce10c89339fe67c333ac23d8fa3ca1e18dde051739cc051009f0f867871f6ff300ae9b786e9eba6da967ac56c5c8b1308119b0dc7b6416f5deb848e4d912a2f9a41528e05877b23ced9fb7c57a9d625a419e1cc0282e5d277787419359f36b2a1d7163efe4ff74ddf8b8b19d8f26f8679d063413aa9d011e4b6926560d53ea5ca2a84a15d261d5037de5cea302aedc7902662bcc1cc23fae237406c03c5e666b1222d9a5e3b24b7792c66b4e1d656bc04b8b0a95f268daf9516b9aee8ba9a01c2c51e6b9e9bee793a6544119a89d60dfbf8ab5bc5fb04906f33f96e6f93ed215e4e38fe25ad4a6d5c8950aeaa5c60d0d0178883c0a26c3d433c3fd24619a67ce8b0f071a30061bacb3d90c1cf8e087e1a3e348c98813f9be6ab281c05f3a7c6b3dc13af57217faaf8f24320f88e624a6dfa365cf4d61877f9a7ac7897ca4e4eb9168fbb1584dd9eecef487441a308b347010b90acd6e0327c67de2c77fa75c0e1edf307400cac1c71adf895fc0a144ebc211e9b653450a8e4032fc67691e0159a75bc6d8b1d57d3bbafbc0d496fb011e95859c6374512786dc4ba6e4a0520bf4dcc9a20355a3f3728c1dea7d2fd05a2519fdc93850b082a1a2793d8cc5d5d9736eab1aeebdc2b985242d98922943737f48dcbc04cdb47f62c767d37448f9cf883f18592c6b4e9ff344f73671f842f64cc414cd904c8e4774e194f93e00a3b36c24555104534d2e0fa0cc534ba51a262b713191a5095ab87d8bb0f025e17160929cd1196d25fb8d6fc829706e4a09e127ef88b244a122356c4cb04451683006fca356a4a8b0cf0c12a6255af3581b41c399a77b8ab7eb055655a3571fe51f0ee04e082bd822a1d9257bbd4892b2730a500f86c3de862549044c730b96301775cfa9d5fa91b868b8a5ecc531cb034c9a5a30d4f58ddd189b650a5ae9e000c93d4874972f27d9acf526a69f5cbea32dd8a66f617aa7470d5ad74d0d1477969b539e3abcea5cab5264594435ec7d8218e16c468789ec133faef442fbbfbcace47d1101eb3b6d3b5d96a69906051dde8f31b24f2d514246734e4a1ebfef6289b05fac28275f26bbd69783e8234be1c7a00af82336b93087364ac424de7785ecce791848fd09c46ad4d24b32d1f1c1aaf5cbbff3ac1a60dc30c38ae521ee340a162b5dcce7955ae3313769e3efdf197785bbb895dc071c961c63299f6361847cb029272b468b711bff9b0b3b3d436a69b84747295cfbd87b8c82989d4deb6d42022d2ed87cfd1027cb61d412a1747f989d743a079f47068846e8d7e45cb3749e0eb87a712361cbce931fed2d3b96f54f0a960c45f428cf4ffd23c217388a42e3e0123026b8d3fa52161489d74e0edc764de47b5d2ca1c55066dda65fcd9f50c9ba4ef188244736aa3f00edd894790c5a973d7a71db9ad03b08e6ed0344580adb4c6bc0ca355255d0f05f29415e062f5055e3c60a9d9b83af83d05e1c3664a3c82606796c9837f2670f0dbf0973956d3024af73ceb7091ca205ce8514f0c4f3616d55ddd81a46917391d509bb623e24c44d45d4cc8c827d28140c606381181ea794a44d7e499ab98cc1ebe625b9823a026bad8df440aa0ee3719350f9eb30826e15ff17f5fad43d09d3a9ed0819979a20be778e4bbdb76bcb4822810c60318a9d4be4c926b3db9567359dfee0a6c68a87dca237306f2e271b117e86ced388586c94e77f1bb6b0dbd16deb3c1e2e801e56616c7a4258c0601a198be93d30e1413b6f4185afa66675e68703d87a41b2f39e70842494a2ac336074055c395ac89d4f1858741c750c7ff5e1b6f11ce9eaddcf8501678b595f94eca5138cefab88468f9f901635eb2ee059a86578485c5c21662668a5d7f8a949d9d030ac59b66ac945c30ec466201b7f69330ab407445f7bb8b549f67aab927f3ce303a9655baf37066ae724c98a3c2fb38c1c1c3f47650e18c5fd021c93900c4b067a8ca1e18fcc7800ea776bdeab0186aa0113db77d612d23393206fb41d220d82afcca9f47ef954824925a177c1587f24f7ea5557a427fc05e468e95be26c17dc68d4e6b9c357b7e3d58670c6af07922c87f402c8cc30216942bf357fb4efdf9419c8dff3082cd9b7512d94aad820ddba2e90f0c52e59e5b465a7ecf164dc3b4a74bdb15d665ffa73ee035213ffd01b7a9ede9d87088da4ff3fa8143c95cb3bd6799c24f878a8b2e9841ed736b9a2d40edcf7a9fb0f879d09aa18ea4b83ce58d37d25b6c6ec1ddcb5852a7304430d1e69138c2179495861d86ef4589cb86887e07eff645f9de7eb5083e3bf0ebd20c59f8f110eb1ac9894352daf01d521ff2cafca42d2cf74b3aeed9699aed42aa2a11e68ac13417e312a4e52c91047f88bed2c8001f1be296beda2afa7b04255a95dac1bf2e911499ed1d6398fc818a0b5482081313acb12da748035c929c9c766f782d4fef83a74a3a9db5e584033b7518bf367d297a476e9acbb80f21de3885b6857e2a5bc91111f2e311edb2af9aa416ba07007ef674aefeb0b4df57dc2cfdb95b0ad8425fabb85dd9726d8e66b84ce301a87fd579ac79e6b2911a9b11a632e463c9dea0a6a5151c1ee77d92f58cb286b977e9047d59f23814beee68f38abefd7abdee3907301d81cff8fb571356a4cf05bd39330310c4c68d1fcdd5d577c66330134103203ae473d288cf82d939148abb4dd216f8b67893d32bfe1ed021094af5702323cb795b19079a1c6f3d639034323232080f4cba5ebe0677820de0c83f554e6fec9feb3df9341c6723d371f4aaf8b5bf87ff3641fb96988d327d323a12f7b61f6c7ea2a643d426d6ad02ba99a1f6ee80c5c92a6f336afd98c3612cc203e3c386afb6dab90ec21b98a54801cc965e17998dffc11e16728365d09263126600e527d3c712781abb6ff1858a4de9001340b64a86e4e4215a68f514477568759dd4f8a235bae32b04f1013003e81fb232e7019ab55047166377863505e87282ac235a33748dc4ea57e229760c9d424a3940858e8dd18bb41f9de0e5f30e12ebece6b27c0b143d271e940ffaeecd26a9eef078a89cac4f065e9a73be05dc025ba07059754fe47fc8c2610c46969163e267240ec87d26c775b8bb2f3740665a73813cbbc91bdf9d458311756d7376059997383560aafe3a65b59d3556644b9cc6d3a3af60d818b91b89c987d35dd757ee6683e67b59ca5b3a4e7965e579604cc930b50b150b74502b713755699a97a8a51818572000455518de4c0064e74ca2d96f913a62290bbb767550362bceb29c6ee91dd406d082c1a150f18e10963a5501a9db714ab908a2587d1bba4025d1ae754fe46c7b0da77241c17cd069b88e302dc494a868767e2dafdfe1aca078ebee6c348cf84cb8bf1fda42691436b108716c04d35710612cbc3e6d21907a3c46f1c9c4d026b4a1c65e0da6e0425174d5d0061f60bb7d415b2c4fc27eefaa8cf2526f493ca89c858799640f19bfacaf0aa969124338c17545f327aed877d01a5fd799c00cc306cba4c09cf12278bf2a81a91f32adf5dcb0d6a21d03f2fbfd3b231a26dfc90e02ec0e837f63e1521bcc8d9e8f4ccb52ffc4b936be52fb850bbffb98d8d8b918589158ea2fa6f61719d9edaf6f2e4d58319f1d4b6a6964812be8db12ab2b603c9aee87b40c8a2a0d2a03a1978279ee70d7c04b8f7a410d461900b6a8dd3ebd05364c11314b7d31e4d058b4ede671c4ad961b714ac27b7d13e030239e1edfdfe38a311d17b57d8b83ec866250e6ff7eb1b4ad9c289cd0f40de0f620cfe3cb81506716c368e7148200f864b0b79d5da6661d78df409db9a6819bb88e29d75eeaef94c6cca0704136c17ab96827ac7e3a3a489ebe85468777cfeccf567322ccc73004ec5a32dc883448e5d95c71f2ea78a91b9497cd0db84d76a27ff047fd4b994afb5ecb5951c79baa38b0083b6757f026816b4d80096222f0ddd81e29cf4d59339de08bf5af315483e83e1a42b49ad7a300a992fc5da9b49df0fbd08e831177a3eb7944c197fe83e3befce2595b4ac653bbbd1146229b5fedfcba842f1dc40903d060abc46d823b64986c7ea0899be48d00188156e64521099d5ac81bed0d83ca2710a7e43a054465ec34f06ef99f9e58cee1cacdbb0c2b862afdf1d4400f6d3398e0b4c66e59fa591492985850579519444023607848ca8a88de5d6e4a5847156ac7fcdd7ea2eb39d9eac170a9679baa43414c247b477993ca040caa855730ef1f54e94bf5c2ade6a2889b5be8af1c33bf519252bb1f139661088d4fb7e15a391e9ea997da1592a3431b5fe440efa0133b39a5c632ecfc11b528b8379346b4383fec22f6611a2699a09fff00c7401f9cdb96105fd9480a0bcddbaf095b6d5a708f4f89afd93cb03091197e5c0e237ed34a44bb6b453c3684bd3b28e43e638c5fbb9e623cf600e435c870f2e8ab514b1a449b1df14f1549020d26aecf97cddefebfbeeb79d167f2ed09ed4a65d5eaf707066fb3a62b9f6641d4217e0eda012adba00358cd598431e2b73ddda0758223f4c218bfdc97e138d86de034ad4f9bd60ab9751bd6d8954b0d86bcb47dc26829232d130da1f8cb93ed28c97f66186e73b58800e9a4b0c41da6108e119b3f812b5191f9be7fd45ef0730346f582166b3b3375eb5cd82499ca1b5c493b59a65cd4560b67c1a39a2ee0a52f62d98ba440a1d38763c529e5a11e009d24d49b66f96520cc95a8c9a68bf039078ac13f0652bcbc021e0035a8a29e79edd016efd2ddd3e88784173d4be56e7aaaef5753c70528a8f6ab08c3f7e8fd725f0b48a4e1c803c94d2d6927281abbe075fca90626f7c3d2ccfda383765244dc9f63f1ecea533d2ae84971059e846d17214786630e43287755efdb44b1a8b28d5cfb98fd802f3d4d4756fc6e4483f0d86592d1c975d3ddc488e9d7351179ba2fbc1c8b0fa39f5c98978c9eddfb8aba2619e8e96ec803e40bccaad691f7e260b54e1e55c0a1ee9c03d103331c5add39a52f2dfcc9c7176c657368749c30893f5543f7471d27962757e3271dd6f4ba6c4d46fd53519f13d04cde62355c914a96d4cb1fb1ba4a2768dfae4c92d24fc547da3a74d97aedab03fb5aa81252b663ea8b2d773a3e0379a6566ba31231a6952a02c7985b3777beffa893edd83e5d711cbec53f0c4b89d81d9516ccc89e8e6777c078017341aeb835c634699adecd56ad02684e9d27f79e725fad922fe36e01aa4133299fb51f4f42df532ce32c607687e5c2527c96c2918ad511c35e871a815af07a108f19ae547a3f8d8ec414d8c209f399720846dfa34c1dcbb938a28a0d6d44c567dd2a9b39a9ea49c400ed82bd178df82ffba9ccb8ee0a79e977b1ca2d9a1771683bfdccf7195226bee9a04bf80d642dee5c69919b63b916fbaaeff1bee09e582f8afaf8859cee2bf4dd9d9716434be13a6ec24c50872737d1c3dc15a499544000250614a1107c868db8545537651e0b0ebd28f82f5bd2afc67fc68620a9c55d2bca1f8d60c7373be05484d71d31d141910a61b834680daba2c1a52ad5bf9ac264efc0da7d4083eb699fd6f5068d0498d9e2df080c90fe76999983551cf09c1e018a694f04bb004fd23148843685b87b0a9d5725d973d34e0964a8d08cdc97321a3b233f430f6cd9f84313c8c952b1bf34bd83844e1aa352a3714abc60f5e1c7ac2d2b52457ecc51195849e3f63cc50223ab360282d1dcf68eccb90a05769f3996d174582d87de0ac9e98f1dc7b892b334caabdf555173c0460ed4b6462ead1005a16f7ef8904d0dc261645c65a5f07a2191a5038f69ef66aae01987d5ff376a346b08a9e71fe76fab5642f4e1a14fe311ccce334ea4e19afb085b4264d739df646876a7914187dd9692652ee7ba5e7111713841790e841e10e2e148e46b603f0c03ba6d2ae16588e6e2997f23a6257bede46eabab9ce9bdf819a09a305fe83dd0828937272d42388407daffe06b350accec875c7969335451268df172365927ee007f84f63cb9292dd1ea72788b34d4df95690a4ad27093f52351d00b36b9207e01d8c35ed6080e8d2fc3e102cf9c22e745d47dd97ab781b7c4a2d0b9a107f1e26e7c5c58b25ba676126d077b5182f5933237ebc382403ba89613f15667acae7b7e65f5039be572b175a1b5fdfe66c57594d94ffe1d14201c12513ee1cd4d634b4f74242e72073e61be379105f7a6691a9ef068469ccf306537855dd6ddc892d8c3ebe3ddea7b00602f176282fdc5123924aba8df7ce810eca4df6b2132d9b2fc02d8430204bc859dbcf660506ff76ec7eeb2d50902b5bd03137e5eff226614fc40ceb406ebf9fca2b61c4ee3879ad47687ff9403308eb35d5b23e7d1c6759b790464118a9c3b882dbd76e9b9647b3733520480ba7f6447e5d4d3217d9b9854a65def3f9b9c3e77a4e2ee1953f79e774461624c231eca1681f632382886cc6207576f28dfb73a0e502e106f6b42c0bfc7c185e0d6f0628abfdc2d582613a5652cf29bf277f44e5789dbeb21cb6a97bcb57081fe4b857958fcb58fedd01aa5fe0bab0e870b600823794d00a316b3bf0e5a8acff324c25638283ab09968626f513ae66a6fdf4084191c1fd5ba98e88377f4fd63e548b9b5b8bca5a341b819ee2742b550d5867576f6e835f277a74e2f9ba9c2a5bdefff46ffe208dfebff38d10972445b7893caf45be3c7c2e547f43e97ed1b9a89d5d8ce573da8b782509bebdf75bbaa886106ff3cdfac4daa77b31e5dfb6fd0dc3c04bc798fb7502c31e6312081909cde411351bc4e9f21485e91c5817e7339c8ed69bd7423109ac89871938561bf821563b136b4daaef1ccf1aec4c7729b0e5fda32cf579f4cac143692bf310840a4c7b011d9f021e55d206ba953d82203a425198d795dc4335fb83f42c62b2e278c03075ec00273af5d8d203bbf18a93910d832cbce7e21f82af592858dad4254cc9321042d3a2de26dbecaa58a14261cdf42dba55093a3ea008f703a12418852c684bdeeca324b45ec1477178fa0300acb56e4eb89657aec5af4ccf7ee1ec8132ae7b9e7e27fd54778b7891cdc9032ea8dd45754b6d2f5571896c92ed05a1a5f16c35f5895fd1007c832600a226dc4d4999e75d38297bf440e92fc655c9d29f1f9003dcf558f21a8a084527bca002e051631772c9566aaf182c89553e8a26280165ec1287b67f5a5986de008f8418a7aadf4933afe1cddb1fca3b903c34fb963e4ec8bd36b26842ede6bf99896aaf069a7ae982196b8184fd3f585a1e12ce55a58c68c9d62afa52054f7b0afd8e488ce1f4d4da651c9b9730f9adeab9377dac7da873c64aebed8908d9fcb4878a877301bf3cb34e6acb9d21ae37febb655720c91056b300e5e7a7fdd500d4ba3fb55405ae08353d1d21cbaad6ea69d6de04c75787368f57f24c2e25520509ac658542d527fa2ebb7b5be7c1775196d85747c64bd48b2b4c2856b79e9aa6c1a708ffcb1c44f76086d9a2c0212acdb66a9f6eb7b1414b974580c453acdc1b6adc6a1220e7c6ffb1725130f5bcd7f5e3050c13c5dc37400d8bcfd365698cda055cf1fe7d23916a08ecfc07ee0d972a914c0756b55dddded02d254b9c59ce33a94ea0b4e9c0a714a8b2db914be93e8087218df8df46be48e70c56a576e49511efae4482c085fe96a96b78dfe0d76f81eb62ba5e94edd58d6aa656ab21c97c7200a9a8a408e7209306f0cbe42309943a4778f273bdcfadd35c37a9d656bf040c162fc9357e4b84195bc8ac328165c2b69a34e94fea6d985569b4a1d6290cfe719dc48d93408d1acafa1e5ee13792c2c65fa94b78b53a2bdcc657ddf5c539a8959567d90a32d2fe44b3d8e2cba18dfa98f44248964a21c25afe78f9480ff38b528d9401f26bdea0e91783e4cbf971bdf7d917ffcd71b1c4a072af46cc383f9a7624e81f4e27a408ae28f7360ba9b05d967667001a1b25cb1fa0b6864c0c8f193d9b4ece9dc22116b2b70f2dd9d1f207e1c01a1829e11a42c6e55ece5fe9d59b732eef4603fc57abaae200b21784b5145140e13de7f94ddafc83f440f109a54d6f23c9b70019f32b5189274dbf1057b6fb22c9a38212979e4eb3af8b260b70747035e2a651b36769e54f4454bb7f102b4241483b5ff7052d3769efd6dfeb269e5364dd97d1acf775320cb4255c42b08268aa040081c4f79638a07cf68bb80b0dd5f58bbd2b36bdf1d37ce7947a5bbbef03307f9525668f2f8ce7f4cc6053f909bd5f13ac1c20fcbbe93cd50f3788f56997c80409821311b0c1d0e58d3242300dfd79df55916922f4ad7ce1b6ab084dd4f4b27f5a08a416ef146ed044b3b40d7046f6c17f4694bfb403099857fb712e4dadbd2b0d653002eef2570ad3c312be5bf7f47f02f07d80aa20145cf8de68e28db82102c500a4ce72e305e2c648bb7bb1fbff78cf3f6ab95501037829370714f40ecd39ae5114847d83ff2899ff80c39364aee2e0b4e6f56caad802c7692810e7fe839161f3ad2e9650506c3ee5d433477f0d5df280a9d7c82a024dfaec01eb2aae61559fde1d7324cfd0c71e1e695a389ed4e1aad34d70aff3895ebcd6663ac477a7de09caebc8aefafe7097016a47e6f0a29c293e5d2f97fd084adbefae38eaf3d55ce0daa2e6de0f6c4ccd4a62b30487451d091f757467aaf7e74379919f8cd27083c7d2a4820fdd13766c172dd00febaaf9b392743d48ab2c2637499415425ed87b2852b34657c920f63c642283d3b2eb4d2ebbc4831e95d3c36dee1f85f39eccc567d674b36c111c9d1212ff2427cb232a356394869a59725bb6e814057595211dfc6b264ec635e3e765b0a4fc2f7594d1fb30130a308d0050b36d9e3d90eacea37bc2cf12c4685a611acfca4b6f420fee6d512f1d24290527e68adaf47b2bfe373abf6fd1e1d0e8a8b6aaaecdb227806e289466a49550ddb143d90bd743cabddd24ac462ae822905f6abe42f28c3e482cb6e48a5eea744873fd29241aae5b56d7db2431d580a1bae78a795d42db01d521e44efd4e3126c9a0f65201c378c5d8101a8b3cfe216467fa4a30bbbf59abbb507157ccaae779787a1955a524e4058870c840db4146237638c67eb46d8bc828c96203df811dd0a7c1a782f6c4961263ea670da18a17228261216c43b6823a1ef84b62511e5f758a29a1504d2c367a7fe29f3e47dfd525b1bfa06b0374407662a520ac3923df57ef4fc2b28fc2e3388b682d581aa837527e9c4e133e95871449df58e95156097f32170aff569b29430bfddcb45e897b4bf629b5357088f45a0c1d876852143aa7c08ebb07817903833bda5086194cce71cf1b5c798f830d52deb89e428368c225df0a7ac061507581db849edc0f924757e376d95b2fdd5c213d69c8c0eada8add6632b35333bdd46d28dd0c0e9264adba644cb64ab3573ffe317cd1bf62dae414c38ff3bcba323033aae154807e92342fc6298befbbe42e06a5a30a4ed5397dc48c9086917c57361929635e31b2d389ad8497cf170d0b51a3e8c51394f84be7b55d64e942aa34b01962d0a567789987382dff4d3029e76f74fc156119ce4f4873b810d1ffd8b1b93b20e5d9228147f1d278f8e50541e8b3b2c27f0503a2ac37e366432d725e5dcdb87567f17274e459e88b753ee378d5a21c4e73d8148b7b6f636fca255e952c9b1e71f98d05784b97d3adb86fc8c2a4739ea5e03671a65f3e977856fa043e5476568eab0058543b332d772258d93539a071445667f77de69d1425cafec4908ec7000a3b520d4c8d037140779315248f3f547a4a48b2aac27b3cfdb43b6c52984fb009d5bb6b2c8458d60158a2206241eba7ee3a7a83943fe014e1d75764f8b3378d399980b57de1a5dbe992f7110853cc11a75a578eabc918b1dc6116678cdea3070e7cddc2b73303851f9540177ad9da4bd308104962b925538a6883afe2bd4f9239d795d369d78d2740c95f742624eafd9c7e36664244102a810217793031fbfe70d7edb201a573c35a06e320523fc1849196c20d6319a2b756e3c023193b96e6f170dc2b0285e68a0b2e41ddcdf22d4743ddd92fa840121bf6cd313957746ff68ea1e31a0f553d164cb58d8c2e09581c635f3cd5d26359dd1d5b88343ec090366065341a73ead02dd86c845bb83cde47021a3597ceeecd9cf697769150125aa6be71de54ba447cc905d5ddc4488b9748b378b8fa9561a9b16d45b063776b6f9d23944b4f3690a2c80fcfec06d2a5dde6eba9ab759416c470965feb583a26b263e5f156374f9de4eb957e60a12bb30b163438c448970e702b40af92aac597d925e9648982afb309d838f38e5784130c5a80c5e8a6e0a009497d674c435001b69d70a1cec603bd9911401498a7e167d741364ba94fdc9a7a5f25955616f9e3f9bf92d0b8533c4469e47fbfbec675fc8c480da0d137d515f97bd8b4e27b320eb810f4c132ddfb07978dfd24c9a4975c5630714c6f92e056f0a894cca7456e8006fa3fc86a34d6b80eb3a5e886b70a0da21cad0c46e1aee1be79aa82b3885db7e5500b8df6393c0f4a17bad085890c11987b1bf224157ce104828c1be70cefe4ac97c26da1fd928f50dce4e4fce5afb957ba6f700bc0789ec2d7ed49e97859a5c84756743f67af94f978a7c3b1da35203952a5f757a2a163c6eb31d50ff65b8e96e04cd08dd3af846f5161741be64ef3b655364635f56dd47de8089a2a58c507137df26d8db9b83a58bdd6c2599c0b6c681b2e43ccb5eebd3a6cd2dfe5ed8a9c4fb009fd27ffcce10d55c929e746cf361a94ef6bdd5d9ccf40222c823aecbf94af842789e1d986816579ddd89bb36cf762a168035f43993931452eb37498216ac2221d252e7f6b8949690b7fa6177cd9d67fbbfeebb14647093a4043ae25fc2e173a169a10aebb1748a180ee0f99946b5b5402b968b9b5eff567301c4f28506a7438f16385658242261de9627918eae447c020a6d109a0e32336a3e8bcf6c9f9caa3b20a234c16fe1b1a4079cfe32a41e7af499a395b52c5780be39683bf399a3359d31fc12a3b8b84f80b315ebd62b924e39f6709648952d7c0f08b149aa7158801b588246650b51523f8aac27182ed9d538349955e9cf62297b2e1238de8d2b790f699c95fc26fc8e9a310e79067c7f7f6cbb226c9642cd13760e19a0ec50df326283b6a8671aa69278d2682edead22cc7276006fe85a2984022a192d3bd065fbad0ee254dee5354d570eee63656a7f20a4883df3794a1d966cdb7e2ac1f38314ac462f388bf7a272992ccdb4f1ef2b81b3b0f3b2de5eadd57e754fac2b5e7d53f17b3d04caa61b8776ca4ed559b03170baee860c479f4e999add23e4b19eaeb3ca7cc9d22d2e9ae20c8f047445f88139e44dfde4b117d5823fcbd1a91dabb43a4e8270b91eaa7c007522e99d97e18e22f29ab21ec52a3666da9fd3bd4df7348c99c1e53dc3ac226c54193d2fb08900d996a18100fce49fcbedc25c88f18feedfff45b6678e1b59b9028178569bed7ee6f10be16994b015cbfa145309d2f67902816911c9b7bf2ce2b2acb9aba8359a0c1ccd1d958f5a3996e12fd9038102cef05aea77bc4613279e88c2d6ee84c7f502e22f36bdb72b8eabbcc49e40a0c8aafd51a8bc0908c50d32073d572b4b42182f39cb2da123e8c82d18389ab3c01e5c44b5791c527906c7dfe52d5455bf8427f863ed22adb0fab02223e36b99e566b399c952e20efaf584adcb877fd5a9fb85a1f455b5bfad67907f30c18ef07f37db1e2ca6b9253c7a755f0a807a9817c064ca5d285aef793cee9227f579550c1e02b371c708c70c74719c977a33129849fb6e245b0dcd6519e55016b39f31ec1533a1cd2fddd49d024816ed22c11a36666be08a3c4e9a733cf079082b8938aa76caa1e37913b78f1a84323c956aca70b0adfea6472edd7dcc32cd044a9ee3a671f88db3350fd79eff0112047205b1d8c3ef19b3919684d2ce6b1b5d0c205ae4b112e12208669e743caea882805bd2909e2227ba288cde9137dd2c5f822304ac418a3e08a90c937a6abdb50065a11f8091281a5b0edf2c88b2d996b4a5a5234520e2ef7ba243dea1c9ee2a0daf51fd3333e1c952f6e70ecf01dd1d776d2dd8e4e85d76fabe8d860fef9f4444b4c96afe7a658ef1c283f3d74a03e529f13efb2773ae136df879621c39b1ec2492c7428ec6d3f244e3d849a9e026a1c0a03b57b2313ee25ebda83938c1512af79536aed9e87c2b2c5fba4ab6ec850adf0d7868c3be2898ae316da98d06b663de5fb59b6ea259f8d633e8dd462e95bdb452b56026196c0792db66d09d8c77f02dd5da49fa8f3367c5fd045158d56cc5434e395b8331fe57fcea1b46dcd96d4235f6e596c3e32a49c7d3edd6abcc7c7f4b246e59c6b78211c9e3185e4058c3d15e6010dd0c3d775ecf731d56dc64bf050086becc02ceab18b97339a8f46efe708177677c3d41627cbcc7ecb6692d7169ea967b8afc06743af9fab95aa0802792e87a17e0d9645a1a605a99f41de63f0329c9a17ff4f4977848cd831255d82b1404d3aac86bdd5683adb3d7da219e24b39b142f005338ef422d7bf047818b37df4e6aa783711710a168d1326e95a942f2f7282d77c6fcb200d6ac5b60dc3f75a1daae90e39721c2d474b2daf2b18ad87491121ba260308586ab70faaf4606c7fd1282ae3200f8bfb6e4d0b1aaf54298ee79fdc916f1aa342db11d5257edb5b0b181618c0fb5755dcb86e713f45226329ccf61a4af345d9e81c97d8e9301cedc184e88e02fea8703a8008c1b2c082a89797b45aa0648410a8787b14d92dd74f0a007a60b53ef72ab0562b8e47b293c5ba5c176bd10a8c8cea6ef8cf2b598147efd4dfba32d8de4798a381880795ac4372776954c9e74f1a2d836e9ea8b7a2c626d242e2dfd2b4275782731ef089b189d2108d1897df473db8aee76d68fb5edbc24637d4372117b37a8d071db99c977ee0f6cc322c4f813be0680763f0f2ea407809391f6003223d867151e5ee68621110b98e9daa15af3d75faf93b6c52e7d4122f09092c1f7eb766c5c2189bc585b2ad2d1aa619e1ccdb5b1b7834719d3c5429b707bb4eefe1cd4049dde5201d8437f7939891b05f78e9e643e7e2035245985c368f21f027f61a8ac3089dd25976e23216a791e9c5f5e9f76d0ed7ebd3cb1a60c8e7a795cc617114bd925924fc80367b0f6d38aad3e18aced040e95a4bdf09b568906ef541bb20271eae83a6557c7fd1c6b52cbb505521716ac3976ec844cfbee986b9ec625e4a511d9d6138fbaed7f24ec2f9b6e05c3b076ec2bab12c480c667d3b22942bf315d672831f8949c2f1281ace9af56874aa7ae968111a71fe859ff4c53728a4b0c13c4e3037e3a69255e8ac4a2593f8f6f89bef66bb52d359e686a060d7636dda4a781c1c36dbe1667b2f49c3dd061cada439a95f4229defe45892b33015dfd24785b756478ea1062380c24dc9d6bd6a5bff6fa60292fdc9b40c59cfdb4b4b255e13336e2e1e898a965d9071ae91df3b06364f8119a5f6db5875559c1609a56c0f346752dc76a30e3f9353b7628bcb87aa7d19c45b4692bcea331c02b6576957f658f4f717653b1c5be860cf4c63bcfeecb9cb3213d55c85b6c7675a59c26437521924e159c3f90d59bf15245c5d846982f27dba94479476aede8ff122dee5895d2f5c5c5358c71455bf61b840dd0b7dadb6965a8df64d70e78fe3075c638a622b782340c7e46ab8a58aae4ed2720c59839103ff9eeba7f76b7e7f0dc170f4c873ccd83489ef69307aca775c80b1d84350ed4655feae98d3fc4bad8f935be7904268eecebb18eb24c4d5b2269ffbaa4351f46ed09e2d8e05b7c55d7696f7a6af6ba874ab869b12ae56bc7f7a5396e739bb32a0ad465d5dec5e21607e2c52c97577b3939329eace136a8687e53d0a8bbc50bcc05e49fbba8a387c7146fa03ca18dbd95be97e883c4fc41324c86c3d731dc695b1450803cc5407b204baf45660f3976999ace52fa4b8c7aeca9fe387f1c729f7fa455ab4b3996f76ace381c47f03e916134869fb688304cdcc8526c22ec4dc6fc217c5d97eaf8738f534457cd7ef3d7dfad05aebe36357a931389fdb52b4ed35c16c200685f589029a1a17d3f14579040e20b1a0d27890640f5993e96ac4eb47655fffdc12a897083f6c6e8abce1737db87d7581c4105eb7d11d5c28aab86cda85242e67b9e0ea0ec679034f696821bc15c69f247351e6d91d003a4f40b89fceb92dfb65e42801ec431de8bc5eb560d6980e7e65acb37445e755ecf63097c94f8355ef91291a5c2f8c0a001cfdc9de348b98f3a2db9470d2f455262e8a2ce942bc18b1d16cbd0646aaab40eb4456806bed73ccc5c0963e7049a30ad470b67610fe9214cb23b4f845f61c742fec4344d5bd38932255e9f8e1cd16e458322780cff8273fbf8ca4c3c62b969b68ba22ba8ec891818da9e614d64ab05cb0666181337ad2a29a404d7d8277c17fb064b306231aeedb87d038f9dded28c5891c8ae8e94fc10ad01179ca460756d0137c6086d2e56ae567a017e49d07482e793c62fb539dfa1478d2c6db753841fbe33792116b77c32dec06b6e1c3d84473963a5b25bce8975ed586a53c1a7a901258e0fc44f716cb0ba01c59f952e5b6aad207bb63edda013c600f99f97dab6cd6758dc652e7426cb8f810363b0c4895dab2917acfdbf5dfa98b3879ff2004adf489166ff03f0241991f5f68c12f1fefc1acacfb913ff83885f722cf5a23657dd7b4930d40caaecca5700f3b9cba4cccba58ef4b35e23bd905c201739758b14acced663e540dba9c7fc0e33eeaae84d8514e5751269528fc425e5c3989816e133803a8fb76639f76632dff6bf01c7f9cba50e8cb024a2b6a39c9a5f88f2a432b4b8e21c51ac1d616cca96454b529312d0fa2c2211eb94e9008b20081e2524f9e86771479df3ab56f10bf588289e6da036acaecdab466f400c09c6692aff74102edb8a9a9c44f18ca9895bd2fc15210dff6a5eb5c73ed717e806d2eff643f5f277d0e5d8fdd61c863cc15d8f6f0d0239c161449099ecbdaff266c0d8c92e8f034eccf5804e866ec54781d3b8876fb151ad6e3bf0618d3f5373fca4f6a003c3f7b8bce80b98c28c6cebdc39e70576a7c16578073a8161eb98ea3637334f7ede71d30d747596d12172461a24ea5bd4211a48e410482fc6faa861a44d8ad21102522cc1fd200456e47a2b4259d03c3d0e7258f9d3c68e3ebe155b088030d311a30128fe9208646a82060eb36ebe257e0ea94fc78d383f227d67f0828505ebacbe8176b8d06c422315e07990afe48c5c912923c5dd69b94ea1d4ad43c1c385d24979768480b1bb085d448fb6d4730cc5f5d11ded5b00da71e752dba47aa270c9d08d42805f010c2f925b35078e501af82af6b78b52af8e0e3c08e0687a6cef2ec3a02bf19cf470c40e68add72c5f3da4388b1dc11711f12bffca71c75ff9cfcbeed8a2d17bf6c71fba1a6dade3d47616dacff17d4aa60a3e25e5922f7a97d976c75f9979366e96002d031a81c2776a8b34d219dee3c8a2ed035e13386175f72ca64bb8465e074dc5934ab7fed9d75fa7e12dd315e2491b2dcfedae6a0b94b4bfc63cd9fb1ab3f1dba3d7d73c1c235f79dcebf3b22d6bffe1dccb9e331121587fa8e77afcbc02a947c01bf9ee70a44ad4ad8e712b1af75cda7f20f6d5c262a6093aea3ff3b0d00bd6098285ccc1a56ece9aa429268c652e0bc19102e4604c03738b9e9077f0bc10ca52b41dcc84dcb71d45187757edf07aefaea8b8d4f303ebadefc5413838d575e1a463fca39fdad9c07a5b0323a5fbb93157bc8b11b5c947c2261afd111eb33230125a89bd259d60ffa0e75acec06580514bb71ca9b54104b0b12364bef33b834d7e70f32b0d77778150ce41f83409bf3fc18432d392dd1f51cedf9018ec38d769b5fa20d6fd15bf7923f5e02738e5275ede0e9c651412fb48f0e6c0cdb5fb4fe0a338f0d965dfa3b9989f57ec351610f12a5bfb46c6c9e247b1e5f8f9374ebd77cb17e486a44b2d62b9d417b752c39e5d2bc383ee12a2ec88a724865a42c0ba002e36e548228734273e38f2413af1907f45e82b184c913f5aeb2441a917f68140c732962036ce04942ef51f7b74ad6f8bfb80a4e902d58e7b103e9ee6d672d007eb92c561b5dd7bc8626861b32dd78b72a925fa0c10cc9e7ccdacd99309a7832ec6dd787a38b8451dbf47a6bb0c8c85b08445e8a89378c5d064d2f3f4e114e2043fe358c8646b71147429500be8a8eb4ed2b1ef66c091cc0bb0c3efe462d73db4e56f1eca18769abfb62f684daf3ebdbd98156848ad5f1029e1be9502f72557e97e6b7ea1bde9ffc45bedc0212231366679106c7125f72a10535410102ac7bd8a2210ff1124d4b73920b1bbb8134878bcd2694281309e985ba249381da04f01487ad8809eb1f375574216484180bb5940225a99ee56f9be85202d18b866f468fb161489c38e848e9a915ba67148360bc1fba24b2526481b5b7671baf130acaed35d2613fd045f500acd5f2855cf7cd99dd7534257d4441008466f2fa2d3b6326a611afc9d24961611a62f546e9272ef062645f6b3b5b58f42627eec20734877eafc768d164ef221fa6b0bb85156dbe044744d0a65036814f5f4bc92e099def90c1e0dd9137ba70e6a53f775333e138859c1b02e6bcca3b7c16a0dbb6605a402e788e676c1ac3924bbf77c9f238f722efed9b757f57aa3fc1924e3488499d978a7c5d2598ba41e51283d9178dd8dbb18edc6cc3229784c1e6522f7d50897e4b17f81407724286f9c23862ee2b905286bd045b4bdc8369afa39d72be9483da2dc8d1fbf37f9c59de15990ad475519d43c21651bcfbbda40537834ac39a01c7564094b88a8b7cb4859e3ee9649def33337e48c9217adb621570cadbd05eeb02754f67f65e3224ab68989934e81bfc33e35246bdd49d52c6040f9def07247fa59db0feaf9389a994c242874956649e592f3f67456799a3482684bef9480955bf9187012b1398193be5373bc1fdde79043026ce5b6dde2dc517c647495a5e94416c58fd70b29b39727a4cefb5965c1847d8888158e547a1e37bce4b0e1ba4fd1688581f0c8b653be1e11c4dfe7bf8a5b0e096bb62516c8d735bf987b8708d6104c570053329b1a338d7e367fb2624e7fbfe1c73052008f2a424474ad1571a99709549e6836fc49da328b41a8401063b523b1ff535ddf365d1beba5ee3ba8d8660c1c36c7f481d9e6798dcf5cc21aa374ebbf32b01bde753edf566cef2ac9f47ab605affbe3fa5995121015e9294775f70f6e6c13dafe99fc2f8d55e84851d726560d55a09a206d6414485dba91dbcd3a598204d177c59901dbc40eee82dc2521d3094301b8ea528373ab71fd92cc751235b85a2a39421edbf8c080bb211c8f771bfb4bddc5a246e2affa78bd3957665fbd66aeb8e119e77f9d3f2053421839abfff68e1259be0b69b00ebc0ee7b7de7fa07715c46c1fec2a3bc000612c96e3be07ca885bf66c4fcf533f75e6025416d32df2cd4c072f5518895018b28bedc4b961029e15985df7443148f7d4c7268036d5b68e0adf069cea03170fe15214e44aee9de71be8c5f7eec483e9ab56b2a05276476ad51b8b3bea2659a2f2b294d0250b8447e036e501f9244e9b2484aa5a04cac5b9dc2583cfb1ac5142892b94539f5d9d993cbf465092f3a2b7dd5293de0e166845268a3ea0534dfd705eba7eaddfe7977f378ba8b189ea0b0bcc865ba8e7579c75fe5e20bbbe6a2b541c57432bde240287731a202cbb32638e60a820b17e8c8718cf6ff1f7debed7fcd5692ca4f99887b151f6959f9aa02b8f5b691ce86eaf48ba48c817fa35372d51ceddca41432b9680d76eada9d9a7aeaec626ee33519365965026243dfe72c1f93a6fe7501ce035be8c8dccf6a8bbc38ed2f5467e3a8e994b505bec37038109e3131bbb12faeeb0eb4ff041371905fb19f026049bdd772c27ca3553cb083d733d39fa8aad72eaca4eb8640937f11aa1234e3abd170ba256ab155b3b9b6ff8f1497f54d4516bdabead35b9f10b38728f44029e6203765c83dfe0f64923292924f5a92b32221120e53b2d57c58c40302c360aa80872f17647f7da97383d8439ad35574c4790c5ee27c127c3858649b0d60b66de9aea5275c3af4136a29963dcc634ce79b3ef2583e1fa6e5cf03b78215c2534985a880c130949eb3b5755d5d361ca565ad6b8ba9a5c6ac9ec4b5707496288c957b53b453a272551a0b147ac9968e35e4584823a08aa5f43ac03a33b26d6b3e2c8b5716739991447477f4abd4d9620c327857b3604625f72c61bcc5ad73d8fe94f2dc3db122b221b4ac05883f1930a71e9ba7b727f88f1ec695d8d24720664e9c0f6e4b36b876a0c2c19e0c16ce2ac096d2218fdcdb4d589ebcb859f4135a8ac0e85154e6ec68da69673703a5a605fd21e36d2813aed506ccfbc4e861b4066b8f10da84dce5b502ecb8533219b2ef2d7e081063dc8401abd5f5bcdcfbfe1f03015aa0fdccece3f94d162343496580691a9cad5c331612c323ad28ff8e6bda995fb07b6d2185812101052b090a7716688a1f6438cae57f0f60cb4e04367336ba2054f1290a67aefe759268200e9b13a59338d2214ecd7aa2df9b70d5f66395dfcf15cdbf191b0f1651c249be9829f504818e1763913911383ea2df5e46a6c2963fcf41e6e27aba0ad50f6277366cbba64b525a5cc2f6145d30cb20b4cf50b30e7d8d375f7a315d2f0e75d6e5fd93092f4b7779a266430c479d74a1bda0dc5ed53a948e6379b69b487f4b674314e8ed7d160099b3ae51949c442e26d296cfae08cc1ff06ed83e17cb7ff00f6588dc5d60757c2cf13d093c1865c087386137c37724302ee9358b4bb782b5efa3c32f9b212e54771074eb4b754d4ed541bbd5b4949a2f90ea5106341fc35ab7feb6b6293711a7579ea94921fd5ed7a21509cb6c76225750075d0be0702a7305f3f71a3b76b72f73a65b8279d933aa2ceb6ce3039718632ad6d0b61c3095e1b760081ce9cea8772d3e55f9d8ed51512e74eec61f2185e5bb33399f9d1757855cb6d1b314957c8a8514b85bbea0c3b5cb3aad55dcddb1e620b84cd1fe1cb75a88d491c6111c81b6868225ccb6400ae743f9abe30bad8198b9098569ecaa60280ae4efbd10c55b491d1a5dc2306cacc59ad365fe5255c876ae704ed0cf666ae291d758ff0951062039c950e5c30f79fca6939731d07e45930c3325a38fad6f61eaf4cf2a5f835a8c22f6bc9c9965ae04652ae7f843b542cf9373708aaf9b803c77996211fe43a1948c551f869e5eea6fa352ccd128b66ccbf15089680c6649912a60f79e2a9ba11df671cba1f2d8fd8e0431c111d360e24c50843cadd42458507d70e14bd6bca17336986d85491c8d149931cb701b984cceb221f1b4a8ef2219d6e8333d60fc2db7b6d9346cfde76dab576502d5b4cb06991bd915d5b50bd0dce10c96dc9ecb06fcf7e100cd003495446321a0ebae4fd83c62217857120f3d413fd1176ba0a3a33e3b8247942bb3af1ec65b4640387bbcc5b178facc3f58fecc8d5ed33519fac460f4f981747c08d25c63d87475eaa54d1fa316ac4fc03fbdab8c60057acbb490e0c1c6c984192d962c1ae22cac30e6ddde36313d9baed611cc66cddadc29bb611e201a4218c7d13c59ffab3762042e4fa5c28041a708af3ecf3456d5a1fe2f15ef2af0bdb41d5403ed6b45f25e55422754e6089c4ed70db674e9a1e7a05c6263e87237bd8d7e37e1cc3b5f65e8a561bfc228a17cd52eb9cf3c26ee8cdeab963bb76121dfa3575b3ff1243053dfe52512f1d8391c0bbfe372edb456ae76fe2bcbc95f37283584997cd7013ce20b07e1564af64f499fcf1bf053131830f15cf993907b84504d6310adce82f897e4d311b4cf707ef9c4453e8dab49ab4144b0a428c2b78b659afdb085079903b5937980e60b12e6e0b6a6cf64c1520d8eca965ecf8c4ac59c715b888aa7c367c8644f45a0472a53cb80cb652a575b78e73719fce0e2173aa679c81ac2355d4383531eef5a33b609d7148975bf6dd1068bdf29e55dcd2f34d2918551e2d66380715be86a25bef7228a029764c450d8201092ae77f59692472d818e97682c45d9f740954dd07e564ad7d133253db74f172b88b8946889409d43b6a938d452d3c6deb9f43d73e342e070b058b0b492050ef271d451aeb8dfe2ed1bcac8c76e0b1ca360134ddebbca8f2c6aa4786f720ecb097c73b239f0fd57e80bc0b2770120436ee19bc03811fc2d5adedf9daf9d5ec997204d26f956acf1811484bce2c22813a875e69972481eeead7dfa7f03c3050aa1a3591e6c06c8938f15cd549a62d0e96cf7fca36012dd807658855c7db46d6c3da4e53c6cf63aba45fdfd109661a4f94fd0d79d4a7db945afa0dec3476b24778cce9f1c4ef093685e3fabb646fc082f2013326aa1eb6e733e7be287f5fa8c868063aaaea0126aeaafa5ec3f15e3b9a7b3ba70d5341cde2c97ac211314091210302f9bbf45b83afb37cfdb8cb1cd51e0c6bc5874b19b0736df64259d9ef1075f5c59ddd33e63f802400962b45667a71860905be16f73f5f589d2037ae3467c76ebb6768e37e4b8af2b0de1a724864ea8d83f0e5937f318e6a4fcf1b2afead4379078cb0c4f4139561a260445766c597ff9843e9ed63bfca47560faa7c53461b2e0408e202e547790da47769e6325c832adc232882c6f2a5e5c84646f454b96ee8ceee1c0bff3f79b4fd5e6d1a7bd52404b71389dd785cd2b35ee273245843cb2e5017154ee59ecafad8cb23b6160d3c3bf6d1d60ab9636ed7d3a8c19b117e5d7eee295f86dff4e50d98e38d13268dbd300b0cd18ea39d124c120e306afc41dedc01157eef95ae04a3a618ec9528d12c5bb2be159b975c413a812664aa5b3918f633d158def53b5e8516b459e76bef7d847e4a2fc0cf695ea1cfd1a04e4e875dca1d95f821192dcd29f846ffb13b8a482f1ee6d5d3683da1af23f475ec9630a68598255cc585147a1f6e12123334e5561a3be19496c7bacb708e3c4bff96e19a422e69152234a7e8cc88d1fd8577c482f4c0484a89b50e7604e2d9a7dcaf8433873fd2b27993faa88f2746b83416c17b3c458640510002dba62ca7eec094294b06f0a62f8f05de8cd594dd2383954d2f2a717802c2be469c82c7cbc5c0101dccad948dc4407f43933958941ee47772ff1022094f4629b7d1e27bd51a9f7440b3aacbe2b2d5c6ab62be3d00ee62240373db6955ac58edbbe5f4a319e895092d5745aa21f813cefa083b633e7c034253b8cda7581135dd3abb4bdab45cca485a16529d44cd168d768000d147faec9b63745eed3cd89694dff1a94a7d8ce7f9a24e7894d82750ac3392a3eaddb65e882eab0ba05df94481842baad1c7c8766092573902d15f2146d191ef0006949a46f9f85de7784acd1e1e58c30d79f60700f25e1730629117567b7fd3abff61b1b8ddd21f609ea39ba29e7fe1574b9769b4a26ffeb2a3de4502fa4b5521397ff6594c40a84360c1634c05bf974ffa9c29610ae08ad03a9962fb309bcda54e9615502268e3339bf53b92d14dea89076964dc54a02aa22909c0ed99c445832c60bcf25899c26d02533c8063a09af1d41148583a2475c9f7907cb40ee655e28e88055f6e6108f775e4ff6655919acea3145d974da6e10caac51647f5bc5123a6eb1beb7cd1804afae00349b35417c33c44777a8c8cf42ab53de9821f1337ffb57877f51236248de6de7281ea24254002c21cd4882b5c6a15fb23a865b928dce6291793b5e1db27574a76fa675fd6b7b75ef0fd6c93c3dae9931a27e6ffcb648a317f8ece1c9f60359807f02d953b1308d70c21c111df4dbd22151e33e09b550f95d1ceafb6d7357ec720a4697e1f359a5f4682ff5af121742d869d0488fda24f5d1a22fea3a0965db6bffae2f4bdc05c2b91a559c8927a96199330668127bb9bf9851b8f19a81b539951258b198cbecde49ce76c55d37a207fa3ce44dd68b5e8a262c22887e506f1e12195a8c5a6508561612a869ce3059313e3af636ea5d66b3d3c8f9936339e2cec2ef1efa357f14d1d31cc9ec95e3981e89f11c48efb6044fec7154c0d62108ff11bad3ecc5a871ea82f5ee8e19288c48a5b6c5da9ce9ac903a915bd18ad7c2e9c0cb49a45bd0041adb8ef849cbbe22cc3f9fc03a6a938411f3f88496c2975706899c7a5d41b077c11c17727c011e2a8958c498c812ecf281864e75969db2e0f955e3a6d35c1a037da6d5eba1908f76c6a2cdd8edcff22022af5d11ae2c520019da11c2cd6d63a656f44f34118881865b833b47286fe36613a622b9deb7a557bb70f7e679eda360fe7caf84afd52e8b537c3f6b31b193914db7ef6693b41d6a7335c40ac12794bc891135fce2e55b506d6ce05905bf19392b11773a74469019973aa663aefa1d6d8466dd3bda135602c4c09d90264c87a15707f53e8ae179df7b6bdf04921fdeafe4978d219ff5d9d9bdbe3f230afdb9917731f8c32d9d7010466244c91f4d6cb509ddec4d00855bd341ad4039edf478e86c8b8d403c4df312a9716bf95d5122861ec7c2fa23a53f1d317cf72bd50472eaf524288918278feb6dde7f09749936739c8d6e9f3caef155c0a06206427b2e8d7e27247cdbff358deed704ee9a2c4f6bc698d2c9a9525a86d221c8e2540d5515db93d15e0322d26eb223c08354485db79fa584ff0994ef02dfa13d502ca47080bd099f9b36477537e02c8f60b797cbaabc2e3cc571b4b3474742fac0b350d1c78c5ad940e20a2b0000011a48ceaf1844e9c1f7f3c5698138d629eca3e917bb52cb416d6c6abe6c49d2c3b1a9cebbc7c0f0b9a9c076f1467a923159ea71bd439d59e3740deace01dc12b2007b11e6cdca02ce2b7651347e9f5fdc22e4001d00133a6cae465ce545ec5c6ec70153611a79a8684eafda270ef1e31aa39158212369781101d304f6cb94cbd61127f108d7c83103d4927f22b8e20555eb521fcfb03aa05a59263d0e86514ef6e4e1825f71267f071ab45fbb912addbedc2061d9bf5fbf7fc4051fcd0843f39d76c329ed7607a50a677396ecfa3513bc09e1573ed67649693991f7cc82ee0dcfb4a60444631d2cf8c401aa487099f82f09d2e36e05ba73bb6c307962a97fac2fa2c3539fd77daa71f38d827bc3a78a972cc36ddb888f9a28f9501ed6c6dcdb6faaaddec34faec61532fa15bd57b5979dc5f052ce22b45bbfb157fe766a5037e253258ca4b24f259775058e4c64c261cd0175226bc1d95b0e9a7d6c8568f3f2f155a7c9b2144bcd53bb0c23dc49ef872fdd4526dc363e79c777db236fcc5d38e4b2e72b11bbd9770cfde5a66011c606632019575edb8f1c0a4f00b4430403e6fa7a8569093c822be5b6731233e6f4e30cc731fdfec9afe4df885cf1da540b3484934d98b6d89fc66e0523e8ffcd249c52762d571e9092b88176cd2eb7ede752331cee86f6fb89be6bb45f42ef22a8acc3123f4464d90dfe28b9de7374e1bee21a308524177bbf2638081ecd3c096f34b63fadd89874fd8dc89580f2be3b55cd398e8c56480449d002469a68c97276b224394093cb5758e60770c83cd5a094177bfc524ca03db5a81fd273f2b20e4b31ed74181fc734e01cdf95fe2bf0643561c1bbdfbc723994483705ac661709758ed9dd446315ec2bedcc78b0a7987fa681a29c0a19943b8361da7fd0bc1bfd0ca20a391d836652ddf686441de6043bbaa666dc4cf0bfbf3dfb2433d308db504b8953afeae730b5590fb16705357080aae353b53716ec66dcb113552e1c1e1908f7d21e104d662c1b657b819fa38d36b410f077fa90df16475b5e5975450c94525323cfaf84198bf6c1e3f396c5447cd706d0a053ad2f96801170ca528350682e099535c284cbe308790ecea43e30a01b4a2197bea829be04706fc72f058c202ac351a9a94751febb21e1364da584eaaaec3af7702dfbe17edc6153c6f9f43451bf92dd5a39c6857383e1349c6bc7384ca1525853fb465fb4b0784694a9d9b3f716222fbaaa52d369d8580405804e38e29a751976ecccc39455d4df6f9f3c980c3f1dfe2a96f648105f7a5ec18e8784c43d020205c80bb756529c487a287ada9147cf873f147ca4c6c4c4622a685abcca0f83763ec9a0f815f0600fd3dd57cbbac3d5fb5993edcfca3218eeb936cea8bda52dfc93e9f439a4ac82a8a03c525c8cb723d221eba58681acdd15cf6dbf6e567db25a383643132c9a0bd29b709cc88ed16dd4848437f03c4b93b40e9ee496ccf54f48b400e94b486140653e65f481dfa7ce2a7cf0ed34231989b60d233113f22f3a7d5330ab3eafd18a6485228f859f20ef25e252ef27cb00e1cb952ce4ecb18696ed8305346a555f03935f5f3519567065ba9195a2e6833d25fe36447f3f163187b2d337cb4bce25b8d2e314d3519f34aa84aec2be627f8cd9c7bdbba39df1e8badc0042274a1ec6cd401b1c4d5ac4e27d1ba1f71f702e9c9c0604c22e97e974aaf1a27a8e81f684ff213a873f37b37235bfad515d9e756978820e0bdd656fc170be3f3f8d1f625c1306bb0faca0d0e887a0e0dd4063e82888765e71e9a2471657827f0f1a67ee2ddbbd03072f58ad554f0df3e5d10c01304ffa3dccd3566bbf7b26a3d8d2bc39ebde1ed2837138c88d105e7d64ff379fca9fdf844ab17370cacfae619d8d9c4a84c6b231935ad85d95fa67d0a441e5be01e46c6bbc7431cfe2f542a8d10eaa4cad3abd8f8076e6f0500234b003ef24050e2161321bf7d90ecc4e3e18a722e08467fd24af6db44f16d36a7a84d9fec13c5617e5711ce186365e1db8d852bc528c5d0f73b3082990bb543c630c4661a343ce4c647fbbe85a8b86ddd047e5ec983fff817860bfe2983325b656ec947d8395f154a7ce2d6e2c39e5496c1214838a1778cd3b67c12baf168109d2f0ca5fe0da2b77ec3ae4e3a1c449ef7853d04e0a010539833499b59fc961d9d3d515b41f56e7f162850760504799e593205ace07399f72c70dc8d5cc7ec90536312b73a04aa70c393c146cb5bbb82f801d79582f5b9ade12a021933f8e448f74a03a3daa2f8d1373ee7776a9f7437b221a8759c0fbbbc3e43eca7a3fa50a1f0b446c005ce882394d8a5498e04730b8e2072535fbac65af205448f34aad34659779b3813fb38647bb6cae40eb793bafb2edfb5c263ba73f55ab096518d281047d3b2a395f3a7052c1605f7d7a9621c6ff8c5fa8347331c2a8054b1c78cd6926557d12ecafcb6b2414b78350012355f1060ae8250a6c9730761c0d3ae5c872fcfee675dfb007bec944608814a7593296eb2d668ada23f11a5ac8ed453ab336762d77d039e9cb4dc3ed2708dc4cb55b34fa70732346369ac2264256805c39494232f7e6b622a804dd16598e6938c2be28bd9316f3d9ac8a02dc876ee40fa375ebdbeb92789019b0af0d2fa8975141fb0e4db5165880d8278813b377632939f006e6d4a47adc4f3bf49d07bacfe8ac1696c931dbbdc2303530714484dc56280c8d18f4d88bf4c05c83171c7a5ed8f4b247cce0e3bad9a256f842c214a3399b362932ee788f16f0aefcadcdf64edef764baa626dbe5461560aa27365ccc584bc4b8b4f238230de33e14c7be36bf6ad4be77861a08f05c17598da57e9edab44e00476e2c8d8ea20c3af63cee1230fe9e71bb955a5def6aa49ba812120f288fe15138eec7f9b53c8f65ead698a287dc4215c659bbf7df9e15650f1b693d4500c799c2c5b1a47009958e12010c0d409d2ca81d9389bbdeb3b8ebfa1c6cef67fb17e436fd0a5dc40980ee8329b480ecfffd98cdb34578de5bac5904d90536402a144f80c402edfe35578010b4de837445c1212facafc87aa93979221e14de2d5cfcc4a0450fc21ff22d69da18df4b20dcdcb726d40aabbf266951bdf0ca5da71e354374d2c862860b94e06140858b324ed2c227be8d60906f836b3309222beab82cc0658835361b97be04991c53d95a3101a85d5b60159a7857b8dc3558b9b03e71d41b196637c215332e171958869154fab03abc40618355e83a38ebe1988672ee2b2d9a8214a616a2246a2203d1a479f0081bde8cf749659119c073245d48350f119f59d9e405a94743480171ccaac57ff8b19de4b30158aa7c4f3ac1515366e5a051f52b2aa1de3ce00039f919d37c5f912a83f482397e8bf3681d42d9f5250116e5e35bb719498535d43f976a75812c2c97c33622b16651a30a29989e111c5fd517bd81653c5c9f4b45262c7ef02b4929d2870356c1f8c4143b2701a5cde6f2212fc0792175a59cec91d5910be6e023e87de51e2fa37c9335d172290b571facba98b7a6d8b696ff9757a85ead8a9108435a50321580063f7bcb187fc6be4f14b4c486c83fb6b16ab462919b7c507ba819fe737bcb3d91f6f222882a4440098f10bd65f1b97ba75d7dea7a12c975321fd9f5b5a40176cde6ac7641d27e8186857fe31d74e214f643a96b41daae68d2352018e6e04c52cb1b4a60cdf963528a2bebf6c1b0aae53da7c8bb02273aedaab7df63ec2c44a6be511990837ee295235c1e9ce9ba6fd932d53fc7d8706e17ca87a40e325d142f382443d62e63300a0ed4d105c79f10406dfb99842ee8103ba1a6cce5a82bb356a8d63355261a1361d227ca0b70e5efc15cfbf5cc055ffbab67bdbbc3f153103229db4e8c275c17d1954436688f3c883b794dfb0891cca6f41532798297ad424372c5721bf60d045ba66058469ac5f6958e057dd9a07ea4cacc47f04a59de0f4cba5638ac15eb1d860f991ed57b3cd0c6280f203b038199860120425a1ee2cda7d056af0f7c32184a9209f06d33634a6167c72ebbbc30da10c993bc8783ace626094ee77ea090691c3bbb3cd2da49eebecb8a076c751c10406861d5f1c5ae0e91e842cb34a54ec1de182a99b97195c0116f146cbb5aadc16cf408efb6ef2e9e6723b3c6883eac6074ae85106b8be1110ca7aad3b81257df3bd60fa44dd568afb4767fe0f511315f3d818d8e1f45e14698545ef087fc148c99ab8a0da3024de81405e4a5f6bdf7c039c2b40ebe6cb4e623e5defadeadccc190f45718cb97eef1fa1c9f1be00ff6d950bbf1c81d41a4947432fb1305588f3e7a4bcd2891b7c8d1c4ec9a151bc8a13c43e12a86fac5c5c90b04780c6b1bade7926d5d9b9924824d4847900d1750d105ae77b40f210240b4e376e363b4d71538543ca20faeb3e493efeb195b6fba871362c8f68604939c05466cd8320283c1db9fe2c162922b76139ab98646e813b11342ae6dc187240053ab35e8cf2f95124453c7999c00b85db66c0c7991dee11f975d2993903f434ceac66b69551884e119f5b4a26086886d03819d925aaf36710465f74955ee9b879b2d26497ed35ca578eebd37b8abae687b2610c16d0ba4c346b156ceee2f55a1c0b2673101a527f2979fbb74745dee9e27d89016d572abe0e6d46a8192ca0b6073b50f74690b10e35dcc68490431ac0f651cb900b2675c3c63d7b1f47a65714f56a389cecf1b942780342e21653d88baa9f5efad111cda51d3c6f6d4246f39cc127755093ff2a983d0e757e614d1506d89e79dad8a8ebe721138ad537ed5b5bde9c052a78450158c18b8f5cef25d03bbfcf6322dd4d6a6c0ab498b80190db815829d9a65a5cc077272e907e31919590c7697ffb71dcfca1a69e8ae5fa495a013cd26d81d778cff81155b5ccf27f1299a028ecf27fae9feb803626cf0a110604a44b4ec5f6d6f47fa49fa77c3b4080f4e9e2fed18ae8a4234ea8e5aa353d7a50ef914930076a8e3c40927c3ec7c5b1e68436983c27f5fe10a750e093d449a4722f8bc7094b94fde430f03a44beed3d30dc6c8ba07914402111d5475311951be2bd6655a4af66f30dfeb2a129c02205f55df9ce85f89eb32de5fddcc1383bd977ea0685edb79ec3a189719bb12c5e113e0d75f0a68270c64b08117359413fdb9101b582e9e112ba8581d9f66dd7ef3043e66db18f6441fffeeced23bcbd5895fd1d1bbfed7764a229c3dc2b123f5f2fa25e9476cd40077670d4c4b0f72cadcaa973a00bfe960c23488d09982c708c42fa6c11d54855d8a2d8ce2e0b1af98a003fd45aa73125b1294ff2c9cc86b2689921ddf1e5a9027fbb88f23de227de8b819d028433c512e9f63d7deb7f7253b5c7f40e9b1a2fb72bf9792b2056e71c2f6a52fed4bfb68455fc6068f25513e1fa1e85161d8c2e808c631e2a9c2ace6ca6ec86aa4051c1337aa36ea2cdb36d89f37b39f9a567fe1d67ed120a2ae8a53764ca6b77bd8403919820382487463f0491dec96f6050f76f652fc36de46684449b5fc6b896fa1b847545051102299cd823eba2c0c1089afce0c53f581ad6f07183e616b1ec98819ddfef43241e2bd92ab124b54a133446a1d0e47511539735295ec3af7e8b32a5e420912432caec09971ab84e25e102ae87e8d2ab9219efa181104c8d3741ac9f15aafe0a33dcdb555e6d12505bcad1a43caed2d51d57c5b67e9c2b92f88c3dc8d07d33f477b95b26906c5770de2638900e9c24e798447c67311f9f8983d7873597f2493b26458b464ba106eadc17e3149fe9c4a9e21eead5ec1daba487d701a81a8880e549e228f15220d6473ca6a3ecb50a2a659cd441ecf428dda5ef5a80480bdee21896364ad238392e8d36f025a851f302b9154944e49821ce31a3aa71bf23603af2e9cbe0d7a9094ef39dc032afeae08f892aa8ecd10690ab01818158a27ef0caa4e5fea7b71e9defa76c6c61ce7a5e7c96b3e4cf43625394a6a0129799b6b552549165c60b419dafa9d283d191b64f7716e53d8d1b29ef4297fcc9ac8369142321d784f7ed1b1a8b095a6d191df3d6a1092c19fbac6aa87fbbdbe7dd2afd15102c63bc346bf38a75e6556d96cf82eb15cbe4c72237c1fc25505dc270d0ef87ea68cffff500f65892036a2b8e3fb153bce8fa4f4afe102d6ddd75afd2664f210a9ba86547b08aeccfbc3ff2375d09e2817515281369500b306010c5b20bf9bd2191183de5c432c20fa48da59f92abe095d3d900b9bdbc4ae575982e7b3c4ca8f71f0674a35b9968e6d7c843debf900a0b78bd6d13e3ec6766b970d38f679b0fcfeec2df2d4e0e4112dc6cc1649ddc44311f8314be2bebfed981b4e72de9ec3fa72125225a76a898978d05f4be76d0de98ff537147425568fb7b657f3927183006defed1704cc0f3b79bbb99ccc5195befe497b281fc467e877c107ee4d9bf3b15ec9f7070ec48ae6d1055daa2ce517761569b54f4183035acf7f776f0f59717c914183b5a809fbd57528b03fdc7352b82100e45239c0637f4ded3e0a00fe8bdb8fb58b5efce08712f87807ceba1868da40ebb43c0fadba819534aec2cb992fb5f2a299121a2acbafa07ea246c3f6776448b3a35e9d0b7daf69142190ed90744192321c3cc0995e4be3cad38497d7f4c9b0e0b1b948abf8922ce373b78b2c302c954f204a8e902bba24ab6eb58816a84c4aa2b30078f54690424f094c7b93edea04350082564efcb3b3f988c21bfe99859025063a39a2a1c9a0c6794142caf534fe87c9875190f55e0a4cde85cb4801a39fbd07647bcb97bac5f87a973479337df6c5e6da0549472bbe99c02820e720a158b0d5d4b3d2a7a485a1a1a51473cb87a9bab7bf0227245db9ede77e10bb62eaac8bb306ca916b85a5857871a6ac420de93e5c5fd3c870812abfcd4a1450322d8fe400acc2d292916a3a039325362c61bc227d62ca5f28dc0d5ecbfd7e3ee20276245594bd48f9609bbf3831decc963d096601b51513e558075a73098620d0609c9472ec4f7684ba33308a35e25e8ce8016d4d1d2576bc56e7a1af4a23ce97859be0f51d800f442fc65ffa17a3b147ea7d0a7367808ed1b55c7170a292b622b0e5f2a5ceb0746cbec6fc93d035e5f6d05abd50164924928833e19a62ab04dbac09a8e3c3fba4ab84f88eb2eeb2d44235f50ba296aad6a7888b5f2765bc13e1a78c199112dd885d86496aed6f0c0efd3c72e3eee6ead1cefb75f2ff3098aa02f9b999cb573151d3ff1d63d5d9a86891a5ff9b61089f3bdc694aec533a2a9ffe7dba4025b35f65dec7c9a6279bd3bc02f0e46056a9fa4bfa02781cd54da7c2ea6c548f9c18dbc6a010ca6c9c7a3891bf87ca06b3bdd782e64a394882cef08d30ff11fd2080290d87d33fafe149fe9d14cbeed3d71775f1c41e4927bb616e14d9ff142c7e0b7fb5bf5151a25931489a405dc15e29be2f2d16149fc5d891844fc41bfd368041f5ff31dd6219a5f40040d826157f81ab2a6b662d692d8a0bbc3d246b8aeb9565e437d22acb725e7fef54a728274df45988bb67f70ba8bee6cf79ab5c8d3823e12678e7de1c2cca0f33530211c2e2368b509159f8c3321545dd026800058172fd5bcf67ac0209ffe8e7e87b376d029ce43bffee6611f59226dfd86c1f5352064076e41ce4a39706d09ee1f2ff3b8e77472188f4132a4e4a3ad26bf26b214c2a79b89c622b566f5c2f253e3e2ccdbf5f963121ba529739076968531ac4f0575f1fbf5bf150f4a8152060ee1355048f87e98db73ba6d83a8af4c63525349cb624d409222d5afe8e35705f5cc190c7c75cbe750615e8108f0c7870b43692c081c13ce65fc2b4ef918afe9745549076bb36207bf3bce30fab303b0f8c7d2bcf84acea70159291e521af3bf1f2b94a1481b6ab8ad51df63692f23ac38bd31bc13bc0f5c4a581a7dc268f70ed728fc67a3b3d661f643bf7858881d49b275e86d9ad83c10f6264003467bcfc4c658d43fb433cf686bb6e33e66912ad121ccfac390056a3e557eddf0f0fb98df05989b4dae2e960274c5f90a1573b069dc5f5f38659bf48f0b8d7a3b123e50e1752a94e3bd84f136566f603f1be573c1909021cf5fb48b0971b0e3acfdeddd0a5543a4d88b67c2d70e5424473b15cb1706213ad54cc3ce4f797c187d8f502edfdb468e6f4650cac465f19f4b0f666e95196271ab5dfac3f580633dc5ac231a1be8556cc876597f5694e26bc6ab1cd7716e97b57cb3f588984da91a8f332d23bea310e1d0c1e7b0c2bac3242afd836595c90f7ed50c2811cab4225ecf46411e18f77997670d0dac2c2a114eb6bc87a10bd7c552584e8b8631e27b8ad629ae35f6dc18ff1f7637ae436f6ab073dc00ebe47f445d18b424b83fe9e4517f91ccd0cce36a2a4d90594b81d68cc89ba0ee8b96f4c6cebcd41d9f51a5bead4831c29508c06789c12414e953d7ac63282d6d8e1c8c65100b6449bb1b9fc65c1e825d9f907df6680a3a76a0e9782d0efa43bf21f2354c3cd29f42c23d0233ae040efe42d6fd1b9868a5fd01738149fe9ed7d9f834d5a77451aa233e5f632f445b6277160cc2532aaca7adb6acd1161e190e5e2e377e98b110553a610810c2bb307c19b7882fcf8794b5109ea959a1ae80e179004ad35d6a1f751e612dc52018f95896ed46dab99097fa55f801859d10fe3b39a9321fed0c02707f3b4f7438d0fa47e86ca3845608ea64bc06c645f490115b95d0f57c51b0d991fc1238b1d0f5fa4fa2ea99e094a4cbc76ca3fa5d7743d34b89a47cfe15b0c1e088607cf53ba7f9f3a9e9fbbb727ee14b8d4b185238f0208ca2b712f946c6c058b440b9fddd2308b4578616cf2b5afd38e3a5c7dcd8ae43c125ae89fe271bc539f52942f008301c3b2c2418c3fdc2cf9b12fdec2192e518cda6d5041c9bc80c1a84a49bb4c1fcee75bba8fb0562df0c83c72dafd56d54bc8c9ce30df5e0e5d0af1a90de19a41b53fd6412223bb3f5f7bc17e0c8f1e885a2de633a9c88318387d72db6b7def693931f4964268f5cce67d22d475377a09274586552228e1a00342b2ac8d7dff09b5d81b1b32553d92c8c3a6429e4e36e34ceddf73884a7d68ffd16bf3a28c13d88cef8c618c74b2206d5349f385de1567fb0673d3bed7f817f77ac86f50bc636bc99c32c852ad4c40f669a6771753b01d83dc52229af1e7143bb2f7fec51683b0bf6484b7b802c00ff94af966a2a79fef1d555167c91b01e3d3a0905af03759354c190d1e884b8de1d71cbc6bc90e13ad97088e894039258f7350e719eb1fe1c44a6e9ae13133346827b267a5fcec8125879369aeead094ece2d831091af6db0574685564c9abf48d58f54e5a49660bbb5a9579843311da6f86b3f7bd981cf4b962cf3c37d428dd8058ed26713f8f28065ebe70be2577bec5d1a28f108a011fab925c28fe468de2e3558853407cda01fca72412f34e4ff0a7b29c9d8f58c3cab6e8b70cb863007a8dd163671d454cb900d71bd329bffdaa63fb9b0023cca8c84e250b3cb6c526595aafca84c11c0739bd6016dc018268dddf6ee2648f0b1bc859850ad5c05622d070a70cf066fddba4c2d486d98c7ea035c591343c4f4624a7ae0760ca9f3c3431e78d2871356dee00443b745eec9a2d81277ae32a2103e739f8b519cb8755717d950f930857280964af3065fcbfd10f290a5ae6aa23924d18fe94218d5b81d636879d5e6b7b4dd81a91e34a16d0aa0d9b7ab8de54d9d350e10c12337e1f462ae1aaa6191b39ab9b5049f96b39eb93ea27c74ac900a6bb52836e05d266f51dc5f7967c02b1e2011c1fec424c3394353920e15ff05b77b2d28ee724508ff06490fb5d2b9683f60d2cebdfa86c4a0f8674352f973d84066932d73babad9f6054d11afa268b02f2fe66fe5c6d6b0ac363016236e4bee752c9051258c237ee7c687a4217a3cdfc1032bfbf45ac0b036101ab7853fe19156e102983372af4f980736a14e056aa6014f63197ab05ca90abf6ce9f7304129b321fb9edc4f699f67257cd004be2e806ad3ba0118ae9d7066b0124e427f04fe6256bedb89497eba5f8c0ef8cc34bdb5fb6f8c7251b62749af591fd02a446ad7aac76de40ede6c641dfd155812df4e8f55cb69e770a524dde9fc0a6e6332a1013f6924c12f133be272571a70ad1f0eaab52e14ff43a1f45e32ab077bffa551d76108b8823e5e19475e28cb31891722b0d52bbd8b809a0518556a6b0e3f667ae586078bf6742a07edc99295d87efbc6e19b3ecbb5c41e5354b8dfd575eee180c84216c9ca9d8d455c97e3baa697cdad38cec42597426a8c0d5fe2cd1f7f1187815e017fa20a6d9dd21c28c5e26fafe3270c4a078b5e2fc88f803acc1540d0073ce8c4dbac8e83d91b3b1fd8439643ab6f70ea1ceb61aa7a17242aec56a13cd39783557fbb6a05ed9abeac93fb9a187fdde2e1ab8cbc360c57ac7fd4eccb3bcf365c0bcb1b2188d86db00de94714497f1d3b3a2430f677b6754cd638b00460817364dd3773f5beaa1cc6b44dee01cfb223d080b64f348e8426eb3b3f328542a8b741c335f822e1ac40531b738beb3af78e08b8e7ebdd9c7b0b03b3424edd354d0f204cb48697a4ae7397d5d01adc69acda12fdcf30005ab12dda61d5e9339940752bf6e6b557332b6243b5894dba8d5bf56f204746340a89817a2841c8f548eea899bed49be11c415e454297baef5a43099c13fd25d6144655a004947fff47db90490b0019a77dc9c414ab3570fa7d3b1ef355184b4e5cdd241dbb862b49f970c8fd8c41f2c8e6a0cc3044b809c197f6697eac949be7a1f468e3b9a0a227791e3d284ef8d667a93dd5dd40e4c9011a7798630286ac3a7b7e0459deb5d32af99f72dc1ba07c379a7037402cfa5c6725fcc0102af2ffbeeddaa894986284efd40fc29e09697142c229b6947f8afcad4ea91ed1a891316238f69373a7dba21b8cc576809d17edd9beaa4c2bf64768f1703f445c8eb2e4ef18acfe8b15febdfc6b7cc409b8131086bb0ad4db79d2ec80b4c6df7d7a4139cd2af88da2190b7c499582ab6ec5a57a224e6deb010076bba4ebabcb573c682aa3b44858e01c88b441cf9d3ae64219d42b0fc8e1976649abc99646bce0332f8692f1394bb3164f7d13cf6adb004e59ca9b478314ff9af27b5f5de0d0584ee0a951dd56f5175552c8be0b41c06ff3b3afc86dd9e2737d097252efa66c44187073a2b92e1ad0965fd7ff0bd83466a7608ac8b82b6e597e783a7c2bec3ee81ba68b2b0774cca68183c38d02f893dc03f6168782e46ac73cae83d62b81f63b0418a39a8f5a323203d88ddafc8c5226f86d311970025d86d7b6c13efc6bf8eb7ec5ec9cdfe7f2b48533ab822a6a292f9689fa89cc2dbf39204645c4bc9a16aebf38c4b950f59b8e501ca36495328cb9eb622218bce9064a35e3e95b1d44e1ba5a3155d89f8427a3b2c981158f956bf48b9cdf0030265e8b7a609a8d56e53787d13dcd36716358b832e296eac07b2c93853afd5af19ae48b24de14860e3e6795909de87869b1a1f6543ac3281a57869ef0185f2f9f392ea74cbfa695cb6cdfd208a68a6318a952201574427d10637518ee3a1d1353cd4d2e4d70fe230e979f14ddda1cf6b43aa4997f416f9aa32d6f4bfebb80e9901d08ba3e58047e7fc50db3699f1ca41ce9a2ffa202c00c5d1d5180c55f62ba859b1bd6cc0082db4a1a2ac01f08c512dc0eb7fb96f15b4992d8e3810701b9ea322d005529a8b54115199b96a130cba02147c47c0deb43dcc9b9f08b5162bba8642b34980ac63d2932039956cf1b13d0393a9104b000b674bed0be9bac89beb4dfdc5dcd0343d3012a521ca4c32c56939af6a67e4f4b8f5fb80c2952e19cbf2fcbd697c4bb37d096231e9c87df80ec3273da9c5b71bc81503206726a07a4dd4de44c256ff859cd82763a23b85ef9efd60457978c5bda3680415607b93a51b086ca744b303b7c25b525b21bc479d679154140eae19ae99b98c113d4a52114aaa3ddc855462d165e749cc4acc8dd789c19d8e715f15e0d88fdbde104b3656e29195797b7f1daefc11bc8dbbce4ce4f786e080a9498e393aa98160415d9fb18b4ed363faf271c7e5119598918c2d07a6b676d95055ac81a22ac713cede1880baa3ed9cb3c834ab36168b60b68a67eaa57c9af1e1d56c2cf36e634881fe480971722275b288eac0e5ff22509e70a91ed10ea171ab028efa4fdcababfda36317d88136b5e0c4983e5e863ff6e6baf2976b01948bbfc8b41297a2950e1ae9d10b4730f8e0b9ea1034a28d51ff7f4ce49a8937b94719ccf7c54c549149db55fff905fdf495a717506321a12a12e3810f7e5078cc39342a378ecde8943dafe1104694344379e39cafd53265e4337a977a59bbd7e185ad2de38e76bb4f69fe4613f199a69bc600cda727fa4881b5c945ca8ed6c5cee8cde9e0ebda541777784faf55cc111d6b9a40076fec9c9b83dca73fa86671a3ed83ade7699435969060615e23e73f3f151f0b667f307a6abe6a12d3957fed33fef9fb48d0767f22baf7697ebe4b965cdc5660b4c10cd893fcb8420805db9412ede40a1243bfd74d44f85575b908133b23ca90dabbc58777c66b73aec9bd429d81cde496695b1fdf6d2e6af39e32bfedb2c15ab3f165104da6daa8a12a02c481026422042b712352ae83af6d3a14e4b7737450bc2bc1df6c47b31f21198ec664d864fac9f4be1fed3edc8ac34253ce08924b679d3ac19b41b26dfbfbb79aed463edacc39e92353adb740f0332a3aec005d8ce15f7f8a35777d3c377f8951c6ad4e57704706d6ea9949a712eefdcbb19385d0433febedfdb1467c284d65a3425c323e1d01966abc0ff5557982bdfaab810d3568d2f361071fa5519f60cdc53d890956cc688d36051a79d9e18d90991fdf1be28b263f065e19ddafb5dafa4eede0723132fea91d4375a2500c4f2eb291812eef18e45fe5b73cea9c938317e34c83ed76eb04eabb532f2470d27641f1cb76e1446625b088b012013c514fbc970e07246552bbf34956a5672a8aed21764d5afde96beed84348518469c3f2e0bb00fc2903a0b8782814988dfc7321d253231970da90e82b9bb9d4e901af901bf8fbbae612458a43058d1edc0fad380241d7ed3ac3c7e80a611ef35c604f373358b10e3f367f7e89de63e43f27907e65bd9ff6ccfd36859183042e340c5f0be5f8146588b2c36c79f2c141705efb63b34e020e3236f753dd1e713506422486407a650b0f2d827e6fe382b355e2589a81eb86ea5cea06a5fad10c6e75b00894a41976fbb08ebeffd9ffbc4ba033a0bf177e9a9d79be88e5928b34489c61573ea52ea397c928305c3915abd64ef03bf33f9f410280ac86955218rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootllvm17-17.0.6-150600.3.2.1.src.rpmllvm-doc-providerllvm17-doc    llvm17rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)17.0.63.0.4-14.6.0-14.0-15.2-1llvm-devel-providerllvm-doc-provider9.0.017.0.64.14.3e(ehy@eX@eGe1@e!H@e @d@d{+@dddWdBzd>@d7d.@dd m@d @c™@cctcgcZrc< @c,N@c*c@c6@cAcc@b@bbL@b@b@bbm$be;bI@bI@b$@bb b D@b[@aa@aNa@aW@a(@a(@aXIaE````y|@`)__@__S_@__@__"@_*@_ @^^y@^x^h^c^=Q@^;^9\^8 @^1s^.^^^@^!@^,]]@]@]N@]]{@]]c@]K@]b@]b@]]2@]V]3@]@]]@]\ \O\\\M\@\u*@\iL\=@\-suse-linux as implicitly GNU. Without this we would get library calls for fused-multiply-add even if it's available in hardware. - Add openmp-drop-rpath.patch: backport revert of adding RUNPATH to openmp executables. (boo#1206837)- update constraints to exclude workers with very slow CPU- Update to version 15.0.7. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Build stage 2 with -fno-plt on x86_64: since building with - Wl,-z,now the PLT stubs are basically dead code, so eliminating the indirection reduces the number of branches and improves code locality for the quite frequent cross-DSO calls. - Add llvm-workaround-superfluous-branches.patch: hints LLVM to eliminate branches until gh#llvm/llvm-project#28804 is solved.- Update to version 15.0.6. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.5. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Remove obsolete lldb-swig-4.1.0-build-fix.patch. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.4. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.3. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Add llvm-armv7-fix-vector-compare-with-zero-lowering.patch: Fix lowering of non-canonical vector comparison with zero on armv7, preventing a crash (boo#1204267, gh#llvm/llvm-project#58514). - Add lldb-swig-4.1.0-build-fix.patch: Fix build with Swig 4.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.2. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.1. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Always drop -gnu from triple for consistency. Patch a test that was looking for -linux- in clang-test-xfail-gnuless-triple.patch.- Use correct LLVM_HOST_TRIPLE for riscv64- Update to version 15.0.0. * For details, see the release notes: - https://releases.llvm.org/15.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod: Provides debug info to remote hosts. - llvm-dwarfutil: Can copy and manipulate debug info. - llvm-remark-size-diff: Compute diff between remark files. * New Clang tools: - clang-offload-packager: Bundle multiple objects into single fat binaries including offload code. - clang-pseudo: Approximate heuristic parser for C++. - Rebase patches: * check-no-llvm-exegesis.patch * link-clang-tools-extra-shared.patch * lld-default-sha1.patch * llvm-do-not-install-static-libraries.patch * lto-disable-cache.patch - Drop patches that have landed upstream: * clang-repl-private-deps.patch * llvm-glibc-2-36.patch * llvm-scev-fix-isImpliedViaMerge.patch - Drop llvm-lifetime-for-rust.patch: this is now solved via attributes and LLVM doesn't need a hardcoded list of allocation functions anymore. - Add llvm-link-atomic.patch to fix build on ppc. - Add libcxx-test-library-path.patch to fix libc++ tests failing without RUNPATH on libc++.so. - Add libcxxabi-fix-armv7-test.patch to fix tests on armv7l. - Thanks to Andreas Schwab for most of the rebasing!- Make sure we keep -DNDEBUG. At some point %{optflags} must have lost it, perhaps because CMake usually adds it on top. So when overriding CMAKE_{C,CXX}_FLAGS_RELWITHDEBINFO, we make sure to take over the other flags. We drop LLVM_ENABLE_ASSERTIONS=OFF, because that's the default anyway and hasn't helped here. - Add llvm-scev-fix-isImpliedViaMerge.patch: fixes a miscompilation caused by mixing up values of the current and previous iteration. (See gh#llvm/llvm-project#56242.)- Add llvm-lifetime-for-rust.patch to have Rust memory management functions considered as lifetime markers. This should aid dead store elimination to dynamically allocated memory in Rust code.- Don't declare python3-clang as noarch: Python packages are installed into %{_libdir}.- Use black RPM macro magic to deduplicate binary lists. This should have no effect on the generated RPM but shaves ~400 lines off the specfile and hopefully makes future maintenance easier.- Add WebAssembly support for all architectures.- Add llvm-glibc-2-36.patch in order to address boo#1202215.- Update to version 14.0.6. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.5. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.4. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Don't use gold for linking anymore: on s390x we use ld.bfd with LLVMgold.so, on ppc64 we disable ThinLTO for now. - Using ld.bfd on s390x exposed an issue with the existing llvm_build_tablegen_component_as_shared_library.patch: linking llvm-tblgen with libLLVM.so means we also have to link libraries used for that (like LLVMTableGenGlobalISel) with libLLVM.so. - Rewrite summary and description for llvm-gold to point out that it can also be used with ld.bfd, recommend with binutils. - Prefer RPM macros over shell scripting, so that we can better inspect the build script with substitutions in place. - More memory for stage 1 build jobs due to recent OOMs. - Add %_libclang_sonum RPM macro to llvm-devel, since that might now diverge from %_llvm_sonum. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.3. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Use ThinLTO with lld on i586.- Update to version 14.0.1. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch - Don't override default linker flags. (We were losing -Wl,-z,now.)- Update to version 14.0.0. * For details, see the release notes: - https://releases.llvm.org/14.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod-find: Tool to fetch debuginfod artifacts. - llvm-tli-checker: LLVM TargetLibraryInfo versus SDK checker. * New Clang tools: - clang-linker-wrapper: A wrapper utility over the host linker. - clang-nvlink-wrapper: A wrapper tool over nvlink program. - Add clang-repl-private-deps.patch to make link dependencies of clang-repl private, otherwise CMake can't install. - Add PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch to fix build on PowerPC (32-bit). - Drop llvm-exegesis-link-dylib.patch, instead we don't build llvm-exegesis anymore and add check-no-llvm-exegesis.patch to disable the corresponding tests. - Rebase patches: * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch - Drop patches that have landed upstream: * llvm-update-extract-section-script.patch- Split up Clang libraries: libclang.so is no longer so-versioned alongside LLVM but will stay at libclang.so.13 for now. So we put it into a separate package from libclang-cpp.so. Since we can't have multiple LLVM versions generate the same package, we prefix it for the non-default LLVM with a mechanism inspired by the GCC packaging. - Patch exported clang/ClangTargets-relwithdebinfo.cmake to refer to libclang only by soname, because the installed library might be newer than the one originally build with the package. - Use the same mechanism to for libc++ and package Clang scripts only for the default version. This means we'll no longer have to touch the package when a new major version comes out. - Make sure we properly clean up the clang scripts if we're not packaging them. - Let python3-clang use libclang.so.XX, which means we can always build it and makes it depend on libclang instead of clang-devel. - Fix some rpmlint issues: we don't need explicit library dependencies that are detected automatically, and we add proper library dependencies to the *-devel packages. - Merge llvm-LTO-devel into llvm-devel. That's where the header files already are, and they are hard to separate. - Let llvm-polly-devel depend on llvm-devel. - Remove libLTO and *-devel packages from baselibs, they don't seem to be needed. We mostly need libLLVM and maybe libclang-cpp. - Consistently set host triple as *-suse-linux-gnu*. - Only suggest documentation packages.- Fix armv6hl cpu architecture typo.- Let clang-devel accept a newer version of clang-tools: we don't keep multiple versions of the latter.- AND instead of OR in License tag after sr#954337.- More conflicts for addition to Leap: clang-tools conflicts with llvm9 because that doesn't have the move of hmaptool yet, and llvm13-devel with llvm{5,7} as they used to have FileCheck.1.gz.- Add SUSE_Backports_policy-SLE_conflict to rpmlintrc, we're deliberately conflicting with SLE here to offer a newer version than what SUSE wants to support. (https://code.opensuse.org/leap/features/issue/55)- Update to version 13.0.1. * This release contains bug-fixes for the LLVM 13.0.0 release. This release is API and ABI compatible with 13.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * llvm-fix-building-with-GCC-12.patch - Drop RUNPATH from packaged binaries, instead set LD_LIBRARY_PATH for building and testing to simulate behavior of actual package.- Update constraints for riscv64- Add support for experimental targets and enable the M68k backend - Add patch to fix testsuite after enabling the M68k backend + llvm-update-extract-section-script.patch- BuildRequires: python-rpm-macros to fix Leap 15.3 build. - More memory for GCC compile jobs.- Add FileCheck into the devel package, as is required for testing Rust (boo#1192629)- Let clang recommend gcc and glibc-devel as we need both for building executables. No hard requirement because Clang can be used as a frontend only. (boo#1191587) - Set minimal CMake version required.- Backport llvm-fix-building-with-GCC-12.patch in order to fix building with GCC 12.- Update to version 13.0.0. * For details, see the release notes: - https://releases.llvm.org/13.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-otool: Mach-O object file displaying tool. - llvm-sim: LLVM IR Similarity Visualizer. - llvm-tapi-diff: Diff tool for tbd files. - llvm-windres: Tool to manipulate Windows resources. * llvm-elfabi was removed. * New Clang tools: - clang-repl, an interactive interpreter for C/C++. - intercept-build, analyze-build: the former intercepts build commands to build a compilation database, the latter runs the static analyzer over all translation units. - scan-build-py: Python reimplementation of scan-build. - Rebase patches: * link-clang-shared.patch * llvm-do-not-install-static-libraries.patch * llvm-exegesis-link-dylib.patch - Drop patches that have landed upstream: * tablegen-test-link-static.patch - Run tests on more architectures, disable those that seem to hang. Don't run libcxx tests at all anymore because they take so long. - Relax constraints so that we can build on more machines.- Set CMAKE_LINKER to workaround CMake wanting to use lld just because we're using clang as compiler. Fixes build on aarch64. (https://bugs.llvm.org/show_bug.cgi?id=51115)- Update to version 12.0.1. * This release contains bug-fixes for the LLVM 12.0.0 release. This release is API and ABI compatible with 12.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * clangd-cmake-non-standard-layout.patch * compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch * lld-no-version-on-undefined-weak-lazy-symbols.patch- Add compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch: Fix build with linux-glibc-devel 5.13.- Set memory limits for DWZ to 4x.- Update to version 12.0.0. * For details, see the release notes: - https://releases.llvm.org/12.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/lld/docs/ReleaseNotes.html - Rebase patches: * assume-opensuse.patch * lldb-cmake.patch * llvm-better-detect-64bit-atomics-support.patch * llvm-do-not-install-static-libraries.patch * llvm_build_tablegen_component_as_shared_library.patch - Drop patches that have landed upstream: * Fix-missing-include.patch - Always use ld.bfd for stage 1, use lld for stage 2 where we use ThinLTO and where it's supported, gold where lld doesn't work, and ld.bfd where we don't use ThinLTO. (boo#1181621) - Add lld-no-version-on-undefined-weak-lazy-symbols.patch to fix a bug in lld that made libLLVM.so contain a corrupt symbol version. - Add clangd-cmake-non-standard-layout.patch to fix build in our non-monorepo layout.- Don't use gold and ThinLTO on ppc64le because of boo#1181621. - Fix-missing-include.patch: fix build with GCC 11. (boo#1181875) - CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch: Fix target component lookup. (boo#1180748)- Update to version 11.0.1. * This release contains bug-fixes for the LLVM 11.0.0 release. This release is API and ABI compatible with 11.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete compiler-rt-dont-compile-assembly-files-as-c.patch. - Make documentation tarballs more reproducible.- Increase required RAM for aarch64- Move BFD plugins to %{_libdir}- polly-pthread.patch: Remove, std::call_once no longer needs libpthread- Add compiler-rt-dont-compile-assembly-files-as-c.patch to fix build failure with newer CMake versions.- Let CMake files in {llvm,clang}X-devel refer to the versioned binaries that come with the package instead of the symlink managed by update-alternatives. (boo#1178513)- Disable ThinLTO on aarch64 because of hangs. (boo#1178070) - Enable ThinLTO on ppc64 and ppc64le, the internal error is gone.- Update to version 11.0.0. * For details, see the release notes: - https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: llvm-gsymutil, llvm-ml. * clang-import-test was removed. - Drop obsolete patches: * clang-ignore-stack-clash-protector.patch * fix-atomics-test.patch * restore-llvm10-abi.patch - Rebase patches: * clang-resourcedirs.patch * default-to-i586.patch * link-clang-shared.patch * link-clang-tools-extra-shared.patch * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * lto-disable-cache.patch - Add llvm-exegesis-link-dylib.patch: link llvm-exegesis with libLLVM.so, the advanced functionality is not available anyway. - Remove -fstack-clash-protection on architectures where it isn't actually supported, because that prevents feature detection. - Make sure we also build AttributeReference for the documentation. This requires building via CMake. Also shorten the paths.- Add ld.lld as an alternative for ld. (boo#1174656)- Update to version 10.0.1. * This release contains bug-fixes for the LLVM 10.0.0 release. This release is API and ABI compatible with 10.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Replace ValueLattice-Add-new-state-for-undef-constants.patch, which landed upstream in a modified version, by restore-llvm10-abi.patch that resets the ABI to our 10.0.0. - Rewrite lld-default-sha1.patch to be version-independent. - Set flags consistently, so that we don't lose -DNDEBUG on 32-bit architectures. Also we don't need the opt flags twice. This leads to a significant reduction in binary sizes on 32-bit arches. - Make it easier to package release candidates. - Enable most tests on 32-bit ARM, but not for libcxx. - Add fix-atomics-test.patch for architectures where native atomics are not available. - Lower build constraints for riscv64 a bit to allow building on more workers. - Allow more compile jobs in stage 2.- Factor out computation of the number of jobs into a macro. - Choose mem_per_compile_job dependent on build stage, let stage 1 on x86_64 use more memory. - More generous memory allocation on riscv64.- Add lld-default-sha1.patch to make lld generate SHA1 build-ids by default, otherwise our tools cannot process the debuginfo.- Update to version 10.0.0. * For details, see the release notes: - https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: llvm-ifs, llvm-install-name-tool, llvm-reduce. * New Clang tools: clang-move, clang-offload-wrapper, pp-trace. * lldb-mi moved to a separate project and is no longer available. - Dropped obsolete patches: * clang-fix-powerpc-triplet.patch * clang-riscv64-rv64gc.diff * compiler-rt-move-fdp.patch * compiler-rt-sanitizer-ipc-perm.patch * D60657-riscv-pcrel_lo.diff * gwp-asan-lto.patch * libcxx-tests-linux-distribution.patch * link-lldb-shared.patch * llvm-riscv64-fix-cffi.diff * openmp-export-fini.patch * riscv-eh-frame-fixup.patch * riscv64-suse-linux.patch - Rebased patches: * assume-opensuse.patch * link-clang-tools-extra-shared.patch * lldb-cmake.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-remove-clang-only-flags.patch * lto-disable-cache.patch * polly-pthread.patch * tests-use-python3.patch - Add tablegen-test-link-static.patch: fix TableGenTests. - Add ValueLattice-Add-new-state-for-undef-constants.patch: fix miscompilation on ppc64/s390x that was leading to test crashes. - Enable ThinLTO on aarch64. - Disable ThinLTO on ppc64le due to internal error in gold. - Delete object files and static libraries from build tree in %install already, because debuginfo extraction happens after that. If we do it after %check, we run out of disk space. - Run tests "manually", because we've already removed many targets. - Don't build unit tests, because some of them are now statically linked, which is very expensive with LTO. Also unit tests are probably not very interesting on the distribution level, we don't expect them to perform different than in upstream. The relevant upstream change for this is https://reviews.llvm.org/D54439. - Drop %if for openSUSE 13.2.- Remove conflicts of clang-tools with {clang,llvm}{7,8}: the relevant binaries have been removed from those packages. This allows having clang-tools together with older versions of llvm. For a smooth installation we add OrderWithRequires dependencies. - Fix typos in (still inactive) !%{with clang_scripts} part.- Require clang-tools for clangX-devel.- Move all clang-related scripts (including those originally in clangX-checker), hmaptool and clang-doc into a common unversioned subpackage clang-tools, like python3-clang. The scripts reference the unversioned executables, so allowing multiple versions via update-alternatives would be misleading. The clang-doc executable will come with assets in Clang 10, so we have to take it out of update-alternatives as well. This should be the proper solution to boo#1161873. - Include run-find-all-symbols script in clang-tools. - Remove metadata for clangX-include-fixer subpackage that never had any files and thus wasn't released as rpm. There are so many clang binaries that packaging them separately doesn't scale. - Fix lldb version string, adapt lldb-cmake.patch (boo#1165517). - Remove unneccesary libtool dependency. - Don't let clang depend on libc++, we link it with libstdc++. - Recommend gold plugin if clang and gold are installed.- Add vim-plugin-llvm Conflicts to clang subpackage which now contains files formerly in llvmN-vim-plugins, conflicting with packages from older llvm releases.- Add back emacs-llvm Provides and Conflicts to clang subpackage originally in llvm-emacs-plugins to properly conflict with llvm-emacs-plugins from older llvm releases.- Add clang5-devel to clang9-doc conflicts.- Add compiler-rt-sanitizer-ipc-perm.patch: Fix sanitizer-common build with glibc 2.31.- Move clang-{format,include-fixer,rename}.{el,py} files from llvm-*-plugins to clang package. (boo#1161873) - Drop the now empty llvm-emacs-plugins package.- Add polly and lld build conditionals, remove excessive Requires to clang from docs. Fix conditional for libc++ use. [jsc#SLE-7400, jsc#SLE-7614, jsc#SLE-7452, jsc#SLE-8920, jsc#SLE-7390, jsc#SLE-7587]- Undo spec-cleaner changes that we don't want. * Reintroduce blank lines in configuration. * Use packageand syntax that works for older versions of RPM. * Don't use %{_bindir} on left-hand side of sed replacements.- riscv-eh-frame-fixup.patch: Remove changesets that alter the libLLVM ABI- Add upstream patch to export compiler-rt FuzzedDataProvider header, required by Envoy 1.12.2: * compiler-rt-move-fdp.patch- riscv-eh-frame-fixup.patch: Fix handling of .eh_frame on RISC-V - polly-pthread.patch: Add missing -lpthread- Enable support for riscv64 - clang-riscv64-rv64gc.diff, riscv64-suse-linux.patch, llvm-riscv64-fix-cffi.diff, D60657-riscv-pcrel_lo.diff: Backports from master- Update to version 9.0.1. * This release contains bug-fixes for the LLVM 9.0.0 release. This release is API and ABI compatible with 9.0.0. - Drop patches that have landed upstream: * dont-install-example-analyzer-plugins.patch * fix-module-test.patch * llvm-add-missing-include.patch - Drop set-revision.patch, don't provide revision number in clang. The upstream repository has moved from Subversion to git, so the revision number is just a hash, which limits its usefulness. - Rebase llvm-do-not-install-static-libraries.patch.- Modify libcxx-tests-linux-distribution.patch to remove dependency on python-distro again: we don't have expected failures.- Add llvm-add-missing-include.patch in order to fix boo#1158367.- Add gwp-asan-lto.patch: Make sure there are no LLVM IR files in static libraries that we package. - Add libcxx-tests-linux-distribution.patch (boo#1158293): Replace platform.linux_distribution by distro.linux_distribution. - Make documentation packages noarch.- Add openmp-export-fini.patch: Export termination function for libomp.so, solves boo#1155108. - Remove flaky test case in libcxx.- Fix typo, BOLL -> BOOL- Let new {llvm,clang}*-doc packages "Conflict" with older devel packages, which they were split from. - Let doc packages conflict with older versions of themselves.- (Build)Require only python3-base instead of full python3 package, the additional modules are not required. Helps shortening the build dependency chain. - Remove python3-* requires from lldb9 subpackage, and add it to the bindings/pretty-printer subpackage (python3-lldb9). - Add python3-base Requires to python3-clang subpackage- Add dont-install-example-analyzer-plugins.patch: Remove example analyzer plugins from install targets instead of deleting them. - Add fix-module-test.patch: fix test instead of deleting it. - Don't build static libc++ (with ThinLTO that's not useful anyway). - Don't build libc++experimental. - Don't package libc++abi.so with libc++-devel, it's already contained in the (required) libc++abi-devel. - Be more specific about files in libc++-devel.- Update to version 9.0.0. * For details, see the release notes: - https://releases.llvm.org/9.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/lld/docs/ReleaseNotes.html - Change License to "Apache-2.0 WITH LLVM-exception OR NCSA". (https://llvm.org/foundation/relicensing/) - Allow building with ThinLTO and enable it on some architectures. - Disable LTO cache in lto-disable-cache.patch. - Unset MALLOC_CHECK_ for compilation to mitigate lock contention. - No debug info for ppc like for the other 32-bit targets. - Clean up _constraints: same constraints for 32-bit targets. - Don't use BUILD_SHARED_LIBS for Clang anymore, since the newly available libclang-cpp.so should expose the full C++ API. - Link tools with libclang-cpp.so by using CLANG_LINK_CLANG_DYLIB, similar to LLVM_BUILD_LLVM_DYLIB for libLLVM.so. - Remove obsolete n_clang_allow_BUILD_SHARED_LIBRARY.patch. - Add link-clang-shared.patch to link more clang targets with libclang-cpp.so, especially libclang.so. - Add link-clang-tools-extra-shared.patch, link-lldb-shared.patch: link targets in clang-tools-extra and lldb with libclang-cpp.so. - Simplify llvm-do-not-install-static-libraries.patch, also handle Clang, for which we now get static libraries. - Package documentation for llvm and clang separately, recommend them for the main package: they are not required for development, but actually useful for working with the non-devel packages. - Recommend editor plugins not just for llvm-devel. - Recommend libstdc++ for Clang again. - Move diagtool from llvm to clang subpackage. - Properly distinguish between %{_relver} and %{version}. - Drop aarch64-disable-memorytest.patch and reactivate test. - Rebase clang-resourcedirs.patch. - Rebase llvm-normally-versioned-libllvm.patch. - Rebase llvm-remove-clang-only-flags.patch. - Rebase llvm_build_tablegen_component_as_shared_library.patch. - Rebase set-revision.patch. - Increase disk space for build.- Make lldb recommend python3-lldb (it contains pretty printers).- Use python3 shebangs everywhere (boo#1146533). - Drop obsolete opt-viewer-Do-not-require-python-2.patch.- Remove unneccesary dependencies: * groff, bison and flex don't seem to be used. * jsoncpp is no longer used since r338461. * Move some BuildRequires to subpackages. * Don't recommend scan-{build,view} in clang (boo#1145444). * Devel packages are only required in other devel packages, when their headers are included in the installed headers. - Add versions to Provides/Conflicts except for files. - Remove unused (since r268685) CMake flags LLVM_ENABLE_TIMESTAMPS. - Fix installation of opt-viewer files when python3-clang is no longer built.- Update to version 8.0.1. * This release contains bug-fixes for the LLVM 8.0.0 release. This release is API and ABI compatible with 8.0.0. - Don't run LLVM tests on ppc at all because of sporadic hangs.- Increase RAM for armv6/7 to avoid OOM and be scheduled on fast worker- Use the documented LLVM_ENABLE_RTTI to enable RTTI instead of LLVM_REQUIRES_RTTI, which "is an internal flag that individual targets can use to force RTTI". (boo#1139584) - Drop obsolete llvm-build-tests-with-rtti.patch.- Exclude riscv64 for now since it fails to build.- Change some groups: * put libraries in System/Libraries, * devel packages in Development/Libraries, * clang in Development/Languages/C and C++, * the gold plugin in Development/Tools/Building. - Add some URLs, use https:// when possible. - Remove unneeded devel dependencies. - Only suggest a C++ standard library for clang. It's also a C compiler and needs no C++ library when only used as such. - Fix Supplements for editor plugins. - Fix some rpmlint issues: * Reword summary and description for Polly. * Fix /usr/bin/env shebangs. * Remove executable bit where not needed. * Move bash completion to /usr. * Remove hard dependency of libclang8 to libstdc++-devel. - Make rpm macros work properly. - Remove sources from documentation. - Run %fdupes on the right directories. - Enable tests for libcxx. - Reduce memory requirements for compile jobs depending on arch.- Avoid relocation overflow on ppc by not building GPU backends. - Update baselibs.conf.- Disable LTO (boo#1133254).- Fix packaging on ppc: the sanitizers aren't available there, so the directories /usr/lib/clang/*/{lib,share} are missing. - Package LLVMgold even when we don't use gold for linking. It's promised in /usr/lib/cmake/llvm/LLVMExports.cmake. - Unignore test failures on PowerPC64 architectures. The failures in ppc are unrelated to AMDGPU, so we remove that remark. - Fix dependencies: the gold plugin shouldn't depend on llvm-devel. libc++abi-devel should depend on libc++abi. - Fix typo.- Enable libc++ on ARM (Needed for tensorflow)- Update to 8.0.0 * For details, see the release notes: https://llvm.org/releases/8.0.0/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/lld/docs/ReleaseNotes.html - Drop llvm-unittests-Don-t-install-TestPlugin.so.patch, llvm-drop-llvm-optional-clang-specific-optimization.patch, llvm-D51108.patch, llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch, llvm-test-Fix-Assembler-debug-info.ll.patch * Already included upstream - Add 0001-CMake-Add-install-targets-for-utilities-to-LLVM-expo.patch- Remove -fno-strict-aliasing, which upstream doesn't use any more since r245304 in 2015. (http://reviews.llvm.org/D12036) It's probably also not needed for modern versions of GCC. It was enabled in r105644 because of some bugs there. - Add a clang-%{_sonum} symlink, which is referenced by /usr/lib64/cmake/clang/ClangTargets.cmake (boo#1120098) - Package clang builtin headers with libclang. The library is basically unusable without the builtin headers. Currently consumers of libclang have to require clang as well, although only the headers are needed.- llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch, llvm-test-Fix-Assembler-debug-info.ll.patch * Fix crash in rustc (boo#1126907)- Allow use of Gold linker to be conditional - Disable Gold linker on ppc + LLVM currently doesn't build with Gold on ppc- Readd clang-7 and clang++-7 symlinks * Fixes uses of clang-devel (boo#1120098)- Update to llvm 7.0.1 * This release contains bug-fixes for the LLVM 7.0.0 release. This release is API and ABI compatible with 7.0.0.- enable gold unconditionally like with llvm6 and older - reenable openmp support again for aarch64 (like it was already in llvm6)- Use %license macro - Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Remove ppc from Exclude field in spec file - Allow use of Gold linker to be conditional - Disable Gold linker on ppc - Add patch to fix SUSE GNU triplet on ppc * clang-fix-powerpc-triplet.patch - Add patch from upstream to fix ABI issue on ppc * llvm-D51108.patch - Limit list of enabled targets on ppc * PowerPC;AMDGPU;BPF;NVPTX - Ignore testsuite failures on ppc- llvm-drop-llvm-optional-clang-specific-optimization.patch * Fix ABI incompatibility when libLLVM (built with clang) is linked to a program build with gcc. (boo#1119092)- opt-viewer-Find-style-css-in-usr-share.patch * Make sure opt-viewer installed in /usr/bin can find resources from /usr/share/opt-viewer. (boo#1112730)- llvm-unittests-Don-t-install-TestPlugin.so.patch * It is only used for testing and is causing failures when processing LLVMExports.cmake.- Update to llvm 7.0.0 * For details, see the release notes: https://llvm.org/releases/7.0.0/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html - Remove no longer needed patches: * llvm6-fix-gdb-index-crash.patch * lldb-fix-build-with-python-3.7.patch * lldb-add-pthread-dl-libs.patch * polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch - Add tests-use-python3.patch * Prevents tests from failing because of missing python 2. - Add llvm-better-detect-64bit-atomics-support.patch * Fixes build on i586.- Updated llvm-remove-clang-only-flags.patch - Exclude also "-Werror=unguarded-availability-new" (bsc#1106000)- Update to llvm 6.0.1 * This release contains bug-fixes for the LLVM 6.0.0 release. It is API and ABI compatible with 6.0.0. - Remove no longer needed llvm6-fix-InstCombine.patch - Add lldb-fix-build-with-python-3.7.patch * Fix build with python 3.7- llvm6-fix-gdb-index-crash.patch * From upstream, fix lld --gdb-index crash.- Do not requires gcc6 for older sle versions. * llvm6 is not built on <= 12 SP3 and this was preventing build on 12 SP4.- llvm_build_tablegen_component_as_shared_library.patch * Build TableGen component as its own shared library because it is not included in the libLLVM library and is needed for ldc. (bsc#1086445)- Add patch llvm6-fix-InstCombine.patch to fix InstCombine init * Will be fixed in 6.0.1 release- Do not build stage1 with debug info. It was accidentally added with the use of %optflags. This should fix out of memory errors on 32bit architectures and speed up build everywhere else. (bsc#1092697)- llvm-build-tests-with-rtti.patch * Fixes build failure with gcc 8. (bnc#1087136)- Do not export Polly static libraries which we do not distribute. * Updated llvm-do-not-install-static-libraries.patch - Use external jsoncpp instead of the bundled one. * Added polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch - llvm6-devel must require llvm6-polly-devel * Files in llvm6-devel reference Polly.- Update to llvm 6.0.0 * Added polly * Notable changes: - Retpoline Spectre variant 2 mitigation - GlobalISel by default for AArch64 at -O0 - improved scheduling on several x86 micro-architectures - Clang defaults to -std=gnu++14 instead of -std=gnu++98 - support for some upcoming C++2a features - improved optimizations, new compiler warnings, many bug fixes, and more. - Use alternatives for clang's bash autocomplete to prevent conflicts with other versions.- Remove liblldb5 and lldb5-devel from baselibs.conf. They are only build for x86_64, so no point having them in baselibs.conf.- Use %optflags, except for FORTIFY_SOURCE which is not compatible with compiler-rt. - Exclude static libraries differently. * Drop llvm-split-static-library-exports-into-their-own-export-file.diff * Drop clang-split-static-library-exports-into-their-own-export-file.diff * Update llvm-do-not-install-static-libraries.patch to not use EXCLUDE_FROM_ALL which is not available in cmake 3.5. - This fixes build on SLE12. - Do not force gcc6 on OpenSUSE - fixes build. - Reduce the amount of concurent link jobs by increasing their memory requirement - to reduce stalls in OBS.- Cleanup %ifarch conditions, remove targets unintentionally added to s390/s390x. (bnc#1078436)- Limit the amount of parallel link jobs, but no longer limit compile jobs. This should prevent running out of memory during linking while not longer slowing down compilation. - Remove build dependency on procps- Reduce disk size requirement to 30GB in _constraints. We no longer need that much since we stopped building static libraries.- n_clang_allow_BUILD_SHARED_LIBRARY.patch * Allow buildling clang with BUILD_SHARED_LIBRARY while the rest is built with LLVM_LINK_LLVM_DYLIB. (bnc#1065464) - Remove clang-devel-static.- Place gold plugin to the right directory. (bnc#1073210) * It must be in /usr/lib/bfd-plugins on all architectures. * Remove llvm5-gold from baselibs.conf - nothing needs a 32bit version of it and it would now conflict with the 64bit one. - Reduce _constraints requirements on 32bit architectures. * Since we had to disable debuginfo on them, they require much less.- ignore make check error for PowerPC as bypass https://bugs.llvm.org/show_bug.cgi?id=35871- disable debuginfo build for ARM as well- Delete intermediate files during build to reduce total disk usage (bnc#1074625)- Update to llvm 5.0.1 * This release contains bug-fixes for the LLVM 5.0.0 release. * This release is API and ABI compatible with 5.0.0. - llvm-do-not-install-static-libraries.patch * Updated.- Increase minimum memory and disk sizes required for building in _constraints.- Rename python3-lldb to python3-lldb5 so it can work with llvm meta package.- Rename python packages to follow naming conventions. - Remove unnecessary dependencies on python3. - Make opt-viewer not require python2. * opt-viewer-Do-not-require-python-2.patch- Switch to python3. - Fix %check tests when used with python3. * Define LANG=C.UTF-8 when running the tests. - Add explicit Provides/Conflicts to llvm5-devel, clang5-devel-static and lldb5-devel. * These are required to be validated by obs repo-checker.- Use LLVM_OPTIMIZED_TABLEGEN to speed up build. (bnc#1064786) - Fix files of lldb4 to work correctly with update-alternatives. - Remove Conflicts clang(LLDB) from lldb4-devel - it does not exist. It would be provided automatically, but no such cmake file is installed. - llvm-do-not-install-static-libraries.patch * Do not install static libraries instead of installing them and deleting after. * Reduces disk usage during build. (bnc#1064786) - Do not build unnecessary parts during stage1. * Speeds up build a bit. (bnc#1064786)- Updated baselibs.conf to reference version 5 packages. - Deleted rogue llvm5.spec.r29 file. - Deleted arm_suse_support.diff, llvm-add_a_LLVM_USE_LINKER.patch, libsanitizer.patch. - No longer used, applied already in the source.- llvm-normally-versioned-libllvm.patch * Change libLLVM naming scheme to match our naming guidelines. * The reasons for the original naming scheme are no longer valid, more details in the patch.- Disable all thread related tests in libcxx. Many of them use timeouts to detect failure. They can fail randomly if the machine is under heavy load (happens often in OBS).- Drop llvm5-devel-static. llvm5-devel contains shared library with the same content.- Increase disk space requirement in _constraints to 45GB. Otherwise the build gets stuck in random places. - Skip build of lldb5 python on distributions with swig < 3.0.11- Copy from llvm4. - Update to llvm 5.0.0.- Use LLVM_BUILD_LLVM_DYLIB instead of BUILD_SHARED_LIBS to build single libLLVM library. This is the recommended way. The old way was causing various issues. * llvm-split-static-library-exports-into-their-own-export-file.diff * clang-split-static-library-exports-into-their-own-export-file.diff (bnc#1049703) - Add lld, linker for Clang/LLVM (sr#517692) - Include clang++-MAJOR.MINOR symbolic link (bnc#1012260) - Remove unnecessary dependency on flex and bison. - Make sure all binaries are managed by update-alternatives - Add llvm-add_a_LLVM_USE_LINKER.patch and link using gold to prevent memory exhaustion on some build machines. - Reduce debuginfo on x86 architecture. LLVM libraries are so big that they exhaust all memory on 32 bit machine if linked with full debuginfo. - Speed up build by skipping parts that are not required in stage1. - Build lldb in-tree as one of the llvm tools.- clang-ignore-stack-clash-protector.patch: ignore -fstack-clash-protection for now.- xlocale.patch: don't use obsolete - libsanitizer.patch: fix use of undocumented types- build fixes for armv6 (skip testsuite as it requires 64bit, set the list of targets to include ARM and remove triplet hack)- Include provides and conflics in baselibs.conf for llvm4-devel, clang4-devel, llvm4-LTO-devel, and llvm4-gold.- Update to version 4.0.1 * Minor bugfixes- Use gcc6 only for SLE boo#1041469- Package libLLVMFuzzer- readd arm_suse_support.diff which was accidentally removed in the 4.0.0 update- Enable AMDGPU and NVPTX targets everywhere except for S/390. The AMDGPU target is needed for Mesa Clover (sr#485802).- Use gcc6 on SLE12- Package license & credits- Update to version 4.0.0 * See + http://releases.llvm.org/4.0.0/docs/ReleaseNotes.html and + http://releases.llvm.org/4.0.0/tools/clang/docs/ReleaseNotes.html + http://releases.llvm.org/4.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - Drop the following patches, fixed upstream: amdgpu_revert_r280589.patch arm_suse_support.diff clang-fix-substitutions-abi_tag.patch clang-incomplete-field-types.patch glibc-2.24-libcxx.patch llvm-install-CheckAtomic.patch revert-cmake-soname.patch- Enable BPF for all arches bsc#1026191- libc++ must depend on libc++abi- Stop using otherproviders() due to an rpm parser bug, use self-conflicts instead as suggested by mls.- Add amdgpu_revert_r280589.patch to fix an amdgpu regression bsc#1021577- Require LLVMgold and libLTO in llvm-devel, otherwise we get in CMake: The imported target "LLVMgold" references the file "/usr/lib64/LLVMgold.so" but this file does not exist. This happens when requiring llvm3_9-devel directly, not llvm-devel.- Update to version 3.9.1 * See: + http://llvm.org/releases/3.9.1/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.1/tools/clang/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.1/tools/clang/tools/extra/docs/ReleaseNotes.html- Update to version 3.9.0 * Clang now supports the G++ abi_tag attribute. * Clang will no longer pass --build-id by default to the linker. * Improved C++1z support in Clang. * Clang now has support for all OpenCL 2.0 features. * Added support for all non-offloading features from OpenMP 4.5, * The static analyzer now checks for incorrect usage of MPI APIs in C and C++. * LLVM no longer does inter-procedural analysis and optimization (except inlining) on functions with comdat linkage. * LLVM now supports the Intel CPUs Skylake Server with AVX512 (-march=skylake-avx512) and Knights Landing (-march=knl). * More at: + http://llvm.org/releases/3.9.0/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.0/tools/clang/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.0/tools/clang/tools/extra/docs/ReleaseNotes.html * Fix the following patches: + arm_suse_support.diff + assume-opensuse.patch + clang-resourcedirs.patch + default-to-i586.patch + glibc-2.23-libcxx.patch + glibc-2.24-libcxx.patch + lldb-add-pthread-dl-libs.patch + lldb-cmake.patch + llvm-fix-find-gcc5-install.patch + llvm-remove-clang-only-flags.patch + revert-cmake-soname.patch + set-revision.patch * Remove upstream-included patch: + llvm-nonvoid-return.patch * Remove patch for removed files: + glibc-2.23-libcxx.patch - Backport upstream patches: * clang-fix-substitutions-abi_tag.patch * clang-incomplete-field-types.patch * llvm-install-CheckAtomic.patch - Add clang%{_sonum}-include-fixer subpackage and associated libfindAllSymbols%{_sonum} and libfindAllSymbols%{_sonum}-devel subpackages. - Add sanstats to llvm binary list.- Change update-alternatives to use %postun instead of %preun, which is now what Factory maintainers are requesting. - Use the minor version to set the update-alternatives priority so the most recent version of the LLVM, Clang, and LLDB are used by default. - Add LLVM rpm macros so downstream packages can have some idea how LLVM was built.- Rename libomp to make it possible to have multiple versions available.- Split the old llvm package into this version-specific package and a wrapper package. - Implement update-alternatives to allow parallel installation of many of the subpackages. - Rename subpackages that can be parallel-installed to a version-specific name based on the associated shared library's current .so number. - Various fixes to support the above changes.- Sort a bit with spec-cleaner - Remove the latest switch for now, things should be either coinstallable or not, we don't need to bother around with compilation like this- Update to llvm 3.8.1 * See http://llvm.org/releases/3.8.1/docs/ReleaseNotes.html and http://llvm.org/releases/3.8.1/tools/docs/ReleaseNotes.html - Use versioned libLLVM (to libLLVM3_8) and libclang (to libclang3_8) - Change versioning of liblldb3_8 to liblldb-3_8 and use a variable to control the name instead of hard-coding it. - Use bcond_with and bcond_without to enable/disable build options instead of hard-coding them. - Put buildrequires as requires in -devel packages to avoid linker errors when building packages against the -devel packages. - Add ffi support (disabled by default). - Add oprofile support (disabled by default). - Add valgrind support (disabled by default). - Link cmake files to the normal cmake file directory to allow autodetection of cmake interfaces. - Remove unused lldb components from main spec file. - Split llvm python bindings into own subpackage. - Split emacs plugin into own subpackage - Move additional vim plugins into vim plugins package - Split libc++, libLTO, LLVMgold, libomp, clang-chekers into own subpackages - Make python-clang, llvm-vim-plugins, and llvm-emacs-plugins noarch since they aren't architecture-specific. - Make packages besides llvm, llvm-clang, and the shared libraries conflict with other versions. This will be important when multiple LLVM versions are supported. - Various spec file cleanups - Rebase patches: * arm_suse_support.diff * assume-opensuse.patch * clang-resourcedirs.patch * default-to-i586.patch * glibc-2.23-libcxx.patch * glibc-2.24-libcxx.patch * lldb-add-pthread-dl-libs.patch * lldb-cmake.patch * llvm-fix-find-gcc5-install.patch * llvm-nonvoid-return.patch * llvm-remove-clang-only-flags.patch * revert-cmake-soname.patch * set-revision.patch- Start conversion to use cmake macros with now introduced compatibility for ninja - Reduce number of threads if we don't have enough memory - Add patch for the nonvoid returns: * llvm-nonvoid-return.patch- for ppc64le set memory to 4GB in _constraints file (failure in Factory:PowerPC)- glibc-2.24-libcxx.patch: fix libcxx testsuite for glibc 2.24- Build LLDB separated from LLVM. - Re-enable python bindings for the LLDB API.- Disable libcxx/lldb/openmp for SLE fate#319582- Update rpmlintrc to whitelist libLTO.so- Re-enable glibc-2.23 patch for Tumbleweed- fix arm_suse_support.diff for armv6hl - adjust compile flags for llvm on armv6hl (fixes Mesa build)- Update llvm-remove-clang-only-flags.patch to remove - Wcovered-switch-default flag for gcc compatibility.- Use gcc for stage1 bootstrap - Add back libstdc++-devel dependency for clang since libc++ is only available for x86-64 atm.- Comment out glibc-2.23-libcxx.patch until glibc 2.23 actually hits the Factory.- Update to llvm 3.8.0 * See http://llvm.org/releases/3.8.0/docs/ReleaseNotes.html and http://llvm.org/releases/3.8.0/tools/clang/docs/ReleaseNotes.html - Fold lldb build into llvm and disable python support - Drop clang-disable-ada-extension.patch, libcxxabi-exceptions.patch and cmake-host-triple.patch - Add revert-cmake-soname.patch to fix soname handling- Add glibc-2.23-libcxx.patch to fix test failures with glibc 2.23- Remove FFI support because its fragile- Enable OpenMP for x86, x86_64, ppc64 and ppc64le- Enable all targets on x86, x86_64- Update to version 3.7.0 * See http://llvm.org/releases/3.7.0/docs/ReleaseNotes.html - Merge aarch64-suse-support.patch into arm_suse_support.diff - Refresh arm_suse_support.diff, llvm-fix-find-gcc5-install.patch - Remove llvm-fix-parsearmarch.patch, upstream.- fix build on s390x (one typo in ifarch and one change in filelist)- Update to version 3.6.1 * No changelog upstream- Add llvm-fix-parsearmarch.patch to fix parsing armv{6,7}hl archs.- Update to version 3.6.0 * See http://llvm.org/releases/3.6.0/docs/ReleaseNotes.html - Add python-xml dependency for regression tests - Removed the following patches, fixed upstream: * arm-remove-xfails.diff * libcxx-libdir.patch * llvm-config-lib64.patch * llvm-fix-intrusiverefcntptr.patch- Add llvm-fix-intrusiverefcntptr.patch to fix build of LLVM tools with GCC 5. - Add llvm-fix-find-gcc5-install.patch to properly find installed GCC 5.- Add a gcc dependency for clang, this is heavyweight but we need libgcc_s which comes with the gcc package (bnc#893359)- Conditionalize libcxx{abi} build on build_libcxx variable - Turn libc++.so into an ldscript so it links to libc++abi automatically.- fix constraints for armv6l/armv7l (there is no 4GB RAM on 32bit)h01-ch3b 1724955639  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456717.0.617.0.6-150600.3.2.1      llvmAArch64SME.htmlAMDGPUAMDGPUAsmGFX10.htmlAMDGPUAsmGFX1011.htmlAMDGPUAsmGFX1013.htmlAMDGPUAsmGFX1030.htmlAMDGPUAsmGFX11.htmlAMDGPUAsmGFX7.htmlAMDGPUAsmGFX8.htmlAMDGPUAsmGFX9.htmlAMDGPUAsmGFX900.htmlAMDGPUAsmGFX904.htmlAMDGPUAsmGFX906.htmlAMDGPUAsmGFX908.htmlAMDGPUAsmGFX90a.htmlAMDGPUAsmGFX940.htmlgfx1011_src.htmlgfx1011_src_1.htmlgfx1011_src_2.htmlgfx1011_src_3.htmlgfx1011_type_deviation.htmlgfx1011_vdst.htmlgfx1011_vsrc.htmlgfx1013_srsrc_5dafbc.htmlgfx1013_srsrc_cf7132.htmlgfx1013_vaddr_a5639c.htmlgfx1013_vaddr_c5ab43.htmlgfx1013_vdst_9041ac.htmlgfx1013_vdst_eae4c8.htmlgfx1030_attr.htmlgfx1030_dst.htmlgfx1030_fx_operand.htmlgfx1030_hwreg.htmlgfx1030_imm16_0533c2.htmlgfx1030_imm16_169952.htmlgfx1030_label.htmlgfx1030_m_28b494.htmlgfx1030_m_c141fc.htmlgfx1030_msg.htmlgfx1030_opt_0d447d.htmlgfx1030_opt_847aed.htmlgfx1030_param.htmlgfx1030_saddr_9cd3cf.htmlgfx1030_saddr_beaa25.htmlgfx1030_saddr_d75725.htmlgfx1030_sbase_020892.htmlgfx1030_sbase_b0aa25.htmlgfx1030_sdst_0804b1.htmlgfx1030_sdst_362c37.htmlgfx1030_sdst_386c33.htmlgfx1030_sdst_3bc700.htmlgfx1030_sdst_3cd7ad.htmlgfx1030_sdst_54e16e.htmlgfx1030_sdst_8078f5.htmlgfx1030_sdst_ea3f10.htmlgfx1030_simm32_6f0844.htmlgfx1030_simm32_a3e80c.htmlgfx1030_simm32_be0c1c.htmlgfx1030_soffset_0f304c.htmlgfx1030_soffset_73dae7.htmlgfx1030_soffset_fef808.htmlgfx1030_src_1facfe.htmlgfx1030_src_207976.htmlgfx1030_src_364d7c.htmlgfx1030_src_516946.htmlgfx1030_src_5bb6f2.htmlgfx1030_src_ae1543.htmlgfx1030_src_b9c62f.htmlgfx1030_src_edf2a5.htmlgfx1030_srsrc_5dafbc.htmlgfx1030_srsrc_80eef6.htmlgfx1030_srsrc_cf7132.htmlgfx1030_ssamp.htmlgfx1030_ssrc_2a042f.htmlgfx1030_ssrc_361664.htmlgfx1030_ssrc_460c63.htmlgfx1030_ssrc_6fbc49.htmlgfx1030_ssrc_7da351.htmlgfx1030_ssrc_81ba27.htmlgfx1030_ssrc_8dd4e0.htmlgfx1030_ssrc_8e54e0.htmlgfx1030_tgt.htmlgfx1030_type_deviation.htmlgfx1030_vaddr_373b95.htmlgfx1030_vaddr_9aeece.htmlgfx1030_vaddr_9f7133.htmlgfx1030_vaddr_a5639c.htmlgfx1030_vaddr_b73dc0.htmlgfx1030_vaddr_c5ab43.htmlgfx1030_vaddr_f20ee4.htmlgfx1030_vcc.htmlgfx1030_vdata0_6802ce.htmlgfx1030_vdata0_fd235e.htmlgfx1030_vdata1_6802ce.htmlgfx1030_vdata1_fd235e.htmlgfx1030_vdata_21b58d.htmlgfx1030_vdata_2d6239.htmlgfx1030_vdata_4b260e.htmlgfx1030_vdata_56f215.htmlgfx1030_vdata_6802ce.htmlgfx1030_vdata_84fab6.htmlgfx1030_vdata_aa5a53.htmlgfx1030_vdata_ad559c.htmlgfx1030_vdata_c08393.htmlgfx1030_vdata_e016a1.htmlgfx1030_vdata_fd235e.htmlgfx1030_vdst_463513.htmlgfx1030_vdst_48e42f.htmlgfx1030_vdst_4d2300.htmlgfx1030_vdst_5d50a1.htmlgfx1030_vdst_5ec176.htmlgfx1030_vdst_69a144.htmlgfx1030_vdst_709347.htmlgfx1030_vdst_81a6ed.htmlgfx1030_vdst_875645.htmlgfx1030_vdst_89680f.htmlgfx1030_vdst_9041ac.htmlgfx1030_vdst_a49b76.htmlgfx1030_vdst_bdb32f.htmlgfx1030_vdst_d0dc43.htmlgfx1030_vdst_d71f1c.htmlgfx1030_vdst_d7c57e.htmlgfx1030_vdst_dd8a32.htmlgfx1030_vdst_dfa6da.htmlgfx1030_vdst_eae4c8.htmlgfx1030_vdst_f47754.htmlgfx1030_vsrc_6802ce.htmlgfx1030_vsrc_ba3116.htmlgfx1030_vsrc_e016a1.htmlgfx1030_vsrc_fd235e.htmlgfx1030_waitcnt.htmlgfx1030_waitcnt_depctr.htmlgfx10_attr.htmlgfx10_dst.htmlgfx10_fx_operand.htmlgfx10_hwreg.htmlgfx10_imm16_0533c2.htmlgfx10_imm16_169952.htmlgfx10_label.htmlgfx10_m_28b494.htmlgfx10_m_c141fc.htmlgfx10_msg.htmlgfx10_opt_0d447d.htmlgfx10_opt_847aed.htmlgfx10_param.htmlgfx10_probe.htmlgfx10_saddr_beaa25.htmlgfx10_saddr_da2a8a.htmlgfx10_sbase_020892.htmlgfx10_sbase_b0aa25.htmlgfx10_sbase_b2d796.htmlgfx10_sdata_5e9fb5.htmlgfx10_sdata_6fbc49.htmlgfx10_sdata_7cbd60.htmlgfx10_sdata_81ba27.htmlgfx10_sdata_90678d.htmlgfx10_sdata_c1aec6.htmlgfx10_sdst_0804b1.htmlgfx10_sdst_2e4c2a.htmlgfx10_sdst_362c37.htmlgfx10_sdst_3759f6.htmlgfx10_sdst_386c33.htmlgfx10_sdst_3bc700.htmlgfx10_sdst_54e16e.htmlgfx10_sdst_8078f5.htmlgfx10_sdst_ea3f10.htmlgfx10_simm32_6f0844.htmlgfx10_simm32_a3e80c.htmlgfx10_simm32_be0c1c.htmlgfx10_soffset_0f304c.htmlgfx10_soffset_73dae7.htmlgfx10_soffset_b556e6.htmlgfx10_src_37d670.htmlgfx10_src_516946.htmlgfx10_src_823582.htmlgfx10_src_c27036.htmlgfx10_src_cf1cda.htmlgfx10_src_d5cd94.htmlgfx10_src_e0345d.htmlgfx10_src_e9e6db.htmlgfx10_srsrc_80eef6.htmlgfx10_srsrc_cf7132.htmlgfx10_ssamp.htmlgfx10_ssrc_054e2a.htmlgfx10_ssrc_2a042f.htmlgfx10_ssrc_3ec588.htmlgfx10_ssrc_460c63.htmlgfx10_ssrc_48e8e7.htmlgfx10_ssrc_6fbc49.htmlgfx10_ssrc_7da351.htmlgfx10_ssrc_81ba27.htmlgfx10_ssrc_bb715c.htmlgfx10_tgt.htmlgfx10_type_deviation.htmlgfx10_vaddr_76b997.htmlgfx10_vaddr_9aeece.htmlgfx10_vaddr_9f7133.htmlgfx10_vaddr_a5639c.htmlgfx10_vaddr_b73dc0.htmlgfx10_vaddr_f20ee4.htmlgfx10_vcc.htmlgfx10_vdata0_6802ce.htmlgfx10_vdata0_fd235e.htmlgfx10_vdata1_6802ce.htmlgfx10_vdata1_fd235e.htmlgfx10_vdata_21b58d.htmlgfx10_vdata_2d6239.htmlgfx10_vdata_4b260e.htmlgfx10_vdata_56f215.htmlgfx10_vdata_6802ce.htmlgfx10_vdata_84fab6.htmlgfx10_vdata_aa5a53.htmlgfx10_vdata_ad559c.htmlgfx10_vdata_c08393.htmlgfx10_vdata_e016a1.htmlgfx10_vdata_fd235e.htmlgfx10_vdst_463513.htmlgfx10_vdst_48e42f.htmlgfx10_vdst_4d2300.htmlgfx10_vdst_5d50a1.htmlgfx10_vdst_5ec176.htmlgfx10_vdst_69a144.htmlgfx10_vdst_709347.htmlgfx10_vdst_81a6ed.htmlgfx10_vdst_875645.htmlgfx10_vdst_89680f.htmlgfx10_vdst_a49b76.htmlgfx10_vdst_bdb32f.htmlgfx10_vdst_d0dc43.htmlgfx10_vdst_d71f1c.htmlgfx10_vdst_d7c57e.htmlgfx10_vdst_dd8a32.htmlgfx10_vdst_dfa6da.htmlgfx10_vdst_eae4c8.htmlgfx10_vdst_f47754.htmlgfx10_vsrc_6802ce.htmlgfx10_vsrc_ba3116.htmlgfx10_vsrc_e016a1.htmlgfx10_vsrc_fd235e.htmlgfx10_waitcnt.htmlgfx10_waitcnt_depctr.htmlgfx11_attr.htmlgfx11_delay.htmlgfx11_dst.htmlgfx11_fx_operand.htmlgfx11_hwreg.htmlgfx11_imm16_0533c2.htmlgfx11_imm16_169952.htmlgfx11_label.htmlgfx11_m_181aa0.htmlgfx11_m_c141fc.htmlgfx11_msg_b8ff6d.htmlgfx11_msg_e37f7b.htmlgfx11_opt.htmlgfx11_saddr_844ded.htmlgfx11_saddr_8a0af3.htmlgfx11_saddr_beaa25.htmlgfx11_sbase_30e75b.htmlgfx11_sbase_b0aa25.htmlgfx11_sdst_0804b1.htmlgfx11_sdst_362c37.htmlgfx11_sdst_386c33.htmlgfx11_sdst_3bc700.htmlgfx11_sdst_3cd7ad.htmlgfx11_sdst_54e16e.htmlgfx11_sdst_8078f5.htmlgfx11_sdst_ea3f10.htmlgfx11_simm32_6f0844.htmlgfx11_simm32_a3e80c.htmlgfx11_simm32_be0c1c.htmlgfx11_soffset_0f304c.htmlgfx11_soffset_73dae7.htmlgfx11_soffset_fef808.htmlgfx11_src_0879fb.htmlgfx11_src_17933a.htmlgfx11_src_25d8ac.htmlgfx11_src_7af462.htmlgfx11_src_852d86.htmlgfx11_src_9cb8cf.htmlgfx11_src_d01e4c.htmlgfx11_src_d5ffa3.htmlgfx11_srsrc_5dafbc.htmlgfx11_srsrc_80eef6.htmlgfx11_srsrc_cf7132.htmlgfx11_ssamp.htmlgfx11_ssrc_05f584.htmlgfx11_ssrc_121527.htmlgfx11_ssrc_1a3009.htmlgfx11_ssrc_361664.htmlgfx11_ssrc_460c63.htmlgfx11_ssrc_6fbc49.htmlgfx11_ssrc_81ba27.htmlgfx11_ssrc_8dd4e0.htmlgfx11_tgt.htmlgfx11_type_deviation_8d2078.htmlgfx11_type_deviation_a14eb1.htmlgfx11_vaddr_0212e3.htmlgfx11_vaddr_0bfea4.htmlgfx11_vaddr_6ab80d.htmlgfx11_vaddr_9f7133.htmlgfx11_vaddr_a5639c.htmlgfx11_vaddr_b73dc0.htmlgfx11_vaddr_f20ee4.htmlgfx11_vcc.htmlgfx11_vdata0_6802ce.htmlgfx11_vdata0_fd235e.htmlgfx11_vdata1_6802ce.htmlgfx11_vdata1_e016a1.htmlgfx11_vdata1_fd235e.htmlgfx11_vdata_21b58d.htmlgfx11_vdata_2d6239.htmlgfx11_vdata_4b260e.htmlgfx11_vdata_56f215.htmlgfx11_vdata_6802ce.htmlgfx11_vdata_84fab6.htmlgfx11_vdata_aa5a53.htmlgfx11_vdata_ad559c.htmlgfx11_vdata_c08393.htmlgfx11_vdata_e016a1.htmlgfx11_vdata_fd235e.htmlgfx11_vdst_227281.htmlgfx11_vdst_463513.htmlgfx11_vdst_48e42f.htmlgfx11_vdst_5d50a1.htmlgfx11_vdst_5ec176.htmlgfx11_vdst_69a144.htmlgfx11_vdst_709347.htmlgfx11_vdst_81a6ed.htmlgfx11_vdst_89680f.htmlgfx11_vdst_9041ac.htmlgfx11_vdst_a49b76.htmlgfx11_vdst_bdb32f.htmlgfx11_vdst_d0dc43.htmlgfx11_vdst_d180f4.htmlgfx11_vdst_d71f1c.htmlgfx11_vdst_d7c57e.htmlgfx11_vdst_dd8a32.htmlgfx11_vdst_dfa6da.htmlgfx11_vdst_e2d005.htmlgfx11_vdst_eae4c8.htmlgfx11_vdst_f47754.htmlgfx11_vij.htmlgfx11_vparam.htmlgfx11_vparam0.htmlgfx11_vsrc_1c4e7f.htmlgfx11_vsrc_24f3d2.htmlgfx11_vsrc_6802ce.htmlgfx11_vsrc_731030.htmlgfx11_vsrc_e016a1.htmlgfx11_vsrc_fd235e.htmlgfx11_waitcnt.htmlgfx11_waitcnt_depctr.htmlgfx7_attr.htmlgfx7_dst.htmlgfx7_hwreg.htmlgfx7_imm16_0533c2.htmlgfx7_imm16_169952.htmlgfx7_label.htmlgfx7_m.htmlgfx7_msg.htmlgfx7_opt_0d447d.htmlgfx7_opt_847aed.htmlgfx7_param.htmlgfx7_sbase_382fdf.htmlgfx7_sbase_b0aa25.htmlgfx7_sdst_0804b1.htmlgfx7_sdst_2a1d2e.htmlgfx7_sdst_313759.htmlgfx7_sdst_362c37.htmlgfx7_sdst_61ce79.htmlgfx7_sdst_6cc8e9.htmlgfx7_sdst_9172f3.htmlgfx7_sdst_e3bd3f.htmlgfx7_simm32_6f0844.htmlgfx7_simm32_a3e80c.htmlgfx7_soffset_48c95e.htmlgfx7_soffset_67d76d.htmlgfx7_src_1f730e.htmlgfx7_src_3865f6.htmlgfx7_src_3e3a6b.htmlgfx7_src_516946.htmlgfx7_src_5599b0.htmlgfx7_src_5c4f8d.htmlgfx7_src_8e54a0.htmlgfx7_src_935f3b.htmlgfx7_src_d48e27.htmlgfx7_src_d56c56.htmlgfx7_src_fa88a6.htmlgfx7_srsrc_80eef6.htmlgfx7_srsrc_cf7132.htmlgfx7_ssamp.htmlgfx7_ssrc_19a078.htmlgfx7_ssrc_2e8313.htmlgfx7_ssrc_6df989.htmlgfx7_ssrc_a778e3.htmlgfx7_ssrc_b0d552.htmlgfx7_ssrc_bdc010.htmlgfx7_ssrc_c5f5de.htmlgfx7_ssrc_d8712d.htmlgfx7_ssrc_dcdeb4.htmlgfx7_ssrc_e471f7.htmlgfx7_ssrc_fdbed3.htmlgfx7_tgt.htmlgfx7_type_deviation.htmlgfx7_vaddr_887f26.htmlgfx7_vaddr_9f7133.htmlgfx7_vaddr_da1f09.htmlgfx7_vaddr_f20ee4.htmlgfx7_vcc.htmlgfx7_vdata0_6802ce.htmlgfx7_vdata0_fd235e.htmlgfx7_vdata1_6802ce.htmlgfx7_vdata1_fd235e.htmlgfx7_vdata_2d6239.htmlgfx7_vdata_4b260e.htmlgfx7_vdata_56f215.htmlgfx7_vdata_6802ce.htmlgfx7_vdata_84fab6.htmlgfx7_vdata_aa5a53.htmlgfx7_vdata_ad559c.htmlgfx7_vdata_c08393.htmlgfx7_vdata_e016a1.htmlgfx7_vdata_fd235e.htmlgfx7_vdst_1f3009.htmlgfx7_vdst_463513.htmlgfx7_vdst_48e42f.htmlgfx7_vdst_69a144.htmlgfx7_vdst_709347.htmlgfx7_vdst_81a6ed.htmlgfx7_vdst_875645.htmlgfx7_vdst_89680f.htmlgfx7_vdst_a49b76.htmlgfx7_vdst_bdb32f.htmlgfx7_vdst_d0dc43.htmlgfx7_vdst_d71f1c.htmlgfx7_vdst_d7c57e.htmlgfx7_vdst_dd8a32.htmlgfx7_vdst_dfa6da.htmlgfx7_vdst_f47754.htmlgfx7_vsrc_6802ce.htmlgfx7_vsrc_ba3116.htmlgfx7_vsrc_e016a1.htmlgfx7_vsrc_fd235e.htmlgfx7_waitcnt.htmlgfx8_attr.htmlgfx8_dst.htmlgfx8_hwreg.htmlgfx8_imask.htmlgfx8_imm16_0533c2.htmlgfx8_imm16_169952.htmlgfx8_label.htmlgfx8_m_28b494.htmlgfx8_m_c141fc.htmlgfx8_msg.htmlgfx8_opt_0d447d.htmlgfx8_opt_847aed.htmlgfx8_param.htmlgfx8_probe.htmlgfx8_sbase_589eed.htmlgfx8_sbase_b0aa25.htmlgfx8_sdata_7cbd60.htmlgfx8_sdata_c8788e.htmlgfx8_sdata_e587f5.htmlgfx8_sdst_0804b1.htmlgfx8_sdst_1cf20d.htmlgfx8_sdst_313759.htmlgfx8_sdst_362c37.htmlgfx8_sdst_61db0e.htmlgfx8_sdst_6eddac.htmlgfx8_sdst_78579b.htmlgfx8_sdst_8d900a.htmlgfx8_simm32_6f0844.htmlgfx8_simm32_a3e80c.htmlgfx8_simm32_be0c1c.htmlgfx8_soffset_32c2a9.htmlgfx8_soffset_abb420.htmlgfx8_soffset_b5af46.htmlgfx8_src_021c9b.htmlgfx8_src_2dcf49.htmlgfx8_src_39a989.htmlgfx8_src_516946.htmlgfx8_src_67227c.htmlgfx8_src_87dc5c.htmlgfx8_src_8a6ea8.htmlgfx8_src_a13aeb.htmlgfx8_src_b38805.htmlgfx8_src_d9175b.htmlgfx8_src_df6b53.htmlgfx8_srsrc_80eef6.htmlgfx8_srsrc_cf7132.htmlgfx8_ssamp.htmlgfx8_ssrc_0eec95.htmlgfx8_ssrc_133cbc.htmlgfx8_ssrc_6706dc.htmlgfx8_ssrc_a2142e.htmlgfx8_ssrc_c8788e.htmlgfx8_ssrc_dcd0d4.htmlgfx8_ssrc_e587f5.htmlgfx8_ssrc_f308b1.htmlgfx8_ssrc_f48190.htmlgfx8_tgt.htmlgfx8_type_deviation.htmlgfx8_vaddr_887f26.htmlgfx8_vaddr_9f7133.htmlgfx8_vaddr_b73dc0.htmlgfx8_vaddr_f20ee4.htmlgfx8_vcc.htmlgfx8_vdata0_6802ce.htmlgfx8_vdata0_fd235e.htmlgfx8_vdata1_6802ce.htmlgfx8_vdata1_fd235e.htmlgfx8_vdata_2d6239.htmlgfx8_vdata_4b260e.htmlgfx8_vdata_4f639e.htmlgfx8_vdata_56f215.htmlgfx8_vdata_629a92.htmlgfx8_vdata_6802ce.htmlgfx8_vdata_84fab6.htmlgfx8_vdata_886702.htmlgfx8_vdata_aa5a53.htmlgfx8_vdata_ad559c.htmlgfx8_vdata_aeb804.htmlgfx8_vdata_c08393.htmlgfx8_vdata_e016a1.htmlgfx8_vdata_f2bf57.htmlgfx8_vdata_fd235e.htmlgfx8_vdst_0ae2f9.htmlgfx8_vdst_2d89ba.htmlgfx8_vdst_463513.htmlgfx8_vdst_4730df.htmlgfx8_vdst_48e42f.htmlgfx8_vdst_69a144.htmlgfx8_vdst_6f591e.htmlgfx8_vdst_709347.htmlgfx8_vdst_81a6ed.htmlgfx8_vdst_829fc5.htmlgfx8_vdst_875645.htmlgfx8_vdst_89680f.htmlgfx8_vdst_9c54fe.htmlgfx8_vdst_a49b76.htmlgfx8_vdst_b61114.htmlgfx8_vdst_bdb32f.htmlgfx8_vdst_c360a5.htmlgfx8_vdst_d0dc43.htmlgfx8_vdst_d71f1c.htmlgfx8_vdst_d7c57e.htmlgfx8_vdst_d809e2.htmlgfx8_vdst_dd8a32.htmlgfx8_vdst_de9309.htmlgfx8_vdst_dfa6da.htmlgfx8_vdst_f47754.htmlgfx8_vsrc_6802ce.htmlgfx8_vsrc_ba3116.htmlgfx8_vsrc_e016a1.htmlgfx8_vsrc_fd235e.htmlgfx8_waitcnt.htmlgfx900_fx_operand.htmlgfx900_m.htmlgfx900_src.htmlgfx900_src_1.htmlgfx900_vdst.htmlgfx904_fx_operand.htmlgfx904_m.htmlgfx904_src.htmlgfx904_src_1.htmlgfx904_vdst.htmlgfx906_fx_operand.htmlgfx906_m.htmlgfx906_m_1.htmlgfx906_src.htmlgfx906_src_1.htmlgfx906_src_2.htmlgfx906_src_3.htmlgfx906_src_4.htmlgfx906_type_deviation.htmlgfx906_vdst.htmlgfx906_vsrc.htmlgfx908_fx_operand.htmlgfx908_m_28b494.htmlgfx908_m_c141fc.htmlgfx908_saddr.htmlgfx908_soffset.htmlgfx908_src_4e78e6.htmlgfx908_src_73ab34.htmlgfx908_src_7c8695.htmlgfx908_src_955b45.htmlgfx908_src_d578c4.htmlgfx908_src_d95796.htmlgfx908_srsrc.htmlgfx908_type_deviation.htmlgfx908_vaddr_0212e3.htmlgfx908_vaddr_b73dc0.htmlgfx908_vdata_6802ce.htmlgfx908_vdata_fe1edf.htmlgfx908_vdst_0c4ef8.htmlgfx908_vdst_2c8d1e.htmlgfx908_vdst_78dd0a.htmlgfx908_vdst_89680f.htmlgfx908_vdst_bcee7a.htmlgfx908_vsrc_036abe.htmlgfx908_vsrc_1027ca.htmlgfx908_vsrc_2d4632.htmlgfx908_vsrc_6802ce.htmlgfx908_vsrc_9ad749.htmlgfx908_vsrc_be4895.htmlgfx908_vsrc_f3d248.htmlgfx90a_dst.htmlgfx90a_fx_operand.htmlgfx90a_hwreg.htmlgfx90a_imask.htmlgfx90a_imm16_0533c2.htmlgfx90a_imm16_169952.htmlgfx90a_label.htmlgfx90a_m_28b494.htmlgfx90a_m_c141fc.htmlgfx90a_msg.htmlgfx90a_opt_0d447d.htmlgfx90a_opt_847aed.htmlgfx90a_probe.htmlgfx90a_saddr_6060e5.htmlgfx90a_saddr_a37373.htmlgfx90a_sbase_044055.htmlgfx90a_sbase_0cd545.htmlgfx90a_sbase_b0aa25.htmlgfx90a_sdata_45d924.htmlgfx90a_sdata_595c25.htmlgfx90a_sdata_7cbd60.htmlgfx90a_sdata_ba98a3.htmlgfx90a_sdata_c1aec6.htmlgfx90a_sdata_e9f591.htmlgfx90a_sdst_06b266.htmlgfx90a_sdst_0804b1.htmlgfx90a_sdst_362c37.htmlgfx90a_sdst_3bc700.htmlgfx90a_sdst_59204c.htmlgfx90a_sdst_718cc4.htmlgfx90a_sdst_94342d.htmlgfx90a_sdst_a319e6.htmlgfx90a_simm32_6f0844.htmlgfx90a_simm32_a3e80c.htmlgfx90a_simm32_be0c1c.htmlgfx90a_soffset_02ec85.htmlgfx90a_soffset_4318ca.htmlgfx90a_soffset_8a17c8.htmlgfx90a_src_4de5c6.htmlgfx90a_src_56ed80.htmlgfx90a_src_64ea89.htmlgfx90a_src_6cfc4e.htmlgfx90a_src_a578ba.htmlgfx90a_src_af08be.htmlgfx90a_src_d578c4.htmlgfx90a_src_d95796.htmlgfx90a_src_e1561c.htmlgfx90a_src_e5cc81.htmlgfx90a_src_f73668.htmlgfx90a_srsrc_79ffcd.htmlgfx90a_srsrc_80eef6.htmlgfx90a_ssamp.htmlgfx90a_ssrc_4db4a9.htmlgfx90a_ssrc_57838b.htmlgfx90a_ssrc_595c25.htmlgfx90a_ssrc_65f041.htmlgfx90a_ssrc_aee59c.htmlgfx90a_ssrc_c31902.htmlgfx90a_ssrc_c5d631.htmlgfx90a_ssrc_c8a322.htmlgfx90a_ssrc_e9f591.htmlgfx90a_type_deviation.htmlgfx90a_vaddr_0212e3.htmlgfx90a_vaddr_76b997.htmlgfx90a_vaddr_9f7133.htmlgfx90a_vaddr_b73dc0.htmlgfx90a_vaddr_cc213c.htmlgfx90a_vaddr_f20ee4.htmlgfx90a_vcc.htmlgfx90a_vdata0_9ad749.htmlgfx90a_vdata0_be4895.htmlgfx90a_vdata1_9ad749.htmlgfx90a_vdata1_be4895.htmlgfx90a_vdata_0c567e.htmlgfx90a_vdata_848ff7.htmlgfx90a_vdata_898c08.htmlgfx90a_vdata_929b59.htmlgfx90a_vdata_999247.htmlgfx90a_vdata_9ad749.htmlgfx90a_vdata_ae1132.htmlgfx90a_vdata_bbcfbb.htmlgfx90a_vdata_be4895.htmlgfx90a_vdata_cbb01e.htmlgfx90a_vdata_cfb402.htmlgfx90a_vdst_0f48d1.htmlgfx90a_vdst_180bef.htmlgfx90a_vdst_260aca.htmlgfx90a_vdst_5258b4.htmlgfx90a_vdst_69a144.htmlgfx90a_vdst_78dd0a.htmlgfx90a_vdst_89680f.htmlgfx90a_vdst_8c77d4.htmlgfx90a_vdst_92bb33.htmlgfx90a_vdst_a32035.htmlgfx90a_vdst_a9ee3f.htmlgfx90a_vdst_bdb32f.htmlgfx90a_vdst_c8d317.htmlgfx90a_vdst_c8ee02.htmlgfx90a_vdst_d0c0cb.htmlgfx90a_vdst_d6f4bd.htmlgfx90a_vdst_d8236e.htmlgfx90a_vdst_e2898f.htmlgfx90a_vdst_ef6c94.htmlgfx90a_vdst_f5eb9d.htmlgfx90a_vdst_fa7dbd.htmlgfx90a_vsrc_1027ca.htmlgfx90a_vsrc_6802ce.htmlgfx90a_vsrc_9ad749.htmlgfx90a_vsrc_be4895.htmlgfx90a_vsrc_e016a1.htmlgfx90a_vsrc_fd235e.htmlgfx90a_waitcnt.htmlgfx940_dst_4f3f9a.htmlgfx940_dst_95761f.htmlgfx940_fx_operand.htmlgfx940_hwreg.htmlgfx940_imask.htmlgfx940_imm16_0533c2.htmlgfx940_imm16_169952.htmlgfx940_label.htmlgfx940_m_28b494.htmlgfx940_m_c141fc.htmlgfx940_msg.htmlgfx940_opt_0d447d.htmlgfx940_opt_7c211e.htmlgfx940_probe.htmlgfx940_saddr_22dbc1.htmlgfx940_saddr_a37373.htmlgfx940_sbase_044055.htmlgfx940_sbase_0cd545.htmlgfx940_sbase_b0aa25.htmlgfx940_sdata_45d924.htmlgfx940_sdata_595c25.htmlgfx940_sdata_7cbd60.htmlgfx940_sdata_ba98a3.htmlgfx940_sdata_c1aec6.htmlgfx940_sdata_e9f591.htmlgfx940_sdst_06b266.htmlgfx940_sdst_0804b1.htmlgfx940_sdst_362c37.htmlgfx940_sdst_3bc700.htmlgfx940_sdst_59204c.htmlgfx940_sdst_718cc4.htmlgfx940_sdst_94342d.htmlgfx940_sdst_a319e6.htmlgfx940_simm32_6f0844.htmlgfx940_simm32_a3e80c.htmlgfx940_simm32_be0c1c.htmlgfx940_soffset_02ec85.htmlgfx940_soffset_4318ca.htmlgfx940_soffset_8a17c8.htmlgfx940_src_4de5c6.htmlgfx940_src_56ed80.htmlgfx940_src_64ea89.htmlgfx940_src_6cfc4e.htmlgfx940_src_a578ba.htmlgfx940_src_af08be.htmlgfx940_src_d578c4.htmlgfx940_src_d95796.htmlgfx940_src_e1561c.htmlgfx940_src_e5cc81.htmlgfx940_src_f73668.htmlgfx940_srsrc.htmlgfx940_ssrc_4db4a9.htmlgfx940_ssrc_57838b.htmlgfx940_ssrc_595c25.htmlgfx940_ssrc_65f041.htmlgfx940_ssrc_aee59c.htmlgfx940_ssrc_c31902.htmlgfx940_ssrc_c5d631.htmlgfx940_ssrc_c8a322.htmlgfx940_ssrc_e9f591.htmlgfx940_type_deviation.htmlgfx940_vaddr_0212e3.htmlgfx940_vaddr_6ab80d.htmlgfx940_vaddr_9f7133.htmlgfx940_vaddr_b73dc0.htmlgfx940_vaddr_f20ee4.htmlgfx940_vcc.htmlgfx940_vdata0_9ad749.htmlgfx940_vdata0_be4895.htmlgfx940_vdata1_9ad749.htmlgfx940_vdata1_be4895.htmlgfx940_vdata_22b375.htmlgfx940_vdata_275367.htmlgfx940_vdata_314509.htmlgfx940_vdata_848ff7.htmlgfx940_vdata_9ad749.htmlgfx940_vdata_be4895.htmlgfx940_vdata_cfb402.htmlgfx940_vdst_0f48d1.htmlgfx940_vdst_180bef.htmlgfx940_vdst_260aca.htmlgfx940_vdst_5258b4.htmlgfx940_vdst_56baf6.htmlgfx940_vdst_69a144.htmlgfx940_vdst_78dd0a.htmlgfx940_vdst_89680f.htmlgfx940_vdst_8c77d4.htmlgfx940_vdst_a32035.htmlgfx940_vdst_bce42a.htmlgfx940_vdst_bdb32f.htmlgfx940_vdst_c8d317.htmlgfx940_vdst_d0c0cb.htmlgfx940_vdst_d6f4bd.htmlgfx940_vdst_d8236e.htmlgfx940_vdst_e2898f.htmlgfx940_vdst_fa7dbd.htmlgfx940_vsrc_1027ca.htmlgfx940_vsrc_6802ce.htmlgfx940_vsrc_848ff7.htmlgfx940_vsrc_9ad749.htmlgfx940_vsrc_be4895.htmlgfx940_vsrc_e016a1.htmlgfx940_vsrc_fd235e.htmlgfx940_waitcnt.htmlgfx9_attr.htmlgfx9_dst.htmlgfx9_hwreg.htmlgfx9_imask.htmlgfx9_imm16_0533c2.htmlgfx9_imm16_169952.htmlgfx9_label.htmlgfx9_m_28b494.htmlgfx9_m_c141fc.htmlgfx9_msg.htmlgfx9_opt_0d447d.htmlgfx9_opt_847aed.htmlgfx9_param.htmlgfx9_probe.htmlgfx9_saddr_6060e5.htmlgfx9_saddr_a37373.htmlgfx9_sbase_044055.htmlgfx9_sbase_0cd545.htmlgfx9_sbase_b0aa25.htmlgfx9_sdata_45d924.htmlgfx9_sdata_595c25.htmlgfx9_sdata_7cbd60.htmlgfx9_sdata_ba98a3.htmlgfx9_sdata_c1aec6.htmlgfx9_sdata_e9f591.htmlgfx9_sdst_06b266.htmlgfx9_sdst_0804b1.htmlgfx9_sdst_362c37.htmlgfx9_sdst_3bc700.htmlgfx9_sdst_59204c.htmlgfx9_sdst_718cc4.htmlgfx9_sdst_94342d.htmlgfx9_sdst_a319e6.htmlgfx9_simm32_6f0844.htmlgfx9_simm32_a3e80c.htmlgfx9_simm32_be0c1c.htmlgfx9_soffset_02ec85.htmlgfx9_soffset_4318ca.htmlgfx9_soffset_8a17c8.htmlgfx9_src_089570.htmlgfx9_src_4de5c6.htmlgfx9_src_4e78e6.htmlgfx9_src_516946.htmlgfx9_src_56ed80.htmlgfx9_src_73ab34.htmlgfx9_src_955b45.htmlgfx9_src_d578c4.htmlgfx9_src_d95796.htmlgfx9_src_e1561c.htmlgfx9_src_f73668.htmlgfx9_srsrc_79ffcd.htmlgfx9_srsrc_80eef6.htmlgfx9_ssamp.htmlgfx9_ssrc_4db4a9.htmlgfx9_ssrc_57838b.htmlgfx9_ssrc_595c25.htmlgfx9_ssrc_65f041.htmlgfx9_ssrc_aee59c.htmlgfx9_ssrc_c31902.htmlgfx9_ssrc_c5d631.htmlgfx9_ssrc_c8a322.htmlgfx9_ssrc_e9f591.htmlgfx9_tgt.htmlgfx9_type_deviation.htmlgfx9_vaddr_0212e3.htmlgfx9_vaddr_76b997.htmlgfx9_vaddr_9f7133.htmlgfx9_vaddr_b73dc0.htmlgfx9_vaddr_cc213c.htmlgfx9_vaddr_f20ee4.htmlgfx9_vcc.htmlgfx9_vdata0_6802ce.htmlgfx9_vdata0_fd235e.htmlgfx9_vdata1_6802ce.htmlgfx9_vdata1_fd235e.htmlgfx9_vdata_21b58d.htmlgfx9_vdata_2d6239.htmlgfx9_vdata_4b260e.htmlgfx9_vdata_56f215.htmlgfx9_vdata_6802ce.htmlgfx9_vdata_84fab6.htmlgfx9_vdata_aa5a53.htmlgfx9_vdata_ad559c.htmlgfx9_vdata_c08393.htmlgfx9_vdata_e016a1.htmlgfx9_vdata_fd235e.htmlgfx9_vdst_463513.htmlgfx9_vdst_48e42f.htmlgfx9_vdst_4d2300.htmlgfx9_vdst_5d50a1.htmlgfx9_vdst_5ec176.htmlgfx9_vdst_69a144.htmlgfx9_vdst_709347.htmlgfx9_vdst_81a6ed.htmlgfx9_vdst_875645.htmlgfx9_vdst_89680f.htmlgfx9_vdst_a49b76.htmlgfx9_vdst_bdb32f.htmlgfx9_vdst_d0dc43.htmlgfx9_vdst_d71f1c.htmlgfx9_vdst_d7c57e.htmlgfx9_vdst_dd8a32.htmlgfx9_vdst_dfa6da.htmlgfx9_vdst_eae4c8.htmlgfx9_vdst_f47754.htmlgfx9_vsrc_6802ce.htmlgfx9_vsrc_ba3116.htmlgfx9_vsrc_e016a1.htmlgfx9_vsrc_fd235e.htmlgfx9_waitcnt.htmlAMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStackAMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack.htmlAMDGPUDwarfExtensionsForHeterogeneousDebugging.htmlAMDGPUInstructionNotation.htmlAMDGPUInstructionSyntax.htmlAMDGPUModifierSyntax.htmlAMDGPUOperandSyntax.htmlAMDGPUUsage.htmlAddingConstrainedIntrinsics.htmlAdvancedBuilds.htmlAliasAnalysis.htmlAssignmentTracking.htmlAtomics.htmlBenchmarking.htmlBigEndianNEON.htmlBitCodeFormat.htmlBlockFrequencyTerminology.htmlBranchWeightMetadata.htmlBugLifeCycle.htmlBugpoint.htmlBugpointRedesign.htmlBuildingADistribution.htmlCFIVerify.htmlCMake.htmlCMakePrimer.htmlCodeGenerator.htmlCodeOfConduct.htmlCodeReview.htmlCodingStandards.htmlCommandGuideFileCheck.htmlbugpoint.htmlclang-tblgen.htmldsymutil.htmlindex.htmllit.htmlllc.htmllldb-tblgen.htmllli.htmlllvm-addr2line.htmlllvm-ar.htmlllvm-as.htmlllvm-bcanalyzer.htmlllvm-config.htmlllvm-cov.htmlllvm-cxxfilt.htmlllvm-cxxmap.htmlllvm-debuginfo-analyzer.htmlllvm-diff.htmlllvm-dis.htmlllvm-dwarfdump.htmlllvm-dwarfutil.htmlllvm-exegesis.htmlllvm-extract.htmlllvm-ifs.htmlllvm-install-name-tool.htmlllvm-lib.htmlllvm-libtool-darwin.htmlllvm-link.htmlllvm-lipo.htmlllvm-locstats.htmlllvm-mc.htmlllvm-mca.htmlllvm-nm.htmlllvm-objcopy.htmlllvm-objdump.htmlllvm-opt-report.htmlllvm-otool.htmlllvm-pdbutil.htmlllvm-profdata.htmlllvm-profgen.htmlllvm-ranlib.htmlllvm-readelf.htmlllvm-readobj.htmlllvm-reduce.htmlllvm-remark-size-diff.htmlllvm-remarkutil.htmlllvm-size.htmlllvm-stress.htmlllvm-strings.htmlllvm-strip.htmlllvm-symbolizer.htmlllvm-tblgen.htmlllvm-tli-checker.htmlmlir-tblgen.htmlopt.htmltblgen.htmlCommandLine.htmlCompileCudaWithLLVM.htmlCompilerWriterInfo.htmlContributing.htmlConvergenceAndUniformity.htmlConvergentOperations.htmlCoroutines.htmlCoverageMappingFormat.htmlCycleTerminology.htmlDebuggingJITedCode.htmlDependenceGraphsindex.htmlDeveloperPolicy.htmlDirectXUsage.htmlDiscourseMigrationGuide.htmlDocker.htmlExceptionHandling.htmlExtendingLLVM.htmlExtensions.htmlFAQ.htmlFatLTO.htmlFaultMaps.htmlFrontendPerformanceTips.htmlFuzzingLLVM.htmlGarbageCollection.htmlGetElementPtr.htmlGettingInvolved.htmlGettingStarted.htmlGettingStartedTutorials.htmlGettingStartedVS.htmlGitBisecting.htmlGitHub.htmlGitRepositoryPolicy.htmlGlobalISelGMIR.htmlGenericOpcode.htmlIRTranslator.htmlInstructionSelect.htmlKnownBits.htmlLegalizer.htmlPipeline.htmlPorting.htmlRegBankSelect.htmlResources.htmlindex.htmlGoldPlugin.htmlGwpAsan.htmlHowToAddABuilder.htmlHowToBuildOnARM.htmlHowToBuildWindowsItaniumPrograms.htmlHowToBuildWithPGO.htmlHowToCrossCompileBuiltinsOnArm.htmlHowToCrossCompileLLVM.htmlHowToReleaseLLVM.htmlHowToSetUpLLVMStyleRTTI.htmlHowToSubmitABug.htmlHowToUpdateDebugInfo.htmlHowToUseAttributes.htmlHowToUseInstrMappings.htmlInAlloca.htmlInstrRefDebugInfo.htmlJITLink.htmlLangRef.htmlLexicon.htmlLibFuzzer.htmlLinkTimeOptimization.htmlLoopTerminology.htmlMCJITDesignAndImplementation.htmlMIRLangRef.htmlMarkdownQuickstartTemplate.htmlMarkedUpDisassembly.htmlMeetupGuidelines.htmlMemTagSanitizer.htmlMemorySSA.htmlMergeFunctions.htmlMisExpect.htmlMyFirstTypoFix.htmlNVPTXUsage.htmlNewPassManager.htmlORCv2.htmlOpaquePointers.htmlOptBisect.htmlPCSectionsMetadata.htmlPDBCodeViewSymbols.htmlCodeViewTypes.htmlDbiStream.htmlGlobalStream.htmlHashTable.htmlModiStream.htmlMsfFile.htmlPdbStream.htmlPublicStream.htmlTpiStream.htmlindex.htmlPackaging.htmlPasses.htmlPhabricator.htmlPointerAuth.htmlProgrammersManual.htmlProjects.htmlProposalsGitHubMove.htmlTestSuite.htmlVariableNames.htmlVectorPredication.htmlVectorizationPlan.htmlRISCVUsage.htmlReference.htmlReleaseNotes.htmlReleaseProcess.htmlRemarks.htmlReportingGuide.htmlResponseGuide.htmlSPIRVUsage.htmlScudoHardenedAllocator.htmlSecurity.htmlSecurityTransparencyReports.htmlSegmentedStacks.htmlSourceLevelDebugging.htmlSpeculativeLoadHardening.htmlSphinxQuickstartTemplate.htmlStackMaps.htmlStackSafetyAnalysis.htmlStatepoints.htmlSupportLibrary.htmlSupportPolicy.htmlSymbolizerMarkupFormat.htmlSystemLibrary.htmlTableGenBackEnds.htmlBackGuide.htmlProgRef.htmlindex.htmlTableGenFundamentals.htmlTestSuiteGuide.htmlTestSuiteMakefileGuide.htmlTestingGuide.htmlTransformMetadata.htmlTypeMetadata.htmlUserGuides.htmlVectorizers.htmlWritingAnLLVMBackend.htmlWritingAnLLVMNewPMPass.htmlWritingAnLLVMPass.htmlXRay.htmlXRayExample.htmlXRayFDRFormat.htmlYamlIO.html_images01-value.example.frame.1.png01-value.example.frame.2.png01-value.example.frame.3.png01-value.example.png02-reg.example.frame.1.png02-reg.example.frame.2.png02-reg.example.png03-memory.example.frame.1.png03-memory.example.frame.2.png03-memory.example.frame.3.png03-memory.example.frame.4.png03-memory.example.png04-composite.example.frame.1.png04-composite.example.frame.2.png04-composite.example.frame.3.png04-composite.example.frame.4.png04-composite.example.frame.5.png04-composite.example.frame.6.png04-composite.example.frame.7.png04-composite.example.png05-composite-plus.example.frame.1.png05-composite-plus.example.frame.2.png06-extension-spill-sgpr-to-static-vpgr-lane.example.frame.1.png06-extension-spill-sgpr-to-static-vpgr-lane.example.frame.2.png06-extension-spill-sgpr-to-static-vpgr-lane.example.frame.3.png06-extension-spill-sgpr-to-static-vpgr-lane.example.png07-extension-multi-lane-vgpr.example.frame.1.png07-extension-multi-lane-vgpr.example.frame.10.png07-extension-multi-lane-vgpr.example.frame.11.png07-extension-multi-lane-vgpr.example.frame.12.png07-extension-multi-lane-vgpr.example.frame.13.png07-extension-multi-lane-vgpr.example.frame.14.png07-extension-multi-lane-vgpr.example.frame.2.png07-extension-multi-lane-vgpr.example.frame.3.png07-extension-multi-lane-vgpr.example.frame.4.png07-extension-multi-lane-vgpr.example.frame.5.png07-extension-multi-lane-vgpr.example.frame.6.png07-extension-multi-lane-vgpr.example.frame.7.png07-extension-multi-lane-vgpr.example.frame.8.png07-extension-multi-lane-vgpr.example.frame.9.png07-extension-multi-lane-vgpr.example.png08-extension-mixed-composite.example.frame.1.png08-extension-mixed-composite.example.frame.2.png08-extension-mixed-composite.example.frame.3.png08-extension-mixed-composite.example.frame.4.png08-extension-mixed-composite.example.frame.5.png08-extension-mixed-composite.example.frame.6.png08-extension-mixed-composite.example.frame.7.png08-extension-mixed-composite.example.png09-extension-form-aspace.example.frame.1.png09-extension-form-aspace.example.frame.2.png09-extension-form-aspace.example.frame.3.png09-extension-form-aspace.example.frame.4.png09-extension-form-aspace.example.frame.5.png09-extension-form-aspace.example.png10-extension-bit-offset.example.frame.1.png10-extension-bit-offset.example.frame.2.png10-extension-bit-offset.example.frame.3.png10-extension-bit-offset.example.frame.4.png10-extension-bit-offset.example.pngARM-BE-bitcastfail.pngARM-BE-bitcastsuccess.pngARM-BE-ld1.pngARM-BE-ldr.pngLangImpl05-cfg.pngMCJIT-creation.pngMCJIT-dyld-load.pngMCJIT-engine-builder.pngMCJIT-load-object.pngMCJIT-load.pngMCJIT-resolve-relocations.pngPhabricator_premerge_results.pngPhabricator_premerge_unit_tests.pngblock-extract.pngbuildbot_worker_contact.pngconvergence-both-diverged-nested.pngconvergence-closed-path.pngconvergence-divergent-inside.pngconvergence-divergent-outside.pngconvergence-natural-loop.pngcycle-1.pngcycle-2.pngcycle-3.pngcycle.pngcycle_pi.pngepilogue-vectorization-cfg.pngexample-gpu-hardware.pnggcc-loops.pnglinpack-pc.pngllvm-exegesis-analysis.pnglocstats-compare.pnglocstats-draw-plot.pngloop-guard.svgloop-irreducible.svgloop-merge.svgloop-nested.svgloop-nonmaximal.svgloop-separate.svgloop-single.svgloop-terminology-guarded-loop.pngloop-terminology-initial-loop.pngloop-terminology-rotated-loop.pngloop-terminology.svgpipeline-overview-customized.pngpipeline-overview-with-combiners.pngpipeline-overview.pngsimt-execution-model.pngspeculative_load_hardening_microbenchmarks.pngtesting-pass-level.pngtesting-unit-level.pnguml_builder_pattern.pnguml_nodes_and_edges.png_staticLoopOptWG_invite.icsbasic.csscontents.pngdoctools.jsdocumentation_options.jsfile.pnglanguage_data.jslines.gifllvm-theme.cssllvm.csslogo.pngminus.pngnavigation.pngplus.pngpygments.csssearchtools.jssphinx_highlight.jsgenindex.htmlindex.htmlobjects.invsearch.htmlsearchindex.jstutorialBuildingAJIT1.htmlBuildingAJIT2.htmlBuildingAJIT3.htmlBuildingAJIT4.htmlLangImpl01.htmlLangImpl02.htmlLangImpl03.htmlLangImpl04.htmlLangImpl05.htmlLangImpl06.htmlLangImpl07.htmlLangImpl08.htmlLangImpl09.htmlLangImpl10.htmlMyFirstLanguageFrontendLangImpl01.htmlLangImpl02.htmlLangImpl03.htmlLangImpl04.htmlLangImpl05.htmlLangImpl06.htmlLangImpl07.htmlLangImpl08.htmlLangImpl09.htmlLangImpl10.htmlindex.htmlindex.htmlyaml2obj.html/usr/share/doc/packages//usr/share/doc/packages/llvm//usr/share/doc/packages/llvm/AMDGPU//usr/share/doc/packages/llvm/AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack//usr/share/doc/packages/llvm/CommandGuide//usr/share/doc/packages/llvm/DependenceGraphs//usr/share/doc/packages/llvm/Frontend//usr/share/doc/packages/llvm/GlobalISel//usr/share/doc/packages/llvm/PDB//usr/share/doc/packages/llvm/Proposals//usr/share/doc/packages/llvm/TableGen//usr/share/doc/packages/llvm/_images//usr/share/doc/packages/llvm/_static//usr/share/doc/packages/llvm/tutorial//usr/share/doc/packages/llvm/tutorial/MyFirstLanguageFrontend/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:35422/SUSE_SLE-15-SP6_Update/5d90d0d45cc9858804a5d7529a7d9123-llvm17.SUSE_SLE-15-SP6_Updatedrpmxz5x86_64-suse-linux    !"#$%&'()*+,-./01234456789:;<<=======>?@=ABCDEFGHIJKLKKMKNKKOPQPKKRRJRSdirectoryHTML document, UTF-8 Unicode text, with very long linesHTML document, UTF-8 Unicode textPNG image data, 1213 x 160, 8-bit/color RGB, non-interlacedPNG image data, 1213 x 227, 8-bit/color RGBA, non-interlacedPNG image data, 1421 x 802, 8-bit colormap, non-interlacedPNG image data, 1673 x 148, 8-bit/color RGB, non-interlacedPNG image data, 1673 x 191, 8-bit/color RGBA, non-interlacedPNG image data, 1421 x 461, 8-bit colormap, non-interlacedPNG image data, 1673 x 160, 8-bit/color RGB, non-interlacedPNG image data, 1673 x 227, 8-bit/color RGBA, non-interlacedPNG image data, 1421 x 812, 8-bit colormap, non-interlacedPNG image data, 1673 x 253, 8-bit/color RGB, non-interlacedPNG image data, 1673 x 280, 8-bit/color RGB, non-interlacedPNG image data, 1673 x 316, 8-bit/color RGB, non-interlacedPNG image data, 1673 x 405, 8-bit/color RGB, non-interlacedPNG image data, 1673 x 368, 8-bit/color RGB, non-interlacedPNG image data, 1241 x 160, 8-bit/color RGB, non-interlacedPNG image data, 1241 x 227, 8-bit/color RGBA, non-interlacedPNG image data, 1343 x 803, 8-bit colormap, non-interlacedPNG image data, 1241 x 468, 8-bit/color RGB, non-interlacedPNG image data, 1241 x 593, 8-bit/color RGBA, non-interlacedPNG image data, 1241 x 503, 8-bit/color RGBA, non-interlacedPNG image data, 1343 x 737, 8-bit colormap, non-interlacedPNG image data, 1241 x 500, 8-bit/color RGB, non-interlacedPNG image data, 1343 x 885, 8-bit colormap, non-interlacedPNG image data, 1241 x 221, 8-bit/color RGB, non-interlacedPNG image data, 1241 x 319, 8-bit/color RGBA, non-interlacedPNG image data, 1420 x 963, 8-bit colormap, non-interlacedPNG image data, 1241 x 191, 8-bit/color RGBA, non-interlacedPNG image data, 1420 x 512, 8-bit colormap, non-interlacedPNG image data, 606 x 326, 8-bit/color RGBA, non-interlacedPNG image data, 626 x 459, 8-bit/color RGBA, non-interlacedPNG image data, 604 x 234, 8-bit/color RGBA, non-interlacedPNG image data, 560 x 234, 8-bit/color RGBA, non-interlacedPNG image data, 423 x 315, 8-bit/color RGB, non-interlacedPNG image data, 495 x 254, 8-bit/color RGBA, non-interlacedPNG image data, 543 x 399, 8-bit/color RGBA, non-interlacedPNG image data, 381 x 315, 8-bit/color RGBA, non-interlacedPNG image data, 531 x 687, 8-bit/color RGBA, non-interlacedPNG image data, 489 x 339, 8-bit/color RGBA, non-interlacedPNG image data, 555 x 495, 8-bit/color RGBA, non-interlacedPNG image data, 1103 x 176, 8-bit/color RGBA, non-interlacedPNG image data, 886 x 218, 8-bit/color RGB, non-interlacedPNG image data, 605 x 446, 8-bit/color RGBA, non-interlacedPNG image data, 668 x 369, 8-bit/color RGBA, non-interlacedPNG image data, 201 x 382, 8-bit/color RGB, non-interlacedPNG image data, 206 x 419, 8-bit/color RGB, non-interlacedPNG image data, 419 x 387, 8-bit/color RGB, non-interlacedPNG image data, 419 x 385, 8-bit/color RGB, non-interlacedPNG image data, 157 x 419, 8-bit/color RGB, non-interlacedPNG image data, 227 x 347, 8-bit/color RGBA, non-interlacedPNG image data, 179 x 347, 8-bit/color RGBA, non-interlacedPNG image data, 586 x 286, 8-bit/color RGBA, non-interlacedPNG image data, 570 x 461, 8-bit/color RGBA, non-interlacedPNG image data, 381 x 744, 8-bit/color RGBA, non-interlacedPNG image data, 2495 x 1255, 8-bit/color RGBA, non-interlacedPNG image data, 713 x 331, 8-bit/color RGBA, non-interlacedPNG image data, 437 x 286, 8-bit/color RGBA, non-interlacedPNG image data, 886 x 259, 8-bit/color RGBA, non-interlacedPNG image data, 1200 x 800, 8-bit/color RGBA, non-interlacedSVG Scalable Vector Graphics imagePNG image data, 764 x 855, 8-bit/color RGBA, non-interlacedPNG image data, 467 x 554, 8-bit/color RGBA, non-interlacedPNG image data, 748 x 789, 8-bit/color RGBA, non-interlacedPNG image data, 564 x 354, 8-bit/color RGBA, non-interlacedPNG image data, 1702 x 272, 8-bit/color RGBA, non-interlacedPNG image data, 1704 x 271, 8-bit/color RGBA, non-interlacedPNG image data, 1573 x 1047, 8-bit/color RGBA, non-interlacedPNG image data, 2052 x 1116, 8-bit/color RGBA, non-interlacedPNG image data, 1702 x 720, 8-bit/color RGBA, non-interlacedPNG image data, 1380 x 350, 8-bit/color RGBA, non-interlacedPNG image data, 1015 x 571, 8-bit/color RGBA, non-interlacedPNG image data, 813 x 577, 8-bit/color RGBA, non-interlacedASCII textPNG image data, 1 x 40, 8-bit/color RGBA, non-interlacedPNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 16 x 30PNG image data, 250 x 88, 8-bit colormap, non-interlacedPNG image data, 11 x 11, 8-bit grayscale, non-interlacedPNG image data, 1 x 60, 8-bit/color RGBA, non-interlacedHTML document, ASCII textASCII text, with very long lines, with no line terminators8m$Qutf-8cbbab57a2df5a0115b1c7a31e3219a4d2d67ffee279f0876116759cf80c121f0? 7zXZ !t/&]"k%"8M1籽|&6y&5.l X-(ݫ\1bH{K=Ŧ.[  9~&"JhSMMF`q@tjO̔$bʌ(P~Y m t[2Q7weW[k%n10c\ 1Wd1_Oh%%dVQz@>d5M^@OghTտ/nahf 0>-=Ͼ  A6@!>?竁~|,|B"(w0dNKeYDv4GMXHHR=vI 6#_$?tKiBF2g@ (veEhXzIēr*D ? 闾ћnDh L _apšHIFh >$7_0*QI$bHqdF8VWu*Ȁ>,QIY?ԉ@CX"͋]P=JZ,|[ejbP|abPR%/UUu'.Os~&-ıH,sv'(nbA%RRS_8 )'EB LYW`UsUci׃f)9\t>vG`_pݝmSԺ˪3Hjvv.J{gQʹL[^V@_+x(*uV+$pf%z`g`s~Z%#ҏ-|EVʲذ$(٫:UQ6f9{"B+;b<btxsuI> ?^^~'"rsm2hU YҹT+D?{"DD}B# /ZeıSv'Aک$O)HZ|"B /tc Ê <+Sp)PrFLu_O͈b}x\ Jby$RsV+-Nc94@z׀|Y5c*QC=S7.uBo Apʉ a~HMа[©UI:Hd*ץʳHzH.̩\}2ٳ6I;C/hY(psc?Y{a(w4U6w0պr)P_X(ˍb :t=Ǘ )֨ |ܫUSPy.ߡ+aij*|Y;ˌg V% 6cV%R{vzo*JH pFY涢(d/?oK]oZEbD͢Fcu"(m.NJ!--[E6<N5L ^<i+iTgm@mG{|1qDТT5)H y{ <il mdv}e)-u|v'"n8ZBܱ/Wo=˰;rg7/Q$ zH|B0"T}2߫%r Λ[_s- c[ bX"~Ag%0fIAw2rEJ;'HO^Dv|>9^<bl!!7 rj̴ѓCx 6yfN+}n۱z)#_p~ղ 5h$VaaVϝ#tŘ\u\ Ipzt%𥥶6/OfFxr"+Ǵ;-;o 'D/T|-4ݫdeND6f:DHb˄XMmLnjฉFcwRgZVI(q=闾d ՒTa g6\De^,?X/)Ma9:!"'!]_H4h pƩT`@k[2/sgITw<1!q$SGQ]<1jtU8d.QK+g23>&X=bTY#Hɣx{4WꟚ9>uG"W Ye:„}ԒYlRN Ao~Tzh/X ёL@xLB;O5#P*Sﲫa0#I*2q)*!wUpǛТ_hr hzQXJLpDpq4!=y^֧7@_D餠*8Exm-%(XAmIiqAZtu5թBpE#GBiPd ZMc XsΘKO|@4n,ϛ_10Wsi"*u{A&ke:NC5C#K! k WuH r1Mc M'C0`5i:IdLǸgCDlq}Pd򘛍EdXiB\6 S\#XJ@ 5-YvXduUBzld Ɇdȓ[WV$= JxȲќ$ը|Jғd/7S=$8/E0P,c_bs $UYYnptŁsg?^aE:D !Q&_@r 'L3aCOׅ$ ?ZmGyMhIfGVb%a g/V;t&w_ǖ$CvKA;I)I L==8ֲiW` 6pkJ0*~uɭSӄ9Cü|rmR͔>ME^l:Vv:!'o/zRzD{oP~A%QY 䧉Ԉb,;&hw*A\8ON1εhȾH0/ O+X&Iiҧ |iNpLO&d8C`To:'nD65{=1HZY. Fא*,^Nq 9fv(r*by 9DA.l,n}sW( ⿲gBYIz>7/fI3Vi-c4swC{@'r0ߨ7.WM`.' 2!?>&yhe糆 lL~MS&~̕"94C}[ߴÑ3bߚ_"@dAM@ݰ:{8$Sa%MnnG]̓-Yq <:A#uGk֣贗aVٚ~ʒ`zZ[Y!Hjhm-Y=h=\T^yg|ɔ1pa,l^o5UlpOIP_ЊYGBVqB nz"KߙMn4U9- P$ᗜaY;S=XWc#KUhF=z7K uS#l$ lY)Ru3 p57M(l)7(OJX@Q`2wsC]DZ&.&EJ6؄ }{ڸ o!s3uddKP>pN)$eDxE P5m4U#xPʽAOI׼'n ɌMK }+:X`8ֆ7Sl6 X_#T* ?~tHhQ~Ht܉B8I1iB)֯!='݋Úe#7?%d0M}ֶ YZ