dpdk-doc-18.11.9-lp151.3.8.1<>,_s,/=„0$OaHsYA-& =tYZԳDĭ2RVX~U݇RH ɏny{C]a`~ 6F@g,Ooɓd_/py">"{6$6.BOR?_>j'+ %RckzgAgb'FX$|}C9QMA(@rnDY#-}}JӨx}j?t(* _ag?ȵ3NdUˢ44jϙ]V<%۱ؓW_su><J?Jd   L  *08\  ' : p u$̨̤̇(8<9<:<GVHiI|XY\]^1b2zc3#d3e3f3l3u3vGJtJxJ~JCdpdk-doc18.11.9lp151.3.8.1Data Plane Development Kit API documentationAPI programming documentation for the Data Plane Development Kit._s,obs-arm-8NopenSUSE Leap 15.1openSUSEBSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-onlyhttp://bugs.opensuse.orgSystem/Librarieshttp://dpdk.orglinuxnoarchFg1#/    n3_ 6 u | | |  % w n n"# .  e 6 r 1 % J! n4  n Vm`IRN '4' gX3AW#;R&))'T6g:$`5mGU):xPOi !(dC.HKz|H0*&\T7Y',-sHs|QYOy:@"b,f?nG1;4wmm:R[I)ES[t\J }ZɌNpXJw;o4\[ 3~w|R)V}nv!3;'eH>/D!RZ| `Q"eHhU 1 P@`@ ?[ i46 Zg#K#P=2y ML#0,O`7?>a6K Zbg>#J"<wI #[ 7 :M6 \#~ `2q8 . $ 7 fBk  LR  0!  t/ 1 |@} )"K  9yN%F _b{ *f*%& L\4%3B-<mhX ^X{64'1_cjYA<>: =O7EMxP_,$6X-|[M!`:1,zG~)VnI'I)W%\p]DdI)_ )h`El;rBq)ig_yYN#]*0)2 -]_vp, c<Ǖ5uELhj3;;:{VMC 8͘r, V ) 4D(.CUö`kT; %,ټI"_qTQsiIkL7 H2; {}.w)47;~|C>0]6qS'B<i2!: Tu!,:)"Sun)5Y IO,5Y!Z QV'56$q Xj!HQJ3m)Y#*;va-2! [ f' %(nK@".q:<kD:]t6/6.$56Oo-;.I /.9&-* S%.O!!d%E1(! u#nZ%.vk e e 9 \ ?o+3 f,"!2!^N NL)] 8++m ) _(2u4#!| "6H4t(7 # M 8#J J37Avq/.S9d'8A_@+ 0v5!!'l" A i8g ; < 5 Ng$l#( ]X& !a.o~!& 5k#_w b%C;(DPO s&Jg1Y2."z#^$v-j'`((!3%qb pl>`;K{T^=? lo&,m+ } R/ b""whVJ'Pb8d I \ P g u x i [ 2_&UM$= Z2AA큤A큤_s0_sB_7y_7y_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s_s8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8cea9eb2f4d9053bb4e954d3d80bc46c7de148923ed65e32b0a387aedec172e4b59e7ed0ef70f99bb7f763a48ddd95d5990e103bb145eedfd0a76d19c122374be2782b30d237bdbeddfde4aed01f007264cc116b2d4be2f398a7cb74ec7a5bc58b608d310735b82e7541b4b403ed26818e10b1af5fed92f7820027f8b42219f29cc98c02adc57337f58c40aae15bbac05a3ccb364e5adb1d610a16452e92f17830d62b18a760a0605d4429e0f80dcf36653d8a3bfa6bf8f7e046ca7fa4c8e22d332312526d7e9a4bb2c455706c40b52dd9727ba4400fef0b3194e59ce94a3e6c30c90b351d725c4505add2afaa492ea225ea5a2652d6d5b27b327f860cfdd4b253e7db457af7a262c46bc9ed1ab3b8d3840be17604c8648c106d84781bd94fb809ce487c910aefd20be2ebf9a996edde93062e4203357d32b3fa9cdc607583919cdfcc1b6ef2eb5e8324f2c59a62f549bc3f14780f7e33a32b09a56399274ac4bbfec9f55c166a3fe393124530a247e7403ffbafbf4a8dd53126ea029b5515d67dc9b02c2b419cfd0f31bee0d4fe1563de3f7cfc1295dbb71a6618015875e12e58d2be12bbb223e1820a6e94b2320978ced714ad80bd6685b294e753b84b0edb96ea93b3c52b52e6546a4548d7a2f21396c56b112b2e1bcc3576e10136e9597be2f90e10dfb01256ae1db6152500c8c10a656af73085e0cb8f44954bf4db5acce8ccefd4d62e840e0b558ac583dc321075489a381d051cd089a893620d53ffd906a73ef084458b494036b53fcdb39c14307e95a5356a44f3b28080b916fdd6cd47e7e7571bddcc60bed9133d80e97bcb7d0d9d6f9392cb0884b102971440d66a0d0b7db6073c1d3b76d39ce0685a73bdeb2d4418b046f765a49a7ab6c4c134a5e0bacff77aa5e2e196b09c4d22f1c5c121835d8ecb54123dfd3942a3a7cdf3046e0af396a72e2b44662cd61c6b51111facf2afae3fe2b944f95a540ea30798e733ac7dca116d4924116bb4c2336a579c243261a6af81c485b9f97eb93bede44adff8dee3a5847e06127b8574fac1fcfee84a928b7bb5b2ce4269b6d1a3238bf1d08a131844f0dd7ee2bcd08ab5ebd8e97aa601199921bbad6dd932844348c5f6d9fb5758c409606273ee7c6cd96a498c9ad6a3ac84f24584a717521d668ce7d806da68a27bbecc60454e768c90669a77c2474a996e58dedca93278f76e7479e59567efebcdfa96c777427cf0c9d0394dd6fda8f92a3d6a6714c43056e2b735a8b671b80c5a23accb5520c7aa3308bba1a0e038c98561142509f8b3fde26672a7f89fd24ab766ce6be28e4dfbc806bcda7a1b1afd8a8cc1a573742c83f5fcd372bf4584922e73e05801ea87434bb9366fff82c545c5a2263e0e29418176bd47a3ad316c2635f366149d87b1e4c8a9f73f53a01a279b72cadeba322fa7fa4793cee85e2bffdb9d07e07fd9a947b651cdf6b2d19263d5de565a3131af4d5e6a9887df06ec0e39c861d01e4b5bc188cab8fd1793850179019e9018ab0f8e40641312ee62a6477b548b2cb5cda88c3c5f6b67b120f09703a4181c7a0fe19a7b690d02b9e216126a4d1a8ebfdfc13a0ddc9e11fbf36ae4d7ad56d42d371d2c0d23b47700df8f9dd32618bfd235254b84226de8a23dd8a16ba3680399d12579ef67856b70f7626eb4a52669b1a83fc65e13cf64786307619a439f1448a5f787654ad27396221d5cb1679259276d4b113b8d01be58961fdf9759525c354db07a6835d76ecf9c11729bd249d96dae56041211c0805b37c065199a1b6751ba594ce53fc01dd95d6d2a3ee009e28d11cdbd806e3e85a0e3b534cc5752a34911a43ff8d117b39815c12344827eb3117f123aee8bbe05c8400eeffdfe9ea4a442d0788463c692430dc6aaf527ee4e047567d44dc39b700d72f6ad99a3056368d6e0f6854cb4d928adeb2b766db8dbd5439800be3055d804b093add15a35e328c744aafb44b603b395bf97ca8f23fd7ba5330b550375d79624ed3f4bcd94ce0c80e8bf6d0cb93118e3988476f04c2e055c084b2bffdf335b3e5c2a7869af271fa734014c40eaf5771b503ec6def66506d34504f654af5c8c46010de8e6cbe674389b9534456dd05fabd2f48323229334704b702757bbca5e1d3efe57e54d296831d1386f5222b61553698cfe9fa9d358b8f8cb8bdf3177f3d68cf0983a65ec972907f2f01cc72380ef49901db5646ff70bb85e358a32cec8f0ca4714edbbf16d3aa9d4d102005e0f28de36673bc74c37bc1c5483d46b7d154134bb0cd43aaf05fecca87999cd11121448fb4a4cacd36bba2147ad0d2596ec967fd51c76d481c1634bdd92ab78b635a926dddd9dd2629ffdb74006d878668be96d6b934ccdf2b8ac5728ac18fc4a946ec56d5956ee0db8aaa0af4b2a437073d7f080091f1987c320e9e1110875f18065728156ff298d63ae2062103f9f20c5e86f2de47e5c98073a3ebe2700740622afe387ba7e37d1d527cdb890d64aa556e78e6f0837ab887ab5f1d71fb0265a0813fdd3edc4f7122a82edb62a9e2f7c0322f06339c2778e2b4b911221903f946146c5f14bc519d7313c624368e4dc21b84d07307efadf183d1a8a83cc1f29819833954bd280a904efd416cbde497e02a6640647b6693e5aa34996404542ef5c86ec4f41297ede117789d2c23de370a6b546d2cb53b99b1573b7ffb2c10e99c97061abe38931968ee2f11a157068f238402a7c6a04e5f2e1b4376464166b9a7ce4a619ebb86d9a846d6d7ccf6565b9440387232b5a5de125604262da0f3e1ebfa6a6102588efa4fdae0996b41114884bf0cf60e0de9e951ffa4ae24278cef1ebd506ec4441e0ad9608bdaf8d2f545c2ba63412415dd6fc60772a1bd97160c9cdc2244a7b94e4754f31f6f245cb60a873c847ebf87d1e40284e974485f916c9ef2ae6cf31c6b7d6b51a56a3113306366fb5ac73db3b82a650a04fd552051411ae0ab113543b2648f8882ef03237ae3ee3915dab3c6e4f5c70e72b548ffadb9ac6e0a66a884f55cc97823eef404e1613f3b7ba4b463de4db8fb0ee8a81f00fea6f9fa9f1b36fe28e3a3c56ebcc8c90ae9725e8a810c063b774596a3e6ecac25ea354bb3452a08c8bc50cc2a9e8eea8dd55b444a9bea912c9158c7188ce0ecf8af15520d067909c60ba88358062f868b5ae46ed46e93ba86a7d5f76efc3bef18e38ee5cd4cb41607a30d7820cc20ea76b4a3b8f57d3d2b7d102b58c8e13ad95e83aa19fb5f21208e5f321d154dbecdfc7439003b9de399d9d300554d6ed0b60ef6ac730533c72de5c34df37037008cceff17f7669e21434befe144b87215744a36bb36973a2aae66bbb99f2b57f2ef160182825fa5305444511ca1eca4e1b0b38528bbc656bd8eabe7d3ba94dbffdf2670f5e3e10e16f058cb09cfafad55e919e4316ec500dd5559e9bcb84fe2b46fe5d71206a950277c465a0f52c1951d8c0bd154f7c5a815b0cce4e166a02e9ecedabd677f6b15146fc5a55621ac544ca7079a079915c964aeaab53ed863c7794041533152691b12342573d985fdc47e29db79d2996c265578304169c25faf92984724519926f894ad0987589c481f90aa2047f9191b573d75740faa2047f18e7b999242a0afe126b9364f3d1d285105d3aae926095d88733fa7697088926ec1d2a076e488425fc7496c7383d33d2b9bd3d2fa3c3f281ee08f3d836be245e5ad5bdce3ca22d88040c7c84c981041a5bf84836ddf754b6cbf9a20fff262786e942be331646fbddb9fbcd827bbb59d8b8c5fa009a182db44526231c6b6d125596489259f93f44e0984e2ba1fe102556ab02dddc08b75122f8648407d3d92fe14f9571170be290020ee0336b2bbe7c62fc1fb2ba5bab38c97ab104d311ef1732f99723e7970d0ef717218e2f35b518d14ace905b48919725839623e080d69f818ea620b92454bdd6cebb29268052054ad22f927e16f5ccc26401150cff644607d180c88c45987e7352d6f440243e47aace38327e497a7f2542161779e139303878fed35c012bd545d61261e033eefdc9859279b2ac46c4bae5d6c182f26462da8cb68148ae80954a92082edc9e8afd8000f9a4805d33cb915ca63ff3bd38747f82394f1787194b90cc2bd9729fea22f9956692b4efdfec4b6ed8c6a34adc2e6aa2d9cf51146cbdddee0216cb591a7b880c6f1842e71cd99172242a51db650967137ff0e8ccfed8808911b6f8ea5ed7b3fa0827bbf078c217b14df4d449530516e6939b6b48cfd520f48e6766dfbb36cc56ac83fa79de1f03652ca9a2991305d42f8f4dd7c86e1928da9e071f79dbdac0e761f0749c26f7d50ce250f83c81c7841858e368f70746f288157f0cd4c87540e3486cbf376e88bf00c621da8875d0412fb86a854c08039db466674561c2f436fc11291cd7b4b26eabd003f616e847caaeb6bcb3c3c4d7a53afa77c8b89f7008504133e2c36ad3c20de62f0828040d1b02b3f084025512459e2805b69c6c434e5ccfc940a9cef5cd51db17430bd6d7442c7c76e4062eb035629e0fefb4105f1a7b66f85dff5cfc516866a5eb3ca53f27e0d4ecff2a5f78c83a5bfeded19be06d7123f380e8f1de7f37c70dcea07149256fa738148892b3f38ff620f0f4f8178d8352c5738560f897cabefe13890ef8d820a0267942c9590702a76783dc38bf1848e2026d7609d9a20de6c2430b3182754d6e9a30eda9aabccfe7b68869ec63a97b77bef0aa1ad279dfb4e44cdbce51720d24be6367c92640d1283e810e84c3718aac5eacfa514f0ff1d1798f94d356b604593cff08ee6a88a9f9f3eb4468680406fa74b13a51833f5988a31000feabb5e60b1c25f942c206bce50acf359d46f833fdaa5979b6283fd31db98ba7995fbcdfc4ec3ded4b75f687042497fb09de1ccfe37099b8fdf26952050b80eaf51d8c66fcf29149928de1cef193322a60722908d166c27ee7b1abc121a95da2c3f855c735d677636c3bdac41e834e50610f8f8de83c2ec4b14070c372d9001d274a4242f4a57aab936ee89119d4c4f2cc333ce8c15407a165ee422e5318da35dda0031c3cb310efe0077df2fce98e6fe856a3e0836c0072e55b59940dc283622e7102b416e631e49cb11b577a94c366dc912c159e45faaa8125ed0ea016841b5fcffa525ee1c02067ad47d53ccf497c90a431ac7d9220a99106427e8b1fb5b2e7c4c69e0c757b4e07c186d1be34f9aa402455e212d831ea8fe83a5be0fafcb47c111170e82bc894cb6c5c719941194b8666fdd71d1750ed37a300bab755f680622c9cf02024ce05ac9ffe18290a1fc304ca56a0cb35e1bbcce814eb971b712874458bef6f7bc78f43b19322f57b389bae08f9e12b93e3fc108f683c84b2c33dc18949988b8d164a92e4795ab605c429fbd3158198674ac8258387975d0ce8b9292eb71a53190ab9bc3aaf390c71fa3c03d0c842fc08f813a77d1abe5c690b79d99929077b2f9b54708aa45b4152eafc78d73fe667a18d01911d052418219f9f75a5e2499aad6faf431e89c2bebd2ba29d9c9d2deab7c5b233a13fe499d3a80fbb333748ba59afbb22d5bf91b03f5f79540863851ce38e2635e4e7683e19ddd6b37fd9c8c2f0d517a6aeaeafc38239b5a3b2bbd02003cd02cd87a37a359934cc0717b653283e8e96f7c65f8027004afcacd6fecbd3628c292f8c9424d63d933bb3b4267b24c7bd3835e366af70fa19a9bc5b6b587616290a23ede988167bff6c24e309a854b52bf7753dda271218fe5b8fe63ed976a1d48641947c21d1efa7460973186086b528d059991b27495aa9f50a071c8d566be7e9e65a1252233004822a972c4bc4e88a196341ab2c7983a8fc37d15d2a6def55d88d92ccdd643a02f482ffb2a3e703d7e0aea5a0402211eb5670614557281096399708c49a88dddbe2f161f1f5acc7918d4f2331e7652556b705ae5a21eef3f5808cf64f2c4eca69bf7cef4d9ea24dcfb5404d77d3be7f7f4a9379464c52f292f23ab994ec737b538c16463143649f40e4eecf853357191ba71959d6e1bf4fbec8fa99adee939bf20874b4da5093010a2381f865913bd46945c1e32c2cacce9d818374021e53a96a308361dec93ff958c843d2ccbe04334c9953ef42f61563f94ee7b65eeda9be7ece83cca1f8a3a92178303e3eae44b507ea9981ae9914c00e201c4b30716cfb8867db8e85f5de0c3ea7b0f51114059177882e9226df567c7d6578746e8fd8e490b4c4975ce4d4f24d9fa0cbf9e48fc946e763980246e2ed761bff27c93bbf657103bf8c3b8c02f1ade35476f6662aa79ffcb66cb0f5a7e58d7c0661121f1f2e6f4909e1d40a009859988a502222be03fb6d055ca42e8e8aa9b2f5629860847b987e361d4c2deba8890afb935dee368ae29010ffde7c65dcaefe0476490ea95c4e0dfc35349f6aa7a7af788d79f399e7571c9a4a1086b0a4a15f44c706a8d9798d9cb9eb35b217887d8b8f6218b5c87e88d970a42002db4163df0ac04a80b8ffef4cca19654ab515639efc85503db36ab90a0bdd0e54ea0b49ce272a618feaef3f6465491579a2a930a7a50fcd8bf58458820d91272882bc80403009dc1b8888c0e76906e5740c3170276a50ca3734418572d715c2d4c6556c6b8c7de23c77e119b4cfe8536efb808f2eda75c1e5a0b30a81b6a9d84410b98e9b1ab278f0f074d4166f547e1f39151680fd33db60d6672e44146ca49da8ef10c4917411c3717cf9ad1499bb04c7c45da3c5d9975460ee2113a445e02efe92ccfb9bb30b3cb3a8dc7d49294cf5ccef168e30ed7c286fb0bacbcbf509a130aea6cad0df5d21546c63c9b0e91438c85fb96a5370e07edd5beffde95c8300b9fc4998a40b7c4723fcb7e7af8ead456d3210985d50ca940cb1df58b74d2cbb3b551aa77fbb7aedcc6bc3eced6ac165d90e6dbdacecc6607826bbf1401e943daaead53b144a4c787ef85f1a229c93fc3aca8859f5ad7ec6dd292adc4095255adbc6b4f5c8e58f1ed3605ab142c5c1977faa42428fc2769d2338c3b0505a77a8016770edd063746c33aea8a0b09621b6ab457c3d02c7eab6e90cb78d25dd351f6cb79e52289846db89e8d7366932123921217515abc2928f5147159fcd8c54c53c8ac278ab50a35b8ffd9667f4d2e15a3446d7eea3c2991a12f8f00cfd32362e4bb8a236f41abcc94eb2995b67010a3833b89880275b65db65afc058abac895f57a9f5b50da4eff4ed980e98aee663f3c691f010df7da91a0902516debe0cbd872980e7c258181fe103a2587d81350cf406f8ad84d794472f620b1029c74f31fabd45bb773dbbab50beac0d03309a6063d4e1d4a0cd0514c91740ec0385b94490c0f219664fe0e4d4e9769ce88400bb6ac399abd6630e3f94d399c7f0b5f465da60b8a0bbea76026723cd9aea3408809272ae67a6155e53568b6983e9811a0160b0eaea9f89f37f4d4c3b1ad0c2852bd47014477f57bad908a798d9d412f8ca2b39d412e25988148b9c216f591708e2fad03b2b14c6d6f0b7e29438f1e427608962c3e9162481351b48bd602d9e89691144f766028a35493b7a35cf165d100f8db33c6215d8d9d9ed8955b55f352b2401f1af1b440ab093a4fa39f02ed764e3644031149696f23a688aa7361a833692bd8ab310f066738bee41412048e363fd3e9dad1d9d06b55bf53f4ac14d3dcccc0811e87bedfc03ee43bdf35ce617d29232946d34634601d613c51edd40df3f3b53ebad8bc945742f1947680ccf7cd25a0e34cdc8a95834508fa9e2c314c371e38467d2d3627c26aa5ce73b21ad0e3280817f3c2cdd421b96bbc1ded4824285e4b666725ce496a61cffe01160561baf400d08ad75e964943df38d112a594a3aeb28d76a4b8dcd4dee8249e10026f56f8118fece9096c571ec593321ea52ded841bc773bf1e9b2a883b3f9393ebb29af843c907c57d060d0a7c1056fbd239e867b7ea80fbdefa3a13c51e7e421366ec415f62dda71ecea7979888948b82056d6f10824454d2f6abb9b0d818774a504b1739388b0c7890a421183670133faced2046312a7d9f432a43c309f48b42773fb9494764731abae3af556fcf8aec434af6d3af44da694bb0236d69e9f6429e81dd27b561f00fe1283a3a94078407a3f348ff7150bfd8a40dd2f05eac5f7a563d29d62da64e6f5ed7ce79dd12ff65d43dd42412236673e3791f6af9499e506c1863c3073ec172f85632a482f8f15796c888bd4a80b6dba4fd1b1ca3e1962a6eb319d8487fe514d13836e3819bdd09b799ff1c424a8c6822509790ebba9dd427811108c06703458581cceb21e057ed1a3a19cb4ad3655bd5254e997e56cf294933bd413058d4f150812b3fc1adfad33687bb27cc366345055220b1a5de41ea70c6deb500573e23aa774ec949495128851d5b7fd88d667e41324d73956bc4f22d6e886ae0738b694dfbd63a31330a31d23f95dc6a94faa25c6685db08e59259edabbf82b4ffa16341baef27b4a59e76c8f2309d88842e900b7be9cc61cae3d3be3212dfcd699813cdcd6031ccd48996bcee2c6b642de1cef2a3bb6448a8bcff6648271377c48d29532ad695471cca8d41d9426171f7cc9dfbd3f76ad0c910148b285894dfb413a3aebfec17fb43d91e5747ffb762ef35277544ba75db19712f7c8dd5b07b8349d3f42a051b20e6c06d4c02ef2baf112de69ad3541b2e785208a517f866122af6d08e1179691c0355721ee8bba10262a6f46f43ac99cde67ba89866bf345fd6fc60a4bd3e98b42ffc330b871bc0cf5dffb712da638fdc46bb3bafc72288e538530494c8484111a3c821f51a52bf9f9df6922c7dc2179628192035ba68c468f846a11f64616143eef0dd2bc7b6e28f7f8b8802487fbaf9703fcd7f8b8a7e3cb558dc3ea25a55389c0e51a6df52e383ce0b323cf77e88810d212de9e93df5f019c1e831fea223ceb09303d1e80b95436ea671f364983074bd626907460689e4ad1f31e29ebc0ac8c9c7e885ae7c2e20c454efc5676b1ca444748d8beffd16c36c8945d02d821c3c2a3b22e5f19af7b05805dbaf867157c938c8edebcb12a0dba97bddc98572d4dab34cbdf6b289f735ef9e839efb04725d2d272efa2f5827efb3ba1ac3deb18814d93d855fa5edc874f4c76060cc30bc159369853383f09912fd8b65d6fc44e3568aa51c7bb161fad9179b30d7fea00ef97b09c5aeceabecc2f827870c1924d66b146b56c95dd97d70864b6eb30d020adbcd9c086c54bea1872f1f43dc1b55c579f700e48feeed2d6912b1475fabc760cb76871357933e1a7b24c5460b243c8ffc1982fdc7ebe10a48cfd95393744da55313fdd12de747594eaac58ed7e6460c0833ce5cc24ef600fcfce7c3a3b660c419b4db5f610c115b35072240ee9f32f3323595ef810c97be7ee273f5457b70eac2c6996e5c53040f624939b15892c9d0d7ebfb5f901e070fe7d36d5ad18b3e31e42642f6e65803e638e8aea2431ca2367250cb6b83e102cc4106ce659b0e23ef045263bafccd9f7369b66ddf5a1801a11fcb05ef26674ad286a5d75bba08f9b90f427a968ba37fb95e4d76a61b0b3a6d1bfa7442617144dca412346734866015fce4e99277d9ad8ef17c1985447ddf49211be47f80c32d24f850a73b19b36531c2db12bdd505bf37f053a6ff8812a8210cf0ba42e98ca1b6cdea9bd0dba6925cb823a39e2e65515d87d1a46417228a579422700ca31bd7d1a1b4fb108a5c792dd3a41e11785f7b120d33adf2daf4e5c22e7d2c9e2fa59b3a9b4d17bf6bbe617aaafa26df8ff4eef94b6ee9e9a5a6ca13a1c87edcfbfc91317896452c31a9d49c4768f1b4b46ac32e0907e00a73680166339ff62595dd2d2eed3a79fb9fa0c2e8250e89539f6d678aa2e5e51e26442f494209b2aa8cf70a71ff69d262fd4045c3516b6a99bf82261fecafbdfd9088d23e2707a1f409bcf5503a885e44f1e6082f2e0f9104cc3214e012d788839432301b0d1adfa2bd8d038be7a17bd63a8690fbadf3753ba4cf1cb49050a4903fd3f820d6347062daadf2a36c0e6131540f6649741abdd82c7874bfaeab02a3f601be6acb55af4ae9a38736c8e76ac79a14dd31a18ed058622fe0b1633507385a1df8457d4de15b6195d9d167181b012af8a43e4525f914e358311d57edbcbe69374febf9df903226260ea7b3530f428b7b03ae34c0d9c84130bedf958ad83ac2d6fb454241551afca45a8a99a1fd228d64b580244b8be2cd9781e56117eb97a4b97331b65b92d43d667f282f1c60b257c98ad3744e190f79350eddb5631f41c088220c51ab0d029fce5b805bf7efd0584e6aff08813f5428e599a80a8dd54c65a552f58a8f0b13fcc665687c8cd35b8df4cac1ac02c7fc868cf7cb76b7f2c21baceb61eedc796877af5a2a4b8563e9ae2b909fbf47ca1c4ed7677e454b112650951e975e808567954d2d90ecb714f59de889aa524335f34fb9c717a9b2d4befaf4af80f82c491f50ed25d510d0fb3c1a72727ee1baeca79cfeabf2c0b3f4b994e2bd168005864d569ca5e7826f5163250e937cb12a52ea27e5e3332b600d0b5971c685dbe5ecf97bf9d49e0369b722f9bab3271797960f1236c63d69fbcd5d490424925fa848032053d930fe90d81273050ddd8e454806bb5d12708fa21bfa245334450fa554fa46551a00566cc0ddc0736804aabb0f5104e8e33de3fb5269f863643314ff89deebaff73d56e4bcba4a2ebed2046e316e406754e411c106e3b19ed91f0adb59e89b6f718a9e82529efd9b4372e919f52c8b3ce9aa061685aefb87d573f380eaec922c440db32255e3aaf742dbbbe6bae4b114b09a6528f956ce691f8ba210d7ed229422fd8b7217b6e00c43955588596abab198cf56c3bb421e73df3160da9a47da6b9ef784f3a5d3a0f80b11337699ef9615f65a162edf34efde31520d1d857f05ba8bd1046778c2a599029118011d54aa18e054122c8fccfa6339d37d6997661bd8540efc690b827cdd659a8378798edfd205c8be6ae8e3567c40fc698475bc9df1207d2e8fa678748009bf94f1477d00fd2217e338a15e5937ff87405ce915c54d685a01b723424674a1652a9f0ceb6db50279aa1ef9f4f82065f141c1f75f1edf5dcc1f148e9d69c8d2fa121db05aa1613e08f3ae4b947ae0d25330ea402ce7d0df995762e17869f497599fb9e2af5bd0aba6405086ef9c70443942572d7cbe85821bcb7bc74f5aac04031bdeefe3681ad1baa4ef82d59663882246d2b05da3a73491b534dab7d97f610fd08ae601fc49db09aa569abe89c0779a48dc1befa336769db260e2193c75ad33c999dd88534103a0c22ad59d34675c62b1b0fecd70dca0fae3c7252f32ffe30267b1b1df3172577ffe4962d1b4309314f9d1113072f0d6969cb96bd510cef73ed2c5db9774da627243c6f1c6a34b210e3b0b16b2eedd5d3f2eede9de0ad89992a0170c61f24be2470721f57a4fdff55633a0703b159febbecf0482b808e2c2fc8ad45646c47521cd1d007abe187d89c8c68e0c886214735671377a3d98674e1757b496194c4387bd6e4f70d210f541d5d46daf60f4224e6126dffb3860510e5100d14bf1cca3335d7f8beebd62162f687d625e4a582128d977ca02da55a9ee7a8af14e2429a38357014fbcad6fc0ddd045e21daeb372a2c989e7c5723f30a45d2a398f0b46c6d195656a1d54e7b95dbb67e1e7e2e11a92a7124252816ae9227712b5fbad0e787598b3bcea7ac8bf9132d3da5407ca369d3c43dd8f4dd570d692ad6ae632ed147b0846519d38c3463f2999990d78bb8cdb31ef3f263dc20391486e0e376997a59a9540be6c17a2ed89c00444a7d57089f88b0baf1a7e19141b6151c8e388d21b56e01877c2840087aadd206154c078e02241f27ff3cadd090f088a6d7f1406387dad7cb11549ef47b23e3a15f43207870c5a79b32c395c04aee9518bf739401689d43878ce583b015bb083e28970a9c0132ee928b1341870e641c47c394608643433396947ab3bde73b8cee86e8898ee53d3319f6a86506ad5f665ed387a4b0dba707fcbe1cd63bf9b2c2f54db42fc8b82ca0603f985f737b458e7a8e3584206d586c344d8e2904424e3c3329bdc4fa6ea5a36e3461ca04dacb84b9e3e60d0dfc89a9b3213e0fc744cd69cddf4276c48b1c3d837549e63f17f6eb27738083b50fe02982179b4fe1e961add246bb892d9691a15eaf3463dd52e49b50f096be08a85d95036fd364f164856f1abfdbf476c71040ab12a6347ec620e283ef712233f64e9e057e3545e34ffd6d072be6a17e34ed752b743dd6bedb680f0957bc507ac06869a58d9b7782071dca0f90d5a4c38c5b0b25951beec7ccc6921d370c834f1678b639c2861fce7426b856d6724aaaede08e133701879ced09c41bbfcf9b3d65b98cf0b710e7618fd20562a0081bd0a4e4bc195efe27999865e6afbd8bdae2e80d8dab18c0a599cc79253f6a7dfcc44a5889a854298917fd006ea745637c53b3e03e00caab30db826f840c534657260c2114784bed1bacc58c0d61d1a088f580c50e88c31a924b1febc7db15eb8fa0ad5fddb4614ddbbb9e58f43e78c1dfd64dc3ca2079ae78622d66ebb143a90b1f7f887d888ea9704bb8ed8d34e2de893bb2736ec9e2663822a2ce0500b60cc9b67d724590256f37ed65a669cd765e3b27c6bc7286a258c1bb1e39f9a64c90860ae854cc2109633ec8fdd3fefa781598d01ae9edfb763283a022d6041411c3ec2f99f785e250a6dcd4055c3a2c588f62b9f4cca4629b60e9938133d78fbf9474044e9982853a11f0a40e50d893f71e05d823b0f7a6275c7b4b2b4666095bbd0d9a0c50aa6247ac0d8287e12a2fd00d720e15a45b30cea5f1c764e0aafa5e216b2b7bad743f4826ecadb016bb1e5cb6fcb997f5ce3e6107013d3534494e1c34ef2d9bb9d93ebb0d822554d8e398f21da2b65afd584856fb394a5d9f218413157db6f7614e9a45b8d80d7449b301d2771f4569e90e1dfb65495d3d7dc2f752ff57aad4850bf1947b3d5d6a5bf1103bf12681202d4f77d3db151ea0da9c0073ec2e387e07b663ecddbc81f51d76bbbd28e574a63e97e48f6b91c508c9c35384dad12ef54fd1602b720e77dbc5753efce1adf62a0851611b36c0e6018f0df5b659553fc6dde6fec9c472009a147fe17ac60543d43918b6faae1420679cbea3bf385bb1bc750c50c4853e0b510177189e9675ee828eb797c802e30eda43fb71d41cea11aa67adbd70f2a1669d2d7dc5b7b73346b30f815d27e1923f5aa388df810fa68cf4614a5f0b96cebde1b9e25f97fb00c2d24e14f8834dafef04fa688f40a3b74d7bbd22354a68e151a67c8780c03f99cf51b936d15d8ec03be91bf3dd68cca0958603347b89436c445db37ad074b02f2a3abdc423283384d63129623b61710fed7d859a747b1e81abc459c5540449267698f9e3476d5d002538cb9ec7de29c5a00f9c860cb0d0fa042f92824d8e0e8d0f6460d1d373b2fbaff0f6076bf2244cbf175c080ff5f1f8ba1aa3bbb6e799b4217185c95aee8803a86af0799fc393071c68fe0401822cec4c0f27267cea420ae8459c98df23257d08049b3ec48974bc4c56c0ac4c205d4f25695d48c571d249a4f741d2eeb70fd4dc2ce6aaf607e660d77c9184727f76a0da1e00f5fbf7818f42d940ea4ac97454455c0f6dcd5b435257e9d44c59aee12b1c9d615abd2bcd2cd88b31d36007201d5aa550ad82c0afb51a32a344529c75a5517af7e604acb83c1231944e41bc8747674fa00c1da8d1e5f297d8ce6fe55e686d4a212fb24df9f800b02cba9a8611bba7d9b4b08ba1e556aa74a44fd0b009b6cf2aec47508339178685d49f72da0628a9b0d396d9cb83d8c75ae1f0b241244bd0ac2a93473db4747367aca69e1839c4c5326f73677f20f1dda72fb5e796730e3d9f1fb0277efefb18e58095ce6779cc2ecbe8de31c0c42afc3dcc73ef5637b928a4423f2910f18cbae110816b3bc18637f35c949f52048cda54e3c0c5f691084670ca84ecfeac8ce8f10dea143876d7b779cd9752fe9455243ccc6e4d446a6a8f62b6969ab4051d01b6af3d158d0508c91c39bb66cdcbbfa90527378e6d3bfa6296b4396b0ea493d4feee35d6fcc57a10d988c46b6c08550a5a71c1d6a48e2e5e995d9c5c5f5ebdfe4cd29ce04fac347be09e2d5e8ee4099cec953034a9de7c10160e57d74d20ab2d9d8944bae1fd24365e18d56a406215309178beed3257e9f54366308d4216a63a2c749b91d63eb6d8e151e0a93bc0f00f4f16c7e5df9fce037e7e4b94593edecf2c8c73ef3875c1e6342ebf31318d604a710d9cfe8b68140a6c95999244d6308673f6109c8277df63d4aa93a42af9a08e96e6c5dcf45eb96e12d96ca7b970c9d82bad494e0e1e1c12bb34f6ebfb3ef782d9c353bf2b7ebee06d5765f27e4a71e84251e33c5ae3e5b507d265f871f621cdc0876f6cbddc1c3034f5d3e274819108e40b1356d489a322c530c0fb49ab3f135051a6dc1097d987cb047ed4e17c5286a37190fec0b3fa431c7cc4a5aa8cd37d4111c8987c6b77796ac60386929ccf96fb5acf33c94195c271b1dea13f81902c719a340815c3e5d0b7356dd3b1e65ddc8d537365c46e060232f0d6e93f64d16a30b531808d3ff2a21f121d9f6b3c164306a6cb39e2f52a00cc01d82f7d1f85db9efcf22fd123c929e25d4c3911c3fddbbbdc4b4d2b78e30e5b2a6521377e5f4012c5f907e032569c20ba861cc624982393f7a03989b4d93b524ef23f8bd5a071dbbe734fd977f7f88891c3becb8f68c3759b8fa18112bd83dea8b3cdbf819dee5186eeab6833a30e03e22e580db32c176297f410d76889c172425659fbf22d7b8bfedb7f668e2c628c2718b3bbe471a45ae19205ed8fe81a19c4818046bf2968a46dd8da34cbe51381cf7462e9765592759b058d1111bcd35a6fcf7951a24a92209a4fa412a06021effa1781d599a6a600303bbdd5a1fce0025a66153ee01c705d8c412b426b07140511d2494e8d16427521a7d9b14e98801affb21350774cce0f6bfdb161ab423e7c09a6b516e7d4454a73462b0470c35df650d8a9e2393566309e45f9c857c6a1bca1b6e81a2b2be78facbcbdd3947c51ed3d1a1e382d8efc0a8360b09979f551c14e97e0e5ac12b85e8fa683e2846d94bdc6a72666e1b300fdfc5ecf102714c9fd57df76fdf47139f8dbf8ae59863643171164c16baa5953c17821a7ce5feac673c05a56b287453ce3a0bf5048f0999b7711604d6cdeaf3cdfd661fa21fc5bf18de929671c801f00415eaecd35abda3a04665e9dd0ef5ef2c6ddf02b4a12472984485adb027fd12ae6c60ffd203b1a4b7c7fee97536657da4bb605aeb65174707724ebc76521f8860a71e2edba10de033e8980a636f2de281609da252d54f4896a856ef9cc3139a98ca77f0523a8deff4b415f932b649495481809f6ef0681843dabf1239aedcdd8e32631ff09f2e69231c3a7cd9a799afc73e78a0c8f9fd45c19bad4dc0c863710eaaf026a58f3ccd7ecc6bc017740b086ddcfa7d573fdb6565ce38b547682a0d72d28a8ea9dd223589a3de2fe8c8069eeea78762f729160c368118e8eabc54855fd3d3e540f72f6b3d092a64054b3f09e15007c1773c4b8e630d386d26385594a0735ab3099407e804f242df18ccd25c54df5299c274720c8b0355ff5b81acea055c627e393a653619f78971ddfbb48658832571ede6347f7044626c33ca08f73ff68d63363b225c2f013aa82f4a4a97b5c977c3ab685381ef5a8486e7380f8860dbbde3c717d224428e6a8c25bbdbee087bf53285053238296d43c509cf2f0a3486728e30b30778ccda170546c49624c29a52dd7da687dc595d1614eab92396375a1137755f24348b4ff8026949e0fb48663635b97b0fd677b3b4650c46004ae0c7a00d6d4fe74471442c1edbfbe98ccb7ed82103fdfd41e5d85177c3e226cfacbab895cb813139025376e44e39928b481157a257832308faaae0b200d57d825062870a7060eb64698aff8aedaacf69e1568bbf4bda6235960f1daff4746ac1cdb2221e259eddb31871489f7fc33e4112c0f61455b661ebbebc0746694a1a8df6efa60f7ba8fd4ef10678a8fd2b725efa953c53a357014cf82c0780d6150085fef3566114cc1ae2a858885bc16636eae8746bbe0a61389e82df85bf2fb4d7d2992aa2527eebd29568a4b8157ebcfe238bc7f7e353b15da246baad208e27b6b70c73bdc6c7fd76f16297c80b0d00b692126dd64eab268e935d40f5e1ba080f677e343616182f02ad4c2def3171220c6d8887c6d23cb63b0667e9d6ff325595fdf6a2ef86dd9457daa1daef40f1f0c52c46213befe8548e4164aaa939d1ea18de00b2f614c81850794fde71e19b8fa2064829cbf297a6962be4788c86b7176438108ceb3e835462c5348ad094aa5fdc5515e22be3e344355569c572fdae9ea3d292de16fd70bd51cf35f5a0d11a8021d04992f89182266db2b624abf41bd2eddd6e90bfee50e2e3d16308b51d24a1f00a769ce7e6b6f15d12a41fed0d09cb9887b136d932a7eca99fe17c5975a4269b3cdfae54e9407895bf64a15b3fc4ecda0525ad80461b13cebeb43db2866dd6000c03eda35581c6159b5468c42d661995f62594b9961fcf18c226624402f53f93d2d56e7b3d8bf7bb0c190b2f55426a3c46fd06012f28d89873ded0cec6577f9bba690fd70fcc656293c4e851cad6479b613c73584764ec3718b5624068a0a42bba2b058834f3d8dcb7b3a94af33d0854b8b67a94038810095d65be96a916d38a68adab6be976dc81010a64e504a9679b55c37a166a4e72a23babbcdecaaf932a4b017df21b357c7bbf7370df5393b6034b7b3f9c12c28365b936c538abe5a95cf4afaa2c503feaa8cde83ea84fcb6cb58f1f491a61ab78a2511e904b3cafb7ec396b56bfe5f4b943cd06f3610fed6084b4035b23e1cfa19717e5ca818d7435cfaff474fa0510482e900945dd997f871fa68d08441365a1d4104fb0fedd1521a05ea6fba09ae68deedcc0988fc34adb2b82c6d8ecbd2d4c13eac9fdf17cc0aab11eb11147c2ec94d5e5e04be270aded6e2f234b19a45fac74d51f5d6ef4028010b58faff5e5e27f2c5e74bef97d3138cd3f4e7e6c88594cb19a5560cd787481335bcce0703084020a53f36b55720d38685ab774552b438fb71084a73826cd5665623e789151b6377217d0fe60521b43a2eb1e5a811ed1733506bcd2746edf1c50c76503dc12b2f0c8d313bd6526b3d6fb77810d72ca05990cec76b9690f87d0eb4a9487cfaab795df05d7e682af7e98f716948ba5ac51f51b9f58ae6d288c2cc17eaa7d5f6e897352f54411b5ac219249c404d3ccc0501e8849cc32aee598cd79901c35f5a9368ae26a86b4b776752e33d61ea17c10e55435773a65cd7ca306c9c4aa9039a70e506d58b11792fb59b785c61a96d2c6cbe2af7d1bd93c5c6dc69f8175337e3e109a04d156bbb11f75513742ec721ea100f067bbdd5f9727e4f24e8d546b4d2dd2ee54178559386f7551547ab3e08b23cc4c7a1817c9abf73bf5fdeb8bb4b6c7f507f532c3da5faae135fdb6873bf87c4924b2ae93f301bddeaf485438a014527c2664e52701e3b51575e6f30c6b623ecc59e42e664019c49c81f165976377acec8177b275877f87afe982ac4c6d87e90d0206569eec0899f1033850e56abcb0c72b8158948ec05715d683848692b2893eb30391d2a7e6460a205c937b1c8c7a817259958ff4569d26519dec8f979f23629a903501a335be98db07d559fa40850e2e80e558d6cced83d5bb9bb2f7231ceffb57c4cf9c515025dc71823d97e81a1c1efb5445341dd36606c8e38286bbad28c97eaa3a151d437f21fc1194309c9a9a962fb0c9a339b9cad138147d00e630b2d3e14565894079a3e07b798bcadae96ae433cd183666f7d4b943db51222f7da4df448a5457887db7dd3129d947910409d49221edcbc23d0676177431478ccc4bd9c705698bb7ee0a030231e40c479c9a95a4f9f6ad4438235b2f250a57a0aefbde3ddc1ac54271fd9769c4fb846bcdf4041de3b1575f9c478b73b435fd3b28bf32a4c228b88bb877468c7b75265316d1f7c2298cf3ae6ff497f92f1bf662e671245a794d14b400b3c6d5c6ba2e65cf545d461dc741d616f2a99cd9561e7d1f6dc55f0f19395c5f0ee4f092ed79b2e4508aeafbcc7de983a43114c8eb0139ca10403c4accef4ce9e860e38672d015c2ba1bf40b0d810536271370c2233847504050d5e561dab16bc165958196ce69aef401c6f5de108f327ecff6826022a9a672f12843a0e592857dcbc70bf67c8c472cfde70d364ac741fcdc073c0342ff63e72339e24d9dd42b218221c085d3cb1487e7cab9c26237b33a6389a3fe630b2511ca3ea67d29f90aba5c614e92ce90fda0d918fd3ec560990c1ad7914da969e002dfe0593366090a800092d76e986a5ecaad86270367d0e64a80dddcb6f6481a50380c743989532f47b99d3c2ff63660304b6bdfd93039668cc467209ea1784d9e82a6adea65446e4a802b749c09174bbb51505f7f93a7c24ec25d78afb89757b49445ee70598fee87b9669cc1cc21f9718dc6c5250982c7b8bc28919353f7c1230f93f871fe6e9dfc815d98cd3880ec5e4864b5160cadb593599f0fe578e55a29927d259a92d55e46700ac729c7c3dc5cc35429a861dc4edef9dd911142cad057b69c6aa33d8cc41a7ee6fba54a285d03c41ea63e29a1f741aa0ae95949b11ff53d34ed5f1512bad86bc790914ddd56c2ffe8f71ff42d9ffe64408ab0bedc326422873a242d18ef8944d0648f924d70a962b5df1639ec0637ce9392582b436865f4496e36be0407a2f24a6ceb09d2cd4bb2b5f8e46dd12b1528149b7753fe1494c11b13d9f3cc2a5cc8294d526422a48c6d6dea29f1fb3c6773a6f5ac263e20b1ccb53ba700585d7cc1b1338b61c7c0518dbd9665bb9674cf35f0334abeb4653b0b1ca517678dd457645500678b7aa0e1435e76a50571e13d307ea07aba31e589ceec58d93c6db555a696939c21a05a6c5b15f6b08f6fa3798f5b764b921671febb8db35b7a98a72707d9b36e1cfa27dae3014dac12b25a2ce91edd16fbe04817cba5d158ddd777b810006b31bddcb094412505b6c1494abb5829ab4feb36ee8e12c2aba99dc39b043614782e8f2b0c6f0c84c17775d71ff9a641913ebc01aa595800a8a0237da0d850846f7ea79d9e711ca4da606e0e277eedb11e93a602fe744f646580f8954bf4fbddab4066d73f4ee843dbffd86d38f953fd5adaf36848f4d9b469dcf4d35f518e8bc28a69d31999a67d84a7ad8c3d57405ee0953d3305b507bd6da048dc5a9898ffe4a068b0029ac9b22506c8c9bf644ad43b10d9eae4be1c1c76649fdf5c41e4067d9c80b51244a5116d626fc3271cd61336794832a0c654e32a06ced793a0825aaf1668489cacf7589e7c66075372e1abf545415bd5e08307fd223b013cdd6aa08f1d4ceba2f0f468be19cb3fbfbe0495672670bff9249aff475299b55e336bbfcd58a6ab26f4c30dd8c79ffeaa94944b47d5b67083d4f9bf5886c0aacbd83b7a5d4104b713051693d5469301da870a5e90f7d4c77524ddda1a4ec4012f5a635ffbef83b58a261df4eafd6a7c68e12fedd33a9635df548c9ef602efa7b3c4e69250797abf4e7a3600019f64df06abaaa5e2edaea5517e631cb51469e293ce61b40279d5e94519a4f70774fda36c474a14b5480302abb7c459d94c1e657da5c9ed9591fa3fe2bd7c7a8765cd20160ef877b8387e359600eb6054e9a09ec0d66b3f7849e2b00c5f30c8fc4c11d583e9827801c51ec7ed46dac4fe216a2fac08ec06607b9c490e5974f8b81425e03ef2cef94ed3d2e00ec37cf41fee67096d1de78f5372440c23c8bf475ec5f8d975ca044311b8c6a9ba6e1f589e95aebc9908a79a60901f5c18d97f5aa3b4032d73575789fc87668f071a739b66785bcded31751564c32db4fd091ce556edec2404256a80c067675ce93de90f4cc225d34ae80983c4ebc7b62f1e49998b28675306112ed69786d961b7426782685148ca6ef86261d6c09893fec7df097c57600b35c75965d1df7083888270459b1f876529f9ff0956b15e4f89bfcece77544b84343d4e7dadb492b732cf73507db6b97745612b8986bff7ab80845e0153aec48a25ccf7e627cad12cc3fa98c78fc58a6903a704ad51889236ca76f6e801fe4bd5795aaa71f6041a287807f210638f74b6078750b701fd590523f2c3e624b6001ff437180c0ed0e8066adaf691964c348722d28786a5a2cefc4ee5c4479457750fe98a3f3b06ac0636fd00e787e2ec4f66721089a41d636fe8fef2247fd2449c2836a9a64bc18fdc32060cf523aea9b55cf4ec4f79ea5e9e5f7033a25a984671e26a91c79bf543e98674adc118b677881aaaa7c48202504452f315b7fd8bc3942787e7a408a22be62caac62d97142dc09c96a1cb59560b9dfd280fa6e39e3b84ef15bd7e7830db44f8a881b191acb00f9a777c6d2e0c77e90575d70f224b4811f5392fda0a2558c7b4adf8515f9bbc29f3787c9680a35850d5725f2073564a2a3c3e4864dfd9da918f7b26b1ce51bd9e7031259974487692240be50a3e9d6151fe4fedaf56a0bfc067328ba33ef35e26441aa8a131ccb27d3bbb31142a55a8d7666cef9b9bbe67908868f63cb349b5525ddc7ff2547e98a1df9b3f2c588364e2f8c3608e05fb1ad2fe076f7bd77b31a763f867c3f15f3e2f8f25d775afcc09c4c6bc62e344218b8631b30d3c3f2c83403e055e1d088dbcfe7a645115e0066421fb4f8a7ea5da91c52e0e248b87318748e32e56e3cd5b13212e9b152160385314d1e45363bbee4306f49559f0db037672fd02365638d6303134012608504fbbaeb4f005b9c4760ae96822d6ccc85dfd077ef01df2b7803f84c56b38fb0dd2194064a70286d39b2f8f20c0ee5102a42699562de866b3b6ee9902565fc449e93dd0ce4773eb1d27a6702a6cc1d9e051b693daa0e77db742036d87e5f86eb8e4e2795dce291ab035fd070ad356fafdb6f935db5ab81e59c10057c8a8a86b6daa85c868390f4e0c6937ded134b991b7db50450eacf0a734bdbfa4e77a1ced5c31d32a3f8f4c5b828c00639f832c31769d433a4b73e45ed8cafb41d371fdca0d11ffa1d1d9467d045fb5df777704a29b4740eb42807fa426b9868d8b4c5507b52082fe78747f940f91acaaf42fb6f29e14fb9ec148eae0e7022922d330647a26b1669e0457021c764e91e99ffdff39a2aac5e171050c095a15444b40a140067a293199f8a121b1247e8338b7ba2a3d1c9664e1a2bebea60fe268e4d4f9db0f6e9d0f30ea3a49c5643b4e1fd16590b92fe3b7cd56b13cbf3d1b022a608bee519881ee676ddea2f1eb9d47ae7de75969cd10deff11a3a3c2214c5ae2388520441bf6b06bd75b2886e7851ac38fc749adca6d76ab87cea65c1fadc51fd0e2090e1f9246aa885532bd25d2005e1b08010166b079ef901ca73b889bd7ef24187b3080b5e33fbf360d8b2f111b9a37034569ba3c398cb4e4d49b775baf61db3d4a7f71cdc8a283d28b04f853fb8f673267f39ecce1fa6a69ef13d0f1193cb9951ef0de7d97ef8366cb7ff497ef9800a5989d3e6b8f54f357e200552dab428c48b44d1ff2c655d7ac95175b83c1c64e0810c27ad3a32f2a354bdd9072ab2871aee48e2516db25a37ab16216e0ae8f817f68e9806974ca609e79e27208410fd4af5a066eacc2f215b3cc0aa10a509fc7f1230f70f91d50ad98f06037b1c24b15b361c23f1680a6e4a93a552e2e9869749b9ec969a48af695bac9dd089393a6f051d240c8f43758bd6060d517842e42d793786b2d2db69602c29bad6cfd526a07074427c9c65b2cabb0603a8caa50028bb252f66cf40f0e6225d3c05c6a1735cf1bb18bdbd2967da3bb18550236b50a439659f99dd334dc48ac81443d985b3537421b170b7302f08ca213af0e30b7efa7a598067facf7758c757452d539ba6e5d3d87fbc678f075523d89e9f1748348012cd4ade151e5ef27180e30a2632745de8d5137f5f4c197195c1753f5495676d2f254e1075936aaf95b4de60a90ebaccd7092160eed34b79fd795a8eaa8855de498743d426e9417cdb516041e23888dfddda40d33526ac8df7ea9c3ee4b31a1edb02197568d3dfab0926b38fc72d7fd1012efd320a431be295f293c16e9ce10ce729ea8caba64ac6c2d79c9b1696f66f90087aeec069f396fe49fce6e3ec2b4afff2cf185d4dc26223dcc7f2baa21197500cb0df16540bf6b16bf369f5565fb834afe77e007f567ee694b59e7aace5465552c9df714c86cafa19d8d3fb23172942e6e1e37101d092de01df39e55353bdb65e94b963bc4a5e6ab14faf0939eef7bd3cf99ec6be0801531f39e687312432c53fd7924a03f37b936495104abe87d19d6344c54224ac345efc348d4b0ba1c0abceb5e9b8444bf51a49c9c7d1beda804ff0e7c156d07099ba847f638e072d7327930fea634c540475299767ee3f59d25d5962e9e87b9a79a5ba55a67b96a6b9c7878d62ebbf19400e3240f53e9a52c80b0e1d99be853e7b720bf2fa3bffeb9d05b328b52638bff6a1a4af84e7c966a724c4009950244942c3c24fbcab23f23be494f14b0e5fb04817fb940a8a1c3d60cb1a985a2bc5ae04b22dfdd69c3d971078d2f2a874e5670e73c97efd5878a04da3026237ac0803bddd6c5099165aee4fe4194822ac8ca5cbb1a623e7c59b1e8f0da3a5733cfe5ed9772009acffb88e5a1587c655a3c16a04a193caeca3aedd5b746ef16909bd65dbe42f50ad1d3efac9eae35b173dfc46afc1a5a310ed45c04fbd214befbccd90ac2b3eaae86fef8a511e0849dc971cd6691089d6eb4fe2ae02ab21edd28df9605807da9b498908c6b8a817efe63989df8eb58856f2d85100b72cb48e01d71f01d3aa35e9bf78c0e843a78e2ede0a2fdba390f18c7c6d5000b63702647bbd95bd1bd09f2e1131d9e77c0aa91856099177a57b88b8af29332819175cc8417272ce2dabafd8f62f669ca1455254058a2ce512c497500fe21b9ffc56dfe3ca34c2826a7ea8b2d139a08add6f8e612905bb542aa7ce62cdbdde5f1e1c251db81484a99bc264bb2913794aadee8d1b1281801bf54803fe562b83566fa762ec35069dfdc7b91765278c98aa53345d5be29adbf2804a513a56a541fd709cb9ba14e01421eaf05c9c4c2d68768722f7b129783777bbfed8fbdaf4b2fa13ed94e6c50bd927e38f186609e80f52e063cb8531451056af36674e2c0a908452c337c85b3640c1dfc009b02924156b12bb78a6fa40f9e4b8178b1efda4a268f646d22e7672086f395e6bdbd2dd872a42101bb3c6a9979456a14af6f406ea3074a26befdf82c26d0cbb23b33df0ad1101587b824b5e3e3315aeab948e9a299ee5bc1242cb3c20ba7a66b3f6aeec91ed38265c03824208ff09f9be534fb61054c746897a1fd96a8f20ad8c7be9cb9cca12aff2223cd4fc1aa14914ce8ef6d536d9df5a00f46274edd55543ff0bb337c86476eb1b918944fddba590c5c2f14d71118070892c8489e2615673493c1b157177a7f0cb70e8bdc09f24e11841a81d88c1945747e8eee659fe07cf773977ce119bdf202cc63f08654c2d3beadd6fb6cfc6bd9b081af4f8279c9602d120cd59d10c10908ad741032c721a006a4e5b4905e98641f1f63558beaed50a616c0b2a844bab7b24adec5257aacb57860f2ad0e5ebb793a50c65876eb1fbd378748d85f86e4db92cb10c40eb111e5d7bada1da72492a9df97925804705cdb7eda32c1b42f04a4d395253f9b54a68573cb6d8f10105cdd12c210271a954d11a213d03ebab29b3b4dd35cf0120dc302721d9a5ea6d1a9cf8691678da029d2870fcd02454d18c3e538a8d38774f17458908b02481fa192265a75a9dcf31ad8986191067c77f6baca78cdb2e19daffa3bcd60067ad7182d56acf90715f32d96cdcdd44e599feec61bccb5de9888d8a53317ef24742c47a8abc1e5234aafcb1f8dbe7dd75d1beaabb08c6af57af63753ee66b951e780175a95267859089a69933eec692dbb4f1b2c21ce9182c7a2a73aa196a7385daea1f59103bba9de7439261f00d5c6a14c59c2b5557ca34e3474347355914b61aead1b89aa0f0a2ed45a87092e70c779b5345572ce385c629f568759b26b7aa5d7b228102b689d674af018a230219ad0bb94c71b3df09d8ad8087272fba0e082050d0bc487b018dd3b311ef00eabf921655af03c5cee7dba8270990a73d448576f559def24fdcabe2c4969ae1e0ab3e28af8880d8f0f2c1f431120f7f35302a3b03871b43c7eefc9377e558bf70e7d16587f1c55a68984a9deb9673f9a9ae4a80d5a9a5257db119a3d1017ca9f6680209cbc8d4e3d8fb227934c9abee7f037f07b8c29375c7fab8a248fb941735353fa2fccd0fb8efb7a68a60d80821e1ab22c5265a86e8162b7f71b414e2a93d8c514618336feb17dadf4fb19c3ac25c14d9df844cb19002c3d575a979d324d3bf5c6a0d4ad1897faa08c81393869a3b33bb8e173571fde6915e125480f7aefa37862d81e26d2f4a69f890e8c803f3b32a25ab3ca71756716674967c0508a50a4c28060eb44bc4058530ca898bd6582f792fd6b28b1e2b2b0df1edc93e94d0f7e37f8a7600a0cb34442dcf4e7bc9d81857f398f2feb139d5e637bc9542285330d84e07abb998d433eac5a7185119e811cd209a4a66f9377812930db27aee2d1f7edc200582df682ec1e95d213cfd9d40446941cb98abfc24377f729b2fb67c9ca3e70c230aadc5ce57acab9abec468132d7edbc4b06e8473c5b7fba15aa19f95eb72360560bf162c62992650432bbfff6d6c2f51532980aac90c0995aee601d41311479fb76701f87323493c8043aa2cb3d543f523999f21733fc577848c484a383541dc2e587ec216deae0de58954d26f13ca61cfaf05d36fa31714746e4775d5a82089f1ead8e1e9a3a8d33a668bf98e13e4c66c5cc987f985b9ae8d89bb7c62687bf5583c001ba6a96d524f4341994caeecadb972d52c7a1f153fd9ec28adc6cdfc739e8fadaa38a53fd1d665324420d284a9dba560e66bd3cb3de4414a20155d789c6c8a4220f96c7a614eb8701bd0eabd2fdfce43a4c89a3d48b9af5e622509575ee2db754b5da820934895c388cf45221b3231b129e34054132ee1a2e2d5b8cffafea1d04c01f5120c7fcde3be854aebee2dfd2e4b94998146739178d97d050f845e6432fc6c507ba76e9378aa6ec78b0af346d9e3397ddbf6c6eac0f58109286f1bf226a124352d46edf6700baf8bf245c407a3c5bed9301d59158619859423f76a4ebaa0019d05f0182d4811cb09a17a2a5138ddf7a6381fe67ed68ee3b5ff2ca35da7aea6cf7f79a54de5794787e312fe187c6729ab05644dc5def4472f517d312f232882bdc66b0e0a1a49c5497203ce4c342e2a6331b45959e0d25f87a68a45940cbccc6ea8ff5f11ef10960748201ea68cb668ab7f2094bc07593eefc5eaaf7db622958d8233dd0bef16e8a60c86316fe20209642c89069ff45255f1aa55e30fed418c66143001821dbe832c42494dbe5b4b4f5108d507c799eeff5cba416030fedd439375369b399d9774dbe6f2aba6cac5a7a4ef29c764c79310101376721fed84fc9b64b61076777b45b7021abc9e9768813b555aef2e7dc0dd693b5abdc44c204a0daabb77c74e4a90483164877aa3c5c77e2189fcd91e1a82317dc39eac5e8bf7b0be6b44119e784fd0c181ad648ec0cb77410d02621ab3b59dab6745161d687c3bfcc9c98597afb17379844ac02ca485260c2bb59d581dbd8cd4025104c2bb485eb99178a327923ff91f2e98f9000e0e6fcf66d4f011405d69a14580b8d971b02e32e7e1036d877155e5db88fc86b6368aada5a8f89a6f00194a2c0eb93a4dbafa0d3e85ef61a891de98e55c0690fa1653c0baa0774ed30bb67bd42e7d9d41ac1dae3d7d7121bbfb5a602bce2265f9e5e67062934aaf10b7726fca8c0fc29a9da6e7cd4c19587f03abd2009d3acf5f8eec47b7cb55a024cf57d3cbc13677706f14212c4e6a3a4400199ece710e5a5c93d283e9b2e1c0d3eb5cd26e41e5a77e00e99b6f86be5f849e3126dc88a39345ce39904fb2a5235f38483d9fd5b14b8647db24df002117f46282cd4b6e3d53aa022f68a86f18c6802921175050ff1d37293773620dc49d305aecc7ddc49f04cc1b18c7f2fd71b3355ac194713c85d4af755efca457dd2836702ffb6c40d719cc81439e00802de5c07ae221e03558702e2c0940b10c7837fbac3884c9da80629171e8ff2d39889c899eb27b77a114315a8649bd1727c1274a24c69e9f5a4acce8676dce68ba892f3806b2c91c114811b6113889a1f4deae450b84c8c2843a56982977938b2edca8fbdfaf4cbd7f0bcc0cbeb4dddf0d2a8962090fb356a9032344b7f7b502eac90c78ac33ad65f8d2dfe222db3e3a6a6f4c067f4f11faa4fdceca0f58358ddeba4eb7d439bcfdf46afe4f908540c5e7a9636147cfce1ddca11896b82735dd9c41f3fd827abf77ca7f34497781deb70a8a0845482257d6f7fc186d311bc2766c1bdfabfc4c61c83feec5edea5114f8149fdc14e0ba0e3d191cb00e9d19bfd7bf87e4830a09962504fa48a9cd232e440d636259e4f8d868d756c5f7b1e32dd06787325d13f5be789f03cbea2cd1a7d049336bdfbc68f9ff90c34c9b90fadf489151f018248065eec2d7e1e9a72d86771575b8312698edb3a59baa856759b4d70fd4c935ea99caee40a4e2bac6cc0761384046f666e7bd60420036b981278fe1a843dbd18e52efe96da6ade7b07c1637b59d7aa036c43dc6ede95b34c902fb7ec10cc47e853d8c5d4ffcdf84963221e2e39c2b2b97cfb8e62d123d676aa70d54b0ed75ec56f6625e1c024cd3a366acc782264e7f40db0c5cb83aff8d948a586b6eb5920b652fa9e7937780443f7933936225c00a214441b4dec0dfe5227ac1edcdcc3f2490bb096454950a1d17a4f33012db79f297501f7dbf2827fc545b81b5c6e2e6b50d7e522d72cee65354be8c63f1e09be2537a495c2180b155c9d358265e4eaaf628af96a9571b87371c78ef361deaee86773936585bfb9481d0a7939c1fddd06cb2a23600d1a889bd559aa749ad3e3d8c5b73802d7aee0ed244e76da81ac882aaa80ffdf79270767bf95aba588e577d77746176bca55d424701e0ab38d860b7382aa98a3d78960039f3542a253bff144d7cf1be60cbccd75071a17c4fcd4f9f3b8effa0d5da3372dcd002e30d705c86815e08160b42a20d2024978989a4426e56bffbf5d7c313611b2df6c81b7354c8796db5633c35d2d60f585b5fb8d6c7bfb2f072bbd5a4973f89206398f2201e5beedeb43dd70088dcd8b5a3f8188e03ae8c9cb4611b1e2a7bb04305e0ca72ee2be28d7a7a96094466a5cbcd0450835abff348bdc0a7e7aaa19b6f19ee078ab683889370d56c7fe44f6d3c26c45a18cd2ca369909f9dd1aea8ad002ec37afa5c37e8e51af937a17556b20658a96938a41d0d944e2aca205c9860f0d3f13ac6fc5a74d76e550eadb867a472f293ad5b099ba6469593d7e5311ec4024bdb6f129162e470e5f8ccc0cf72a3fa103f715c5d839948372dbf54f5996390efdd00759921de6ddab8fd51b03d973256a664d4257513ce2ad2f4ba5f8ef186611cf5773d109756e51c71801591450fbcb454c775afbbb6ea95590c0be8d3ce2949988227db4bbbab1ff1d284f99d7f5301a0dd89d8cf14fb8c6791d8b944615dd6d97b0efcd750eaca9d193ea5a5e26f024170aa204069756e164576438fbeacd5d047e181737d9fdad209e5b49f72193a205c683e4db0fe9c96f27a8a6c9b5762f693a6c821504d16aba41a725b71482be4c5fd4912231bd5be0dbd26ff72c3d30052d42405b07bffdffc963edf2b043c225ed5cb495f3e9decdab490a83fca6d8303f8a7a24666bfa2ecc56264539894fbe7723d36ca031c5115664469ee110cd19a49b7c40facc07c3b0467bd384f30c891f5366e1e32742561842bb8173cfaf3a2ef8dff853be8366bda69b6d634c768bc419f51851bc0fb99269330ec1bb9e7d616da6a01e79d62098637ad51bf9ce0149d7fe431b298ef23a27348c6bc6152ba498bd70e67784e26fcc8db0499dd1dac32f14bc9122c866a2981612c73783c120f8f609a27327ec2f2c85921ea393778d8a474b8d576b05dfb2337340256d2644be08becb903870f1c11f9f5df5a61c154b973ebfa915fc1db779ca43e1fa3ba1d60f58ce9d3b23118237dfcc1e8af6d550e22cf03f10ab2e4ed3492f457a02f96ee7673b9dab6723845e198a68b7a23886474181772e6ec81e43398fc46552a9ec3f5f8c96490eb0c5cc4c76e0ccb166db46b032e7220b8cfcc32591ae1845dfe2b363630fd387847a5347f6addf34211b5e71d9a8e2cb04e58770100603f5c5c97983f23261db22304f579fc23afcaea3dd650bd73ec5768ccce580fd005228ea9aafbdf8fbf78bf06452925f2b95ec9ab6045a1b97657ca545898a7f444b6a49ec1c7b55816d2a6ef3f630d6c157c3de9141ae6617f34392c6e7b21cfb236f80506351a6987a08fde13452914e508289eeae7d4296ff0b6a43202d36ec91049b1b7d5b9e842c25c951d96077aada0cf6e9c7499208eb6e22beacacc9294c6d5a86b0f0c4beaaaf6084dea46e9d8a67e2fb3933115512db462daef8039fe01f2ce02db3b0a06f441a315c49bf24712d6ce5e00dc83f7b358e8338a8be33c42bf1e08b2f6cde7a5267c8a15adc07ed01cd3dec019e3e5e299d5def4206a035a3bd794f530da8bff46752f734449e98a6135cf223934f88205f98c5277e3e4d5dfe1f674a3faea5b58db214cc8afd8f5b1f1ddbfb29a380ec4abb6dd73c945fed9d2d4dae4830f81639a7b485101dd7f443c24dbe3e5cea68a1b37f1a7ffe65e122ef472d3c44bf2200efed16a050fb36e611b31af7d8677f774d59d4b5c18e6af373cc13560772dcce5fff13c7dd56b551d3c408e4a45ccb871da5860cd6259228a493a77d9adf7cfaa4c7792de78ebd22eac9cddb655eb98f2ba32058c1eb06c8c4d9edfa0160beb5017f7683133a1b47c2ec9553df1b6325651ba607f7cd1cdfb7fd575248e48b158db5d15cf764cba1a28a9cd404e99f516f5837f6fd5c5a094511ebd90397526968ba725338bb4f6414d338bf63322dad325c6dfd1e40dcbefab37fee5573ed22c47f8280aadcc9e30d09cbd387ca0a7af904042e55d0f32b4780b17029c35ae5eaa4f8fac1fdb404b4f591abf4b11597e304493d3045c9bc95132247065d6752d1c255d20187233b52501e1e8feb7cc86fe6a80b89a649fcf6a93ef0ff0102481a6e63952628aed9efc9a12f6563a69b21c6eac7f552df6723afdbcdf50d6f2eb1e6b1a07279c7503f5342afb50f2f1bfa85d6cf49a4f3b1c48895e818246d9c900b9130841d72d6d4e9d22365a9ddbe64881ab77e54407055cbb73ff30eb49a65ba299a873a52cfba76d19e31b7061d1ff1e7a1e8c09ea60aeeec8b3a675e1f7a2208e2d18f2bd80eb288cbc2cfa059dc030426fb65082bf4cc498b47fb7c8e0101442e51410e9ef1ad8b4d1e17f81f112a2b4ecacff1a8a7f13f17e035e9e165eab45fc807b74aed00c09eb225f9a048479cd7da2fb17ae13a0db33b62eae04c2459dcc6ad6bf9d27f01ba2712e8b9f8e3c07f5dc4e249a6cb7b1f8a7f44019f1d79ff00cb851adc6802f2250c50143e80d77b0a785d63457a462f47ed68ad6b64fbcd24799d64f357162cf25352226ee7002e09f09aff5e9909242776b30b991c3cb2faa83cac1b0a46abb902c4a4973b784d450a343fe91af53b4d51e88e30371fc47c936be0e66b8a9d0b523cafc2fe51c8d6a7e2bd9e891b4e8f544b6f66e6e6cd037628a0cc6aa31b1dd8a696b550b89572a2d84802d5a9019c6612a571b95c5411e9dcb627d34015d3389055f34c87678fa3d96a196a93293815af49cb55d934f3ddf1b21742158e566e151e281ac6ab7aaec2462fb41abccf298c923cd13eae4ae6b2123d3701ba29838d89c2bcc890d9489bbc62eca2edee70fcc73201138f625b5d214b14338591b626da577b2f021a0bb5e4f1db19d208d88d07facb0be359467700f47766fd93d89b165f0e9c266182b81b168951ae08c572f86d63c24da1fb2b2b86eb446e2785423d6b07e3e3d51eb42a0ac85f26978d5967bac88eabf2a314cd68107b80c7e4dbbdc53f0cbe9b9f92dff944a4c54b7d8b12ff9539495167dd9018f1c289cf4f0c7207dfd195c7f438fab966b77014a3f0c0535100e937b488ea4beff74781effa75b34d1c300ef9de8a8ef47d6f00c22021822804a62f3677c8013da368e0b552da1b0c817586002d46af18047a888e2a781a0d6cae18fb96f5ce21aad2c67e9fd8643979eaf471c027d2c76f1a583ac1fd8e25c123fc2c0d4f545d46b365cfa53deddef445f5dc5839534f74b2dc518ab2c2b70183f31198cfe5177b82265ddd72734ca97ffab06362bf666a7e4f2bab6ac8dc65022cea9535ab12345af1553a794a4a0edf15f34b8354ead97dae5a9ec3918a333dd48d81ae7255ecaa914275c8312d45a6db73399fada08bf3279b28e1651f9a6ceac0cfefb65e6ee9c26d7b9be5577730af6f34ebfefbdceac015309bbee7e751ae572005f1d42f6992148911ddbbc92d5542d2d3cae6781540f4b5eba5928b30a589d5c29a6337d40df8a2595c5d420ab37c2af0d2150852c74a1adb4cdfed9d0b6c292a60d1ea66407a80898d03098f3e460304d70b94fdc42c90ed2d7f5101c30fc53c8593a5ba1d515b948dc0a0b7f5b180a3fa8d639b317ed6679fe1ef463d483d8b292cfbcd61c94c3ddc90338fb815ed16979de4ced75de85778af456f8a188f28baa570a5843fadfc51110ad28be69e3ab2368398ca95326e6abd4fa1d4a5e7fe87488dc1a49a01ff9ad93e91dc1a93b1803066e6886111bc7b43e2b72721414be0aaaba595e59585aa2e484fdaae32d3c6450def8a72df330403ef61146eeda7c16b1de47fec484f8753e4a1d7b22046804b0e1cf70e37322e8d0101d03584f34168539d133045d7a0e21cb45dd0eb2a0ea1077b475a3753b6eae3277052bb06446ea11c53185648523a2125763aff46e20de2a045d0e386bdc05ab11bbe92e0e463557a70262213fec54c30cbb4d79536b815ef7cbd332bc67caa1e8ad9558c891daf9f2388c3f7b6dc23b7ecfd81cab6726c119ffc2d3295364f1558573c0772fffd0e77caf8e5827654961cdd5545dc72dd358a637e73f107298d21f1b90c09d175fd624607079ffb9a668c6a8bdc9e26f0e0c2ece791692edc87d52b6e3a66b7c0685f2dacc04beecff145ddd96f513aff5a9d8b8e8e61cf8d10e11001d05f5efa43e826706be43e09fb35ab2436c9399b5647816dac61346ec76310d34df572065069511465bf9eafd6b3be7823141bc406ec2f6a889917b12146cea1ca2d27bb634be2a6455d4396ee7e9a54d45ddf279b4db03677cd7ae024de52630e008f96b678f7a2f33694883f59c0f15ba9060a7ec61fe1284718b4ddf863dbff2cf4dc1d3c43f1cf57c16fc20e94dc71c5c03ee7125e289094aed9190547b5cf2580cd3259104082721b2986bad503b084d2ae42d81cfce8d76a6a6e70275a922e0cd6979179dae810f211164873d30de298950c9797c69799b490bff476aa068c3d6ea5a807aa76a74f193888c45903fbc1ca4ec8f255e8f61b75e6b2030f0e595e171f4850054a52828071dff6454b3167edbda3142b59333fbda04a1de26fbd3c988bf80d9b7fe751c79a8dd92b761ab3406229b8382b716b834010c0ff86439b67a14b6099fd7e5aecc801dfe1ed8304bb36b9c698f7e914a2fe9c02e21e72d43d3aa0e262740fbb6a22bc6080905defb5961269213b7763a11f33d0096cc3bfd2c30eb72d917ab4a7e29561bf322e6b8ab86a854c1171022c295b8543f0ceeca77a24b064353abb1e057b3ec42cd825c91ac93ccddcff1128495604f5796cebbebf52ac7d600bfc5e6e2f8984036d437723d0a54aa07624e1317d3b1dc6c90414fb4207f2062e5be8a9fa0dd91a2481ce72930ffec1b08f6629a738237ca5518503f95be6e2675570645b1f758f8fa3f3c24f96e66a24e7154b1c555557ca84ba3598f52c281780dd7e22655db21ac383712e62d4540a1bc525e6c410cea444220a0f9047c164d26b28e2182a9c453b6b6108f7a4a9f6451b6e337614c7a1a485b7713ad48db44be60c39d425190c7d9f20bd0193b24685d57535a660ab2f49d26eeac4255cd1dc47600ee2334d55d9de424fe4e8ae5de3072b7fae23b48f32dc4a77bb11d26ce485df52a0076bb021ae62755fd76e8a79cee2ef63502115861dbfeee035833a5fc19b3eae4b08729f211380bead80872ac2aa4d1e990564835b4d1b047af2a1f520f4e9284f7b300c595ead3030d0e5248d3dd8b2e673ce95af4893ca73213f29037ea0871c0cd2e5914ed5c0a2cdf6666423151c12bb0cceb50abb009ae141501758458d2fd6cedb4ed9ef3b186adb6d4fbf6fca09a18b50760c48f6aab17264d017f6d832b15394a770021a9ce358e311df099953e1787ae04ce383a27b4f4703f53a64376c0a74a1c94d14d5f412c21ae9b6bb8e54e52d82a7e6b995617248863d44fe407d5c1067fd0ccf1bd1798873861ca3ed9044c59501a7830c47697c523c6a5aced68ac1df95e6fbed8f900d5221d1524f2b84afd8cfd944929b6fe749b369db39abd28f6dd43fc493f5811f339c3402d8dbe213380afa432f8da0cfcfa92e0e8a5ca3a910f2a14f04a07244709c9e7e6dbd261f572cffaeb9a3b433f995840e1f74a665d9c0b1829fc185383b9d7de55deef07a01789d1fe33d34b6c67b2e121477b7176bcf6640b2849d3ce0ac235104412f7a4462f6346de477cf30afc5ba1562804b71b5a1a66980109517935af0b2672f037417abe602d695c8b9e16d8ae64ba71577294228072c9f786c1a624002d197126f934b0543d0c8cdce85010feaed82538739a024fda79b3f5d461f1c214bda3d55372f341f88694d835d887d101e0f45ef3fc8acdcd5316a3028f9e1a3185af36a54cd3c9a4e4c528987484434d829acbd44b6dad78ee3af067dc92665da7e8c7baf84ed5aaa864eecd1f4c9e8dea97d6c850200f599011e9e8c7f10d2084553cd4bfbea85d4a8e597d833c4b26bf9e2d911f85578c7f3fb59bfa60ff939c41db223532f7943bf7dff879fb2f50b19f621d4f597102ca0014a18283a7094e4be3f902a27a7330d6d67e350a0b75724b63c544eb3fff611a822d841eddf10b4b3c01dc887e3c305bc3fb969088f8675ba6accb8d21c6912ea1423c3048799e44b0176d5437f53b57060a45dfcb88d24f2f92f08b46f132db0b332815f12ca3bc92222428ebb545c689c9bbb0c830c96b5a3c13449a5da1742711ccd40c1583c061e547a1655ff02083418767dce4df03e31e0ef9a9dcc7ab4eb6931053b7206738500b43413fcb83787d81bcbdb59ae5d328f3e9c85f8c1bc8f51287e487328e9f3bf0189cdba716426e22688b61a8cc6453bcde3d336cd601698125c05442d54c169fb847b09e4411c831a1a3e690da6ca51867d6f828992ab9465976c5e69e5dde1bd16806e4f516a23640aae095eb14b1a95c517f8ea109e2ce48c46f055947fcfae4db349dff1230d29a7161e5f6830a502d43785bf5b864c08c951ccc7fc3c35439ea7ef69bbaf88fe0b35116056e1597cc4ae9c79a1b90cec7dc803b83a2cfa6430b31fef3f13d06e3df4e4ed33c3520e5a6469aa16b0739e85a7e6fd42b3f07054321df62d920fc9c86d3f1f8dd32cd89719836ad76ca8f6e87eed72a9d0aaca8697c2fd4d02757df80eeada90a657a1a3c09863d3270377740cfe68588f93c78ea41d7bd88685263dbc854ed8114fb308d54c980381da7814898f5a64720a1aa1dbe979c3f01ea6407641cdb13b518fb92883638cb7e161fe8cad2cdc5dd6410058118cf6edffa06b8733d183c64ff67684ba5d4e1219488eee1340147ab7db8ec46d8776216292c82391d4fecf335e1b8d43c2749251edafca1ba9c900703be57cba6572c012090c1e1c0fab64ec2e51982defed6307eb3ffd46c2adcd28c1d82bd70119104c8664547b423acb26c253480d3cfe10d2629d4ef9997e6fa6b03107dc00bd946bc2b38f64a211926ba280fe517a65714e1ecb39be55cba3acc093a72aa7f045ec9188c4385ee293a09a170c821ab05849b2f50cf3287a25b3ed642e06abbd247c21d4b9b7bc2eb8addb400aeba3125ff44883c839700832ec87aafa6b5ee523c1e8d69f8af8cc678f91313752c3651fd19c6d9fdeb29ed371737050ffef9d36164d5b591b217041e470ace1e5d574e85e8148c70f61aac68722a1cb724091ce62dfddc0a5b739caa277527546d1edc64f8c245007eb149eb5a2914e2c9889770fb4773e7ad76bc0ac4e1bc3e25aa3a19c61955854c465bc8fcf351d0d76e0948d78b7bde7ce60b3b97ba347f1d40b9860090b1d7cdd4814b3892d208e0e9fc456e2224509068ddc29f05860f9bd5f531438f7a78d4b6a5fb740e570339b4f7a6fe35bb53f7a8341c81c6fa1621c9bd86ee82e3c356d511d7b43d6b62fa30e124aaceadb8b074c399f85e59662f4b25ccd87e4c2099f68160160d47f134a7c4be7f03c4697ade4b613f08b81b528eebf86a3f3bdfe401cd444623cf2faf1d1d1e0f16d9a41c153e03a26dbc2d2c0c7af49571f0e7ebe97cb03012969aea5a3f392bf6ca2404081a2bf1d6573b47af96b3f4630242be2ccd3f8ed13dffc6fac6ead4ef2ec354ac15117d5d0e2260a582096491516b5787f6e683a01d202668bb590fc6ca1cb56b6c7de29c86c8324b34593cad230282548afa2732650dd0b4e6d5f4bfc68d7334b758dbf0703ac5dfd85433bff29f0483fe58a9a8e22156b56f2f03f92672908e9fa04c4871546c2b94ea52acff8297a9015166ca5488f84b4afe75090eedab5bad7b71c87d94049e71a98d3605a96d3c3c4e044e4d152a5106808f2967a3c7a6a4ecefbc14e803c86d4d836ec832ad9223fdf41eab6494119d15f192311c1e93cc154ca28ded26c7d3f92e18e0f33d98473a867229cc2a0e1ae3baf6f0474caf25cf0a74a2183e98f5b7e1aee7338c43308cc7f831edbe30de09453eeccc91b955e0bb67f157579bd377cc129df6797a358f121f144b84eb80a0f17e7f258faf285d4df531a1051a95eb025e64287d43a4d4239f76a307870574b76a2bf956f13f66e6d609be051cc1ab7b49adce81660e0f3e8ad1deb53097bfef246a59a912df0754c94ee030402154e7ca1be92ced0c6ae0a15d086f1a858b8bc5ee98ed4d1819116cdb6432e1f5842d8f30cff7b9c8f38fdc1fb2af8c6314d453c32e3946e61d884b3852e73fa7a1e74b946814319aa02fd7ede97536224b7cc0fd1ad87cb07609a35be6159bdd9c3650bde1712fe78e458e6c95084c36afcfe4f29e3ee990d32ba9a29afc0bcb4e76d997af078d8397fa685ad815cc4aa8980129c6a1ad0232a72faa98f429ed172c0a42f31d45ac42ad999de6a6d5030bba78c8b15a202f9f1e6a434f4c519f96cba8d1572efaf69259ab1712a153326b69a7bfde280457e3ed637bcdb0a6655863392d9ff484b6a93cbff00c644eaf8265eb7807153bf33543501a2b9e84205c4ef3cf6b61c93ddc878a557a5fbc38ce20493e47fac31084b5695225b2159282f1d5f602c685d04bb5db203ceee43f91fc62cc488a5d11d07b9ecd707fecb9c733d45d116d11ba11b3b1b7f125fb1ea1a94e6542e0adfca39a987ed19d6cf9b7b10f39fd7a7867df3de546d0ba2e9b45431015cbf90fcd5a370148f435bc207ca83477c013c9fd34fa47e4a3d98177fa40ece03aa0a222a329e7a681207fcfab9221e0b2c4705c4193cc657857d1aa1a77c51ed9c02531646bf3049173c495356ae1d3dac8e6c480bb8d7bb98ac5471be9e89a57b80427011173d894a672f77c309100bd3006a734d06b3868a0c24c363357908fe54f99e3a21095b291cabb3d0e92c2e525dc33cfe2a803b7b12ade5b9a7c40fffc5ba1b36699e32d82faa0c9121737f55187bfd88aa32f5215e83dbf392a89ef44ff35e9df7072bbcbf1aeb9964dc5dee9fe0ad03bbd5a625d015466f0b01482aae2a0d2ff0ff0cf2c614c0b8a36b2282094333f656d36fe8bc57f3e55779bcd8980e1ae032df83bf5a0aadd07c1e35dce56a5c43d5ca9deadabac589dae1344988b7f8bc5ec41f342e9ec86b1f5f11adcba82e4bfbcb51bcf807a066b04609ae217000b774496bf14f67b586a4e1eaa55b3cad5d5531bf2818633ef03e765fe6234eeb0f045ff4b20427613ed0d9ed6bac57f6c8d8f57f6feb75443c8535d17c60dc5dc900dd4eb907ffdf3cd52b5261d3a5113e6e3336b0c42ca7bc1ca028f99bdc3c79f7714283fa0fdd166bba8fb0b7b394616eac39e44e664b9df92b983488c854fe5ae86bd4a8a495c252b6a7b997f7c34103cbc7627e1652ef90c8a1d9127698574d487aa07f43fce327e3d41832ecd226d051407634fb47eb2c0e3d88e543a1088981cb7d3c21229af7414b4c0214e7ded5b093cbf8d5afe3294d519f37d3271a5b9a75fe4db45565d85ce822209be7f67f2e7e9ef9cf1abcbf70545d1fa747c83ff6b9e529c624edcaaf64ac684aeaa9439e010e0cc6544ecd56b0d70d23831fc5cb575064b5ae24f62d9b2dfac660890256ed0670f5bb2960cd089a69c9b6db0eceb3a09569bfa306488e42b1c7eb89e32a463a6c5e5beb8ff97dc692d113c437fc675dd667ca4665f271338f1df0028c4fb506aacfe81d814f95e058026c8019a84782632fc0806ac4e665b60702975f71998ac8166fdabe6d57bb1c3e1f0eeea806fd37cd1b50ff99a89c3dc9e267ef23b6712dbf47181bb5b886e6525e02af2bf00024887ce97bd0cedd625de251512eeaa5c1240be1508cf150fc0b2a4051aea67cd175591adb55c2df0504af53e41a10023902e28dde3d415c70be5514f022f654aee2cbb21de86af4c02af828f2c5401084a5968a3cf942e64a67019b50e4c9cf4e733cf86180eda808a74661dff5ccb916ef025b12994e265a1678e6da90f747256bcfdcdc08d2cc5614dbcd7647f96463f48b0b2a6633991ff48ba5a92eb2fc7680344efce1d0c4689a37a5f885bdfdb38db9f20e1dac42034e1e27150067eb761b06c239ec5b1c1aabbf881f4e816271bcceae66779c1b00fb65baee2a07e2a28141e3598c6a089541e16dc32b02c0ce28e519cdd9b6f71a715956478829d13a120bdcbdb28d1fc247d8b46df25e72b3f4fe1dcfdbc8704449836510123cf700d28d7c6153d73e2c0a1b1872e307274ef2dab9b3a37dfec99dc46e7d1183cabda4b8436336e3a290ec01a78ccb95ecf5b8ae673b169699a9faa018bdd4ea480e5be698b6eeda6bbe9974028c70460de73b4ad6ec51cc1c23e648dce237374cd3895284dfa4cd0f74cc95f5926760ec3485dc5a82b8316d0eed3beddcbefd0c91599752a46c5764b88241ff0406548324719c6e1cdb2f96dce347cc170edfabd5fe2a503309af56245f97f494fc84eaa2faedba6ac93a407207fe75257255f7af3b3e83d4dfaa29fa94eefd5bd8005a4656fda26ec4017baa8d315356af29eaf9f7c28f7bd59491cc4bd8164d17b106f06379ee0bbd4106d8e502e144c5e146b1fb87e4302069a8184d9588795fbbd91d0dac5cfce844efebd951f60cdd03c2952a9e0bf0396778268f1e2843b02bc371d7560bdf89eb6c256128fa00d9b3d2518cbc6427eb3119317d6bc39bfe566dfd89ea575f1ffbabd2040d4d533e48d9912a3c02bf2c5a59efcf05b395f6a27aef444c025902c2729a388dcce8561ba889d3a7884dbbb8333b341ee35b856c3d52eb3af50ce7a231e44ff45e49338d91816c12c82b324084afcb7a6db46cd77884d4841b86d8c91342b51f7043f74f8e61726745c8d63aac2361591285fba66db4f3b569e98a9378259dba5d13c4b3a32ebb553808985d387c4c9f80a90165f531dbfa72cda18ab1ee8121af3dd3cad7b9d0959709ba434484eab93aed4be17500648c910ef05e088e9e0b28e5c630424db4e92083828d6d333f926a8ccab45a66a5453c04e914a22791d924673480f3653f4d0fb0b29e1da509438ea27c6d98e8b19aae9a0554b369f68978e48a95f32802fb1d8232e0e36bba6167a52fa664549f2b61260863a97d7affe49571277cacad1f1ed0863ee5266e6ec7dc5c4f82a1e04bba9135421d6a3131a12ffdf52deaf13c163c6df8c885e260aa625cb60c0b1527e7c5ae3565bfc771ba438b9b1fe5a5dc32630b41bb75531794ba40057dd0ec8d8c46945262f640b4d480cad03d19ba81f5aeb1bb4a16944a5276877845d3f6304414f7d194423288518f206990b843b4097f850f4c73b0068ab47251bc4f7911163d74eb171ea7c71aba545425319756b1a94fbc8ce7c85cddb81e9d735ccccfa0b8f4994b131bc1b86828b4170edce0a8a139a222a7cee3bcf6d52eee2079fb5d9d57b69bb77d911282fd37c6a3799a00531a7ee5c16aade9fe9f23d4db3a64ae05ec6bdc30e4c129fb85ca13f0e2342943432b69ad4a6cc4d8c052033c6c9fc921dc4d30b0d5343504d4d4eabd9a3e7c5c653872e25ee1694b8e94314fa8ae57f0a3f2eed9ec19dd880d8ce9d3d35ffb51b003d49d4d7d50e7860fbacac4a1a79fe243193063c8d4019f481b97a0179812de27c078bf42e1a22e318213a9858547655c56221587aea5c9f1f989fa060dfde6ee039e245aab16b8b6a58673569321a25a5ccd41e92f4cf438c3c4983bf5185116ca11e35945344286c6b863662a79ae5e52a8192756f528a4fa7a4c9530ee5c65be5da80a13429d8dd7a5569655ff48e07646eda970f4c347c4ef4f89a3937da01aadf2125482f84d90e72870f1b91f6192891b389ad3bd1de1801d914776a7c71bef63dfaeece2c0af447545393a44916d6c30678916fdfa432aba4df3b695bae4c07412693223079e6e3034f4a74fe048beea88511bb5cd005688e2fbf9b30ca7ebe19e43c615d0763097e951635859f0ae94906c194224b65777f66429301c4abcb3474218741527ea8976e5c9e9ec00279d614bab0afef005a2a55bbb7005e80ac3adfddb381acd1e2b68f864cd9d44dfc20c6eccade3871083f084e495777b3ed2c670464d7c8b23ab3916062a8490e2a529eeb06c5618676b863b7bdef75f5c7c26039fa3a418fac9228a10382a2777c3a8151c7a787cde7b80b745c10e277e94938935f219d98ca05db40175f4df02521fd54f90934816177090d1939dc4250b8311f4ac9fcf8ed7af3eeb0c1e7932c0f1b12cfb61b01c33546484eaf6c9365852f5fcb50259b2d954dd444973a680ed0f13758d277afa897b7b69a99c376eb0e3fc38ce21655d5cee9e8c852ce622c87c4d39172dfdcb0b669af283db78498fd08d84493608a3d631ffce71c814adc8502bdb02ad17969b202ab04abbbaff989993c4fc87513266b6863ac11816f030f5affa250385c27600b43e5111e91078f4d861e5b7c48cf98d0ae156756e1ffd386f784c4c6a7e12ce365c54a33f99f1ce0bd5476c0ebec018ef423dfb4cf3967f66f1ac9b0eb5abc2f67325185f5387f912e10443e940aac1e5f81015db5d7e6e91e95449d95046cef45e2b4f788ea14a58b50c8c394d0651a06568e63b62be01e3a8af53b477a3d1fd67903d2187c67cf8a06f0fc0a284a6138be0155d50e7a262ff19a7c1f77719e4fcfd93a1deb8ebfd90fe9f24fd4839889b650a06de94156f4376494577e3d563b4414e434a787d4922cc7c7ee1c7b1b987fce8c58b2036dd66bce2b962bfac05f395b893274f58077c535b42a6aa96223e4123b851f5f1416de8db384c4640f03700160952f04ad491163345a258dfdef02e5b2e5b494bd40a04b2516296d292b803606984e9bed1070a6ba508dfbd3bff79a5a1b0c72939ae9b46102ce9e3cfde53ac2331cbcbaa8479ba178cd36e0f8212dceba3523b9166b4f86e42ac89828388d39631bcef5836d242c0ab21fe8275debb7a9fdb158169768eb6b906e259b0797549aa454c7979930ada998b0459ee98cae92acc98dcc978e9d0a3a0369f3c9e3e30e3616ff79f5933355f6373b810336b995d8fd4dea8132c68ff69cef39f447185f96d4eea00b4aec63b9d28ada67dc7aa6ed6a4e8c9c791a621cb3a34c3c709875151445535a783a36ed2be0075cadcd763f3b5f20b24428d2c3b0836a49382e059d4e73511e1f67ddf10c8a8cf962c0983ee0b068b79996f069bf44759d2e5fbd98ceb429a2324bd3f9bbae79d421b5fd0b3e9578200a7087180218cbcd36a6b751a3d05169df41d378d5a9d4558557c0f57d1b8fac69b8e271611375c610cd97b5090cbd83423e478596eb9149c01573550e7bed9e54174ad8743039f3e65544d41c03ed61e96401946f1b5466bf1e2b86c85304b3c7ed32872694dfdd04114cd3f4c1db6767eb7690a0abd5d6bf2d2a713d9fc141cae0e71c7467736fe7258d43dbc1e8c92a4cbf3bff0f613647c6024dc670aa8928dea9bfa336a779aab59921f8a4ba42c994a0a09dc88b4ef20366d9fb688bcb6352e8f97d513ffbeb852047fd2af4d3c852f812b1f92530d7463592510437824e061401adde3c41c474d5ba370cc1a2727431dac6eb1a9b0f666f2bd9297ff6f0f5b11dec04e185f5d612e6a881cf863836987e9c40e62843c4996d80e4e32b91c504d4b759fad75c8698e2375ed0e409fdcaa83c3c23c4f95eab685c223722b2001f0af9234619f63e19c13b8a907a4e6d7743d239ba828b4e3a47320a471577ffbeb646553b011907df11f7700a02e43224b694ed623dd4777cf4436cd65a110db03aa20ee5652f2c0cde388820947fff404c8db260349738572e18559064bae7a30ec8f8e2841e1cb1239744e974284df8b1d25b447bc864da47615daf7183e14f6964278cb102553abc9d2f393fe6170696c2c8f2d4b3c95e5ecdff511f1d4f1d4f53b33ffa7b1810e53e2cd091e9bf9b6705664f676a82b4bdde10233ec126f8898d2a9838671a93c54081ae9bfbb8da4f9ba9c4309503cb635e938b5683202abb8901630606b3201841c19ea922ba12af6a05ca1e2100697b1fd8f34f6375095c9db579a8035b42ff5263bb80573d923d7125a0a08d96e3c16a7458e0a81566738e142ed7263bb21675b49099843af9c598bc552136afe844385cee81cf05d3ac9e33a334e84bf36a5d8a0f2d0a892883d85cb6f87d2d9dc70efc1d3d880b74c8ed513896084e56381b34ec004087a9b61649b4e241af871d56f56b90ec4e4befe186569c47a01a101280c472c5728288f545fc6d8f49a6e7a5cbafc3f625e08941be23dd92cbc2596656e4f96a703e766c36f588d89b2d10cfd5edfc69a6543b43c663b4f35c55010fcd3a9555dc0df9ff7a1373aeb5f5564ea498795bcea34f3f4b0fd72eca4b877b98838ed6aea3ab5fa3a96b817666639a90f719934186234da488c0a055fa6cabc09b701e7fedcd71346b8c34956efdc416c844da4413446b9edccc345740a7d3dafa4ca3e8db53b482d0e2cad9e796984f61096e201d2c0eff9c9f684dd8e86f7917b689841afd8041aece299cb4c1e209606150b506ba7b9a8676b479b5bb1a257887aa1e0822c0ac879d6a1c143b42520e797101cd8c3438e72e596995e0434431f720261d0b9e604226a495cee9c84e195d01892811a72cc6b18f86bd2d19019c1c076830a3c98aa77b7daa65b30271c5b46698f2866bb40c22a91d5c6918e82e6fae79fa2fa456b0956f5113d0dd4670fe11899b0b52d1be064a476dbf50f062d1c092099a08d8cfd14c1ceafe007997b856ff1a5461e2778bac7d18fa31deaebc363fbfb4482d3a8c4c034578aeca700dac51814c4c94036f11873390da23f3c5afc3834f3a12cf800d851a82838180268d08b134360ffbfb77a114d4512917b68d0c740fed5078f89b94090048e6a4209859ad0ad3b979c65752aeb361dad6e01cebda01d6db95a61aa99cafae10dd740aa10742b52cb3d481035a0e1cb33fd536b0be228b148bc2757156da6ecbdd203b5a202c5ba26649b47d730705eca1f18595cd4b18b4276364236c5e4ffbeaa828ce62f8239fc41d8ff2d48aeeb01cae609c91bfd5065cd84376b4a14e490e8f4b71484d6304a8ad1b59b8cb0972ceabadcc3c78b8070e311327c56b6366ca5aa4dfa466c5900ccc98d86d51f0a2384888700427fa7d82502fc0a8b0afce52b3fd099772f603c1136f87ea772d92aaaf79ea1c991656221e7a43e8d0204a666e8e89bddb951e03bcb245420044a3eda3791c3a4972306d42c046d74bf7d912ba422a7b9541373ceb87a239b9d898139eeedcf31314630ca9cc0a5eee1ff72fbfa19cc2fac2fd2e2463a315608411cd527a7f10910c40cefafe195de108077138cd05a25930a0aa799165ce11593191a3b8e58456ba7abf54e33654a358fc4f66974e9627aa9c2deaf4e53625aecd530b4754f7935a415ac77a1e0aa100da6d824dd41945aec34c38fea3c748f672946c57b569547c5fb6dbc41dcd820b4829746e9145497509048be3184f1758f9c23c600230b697f2a95683a3f0cb58a44f8c3e6084bc71d98d74179a5f32d77a3cedefae8688b8e50ad9c8f873ad36f81764317e5b77434545ad6dc3e4167fc0abc70341b8c3ffaa7ad5f0615f4d5a4551d81011de7a47f2d7817b5d3196e93eaa5239fe1cff3f145938be74f603ab2e73fa621571ce52c1bf09aab50e4ee71737a803fd01b0a2ee57f956bcbc40d95637599c66203be570bf9794df66d9c5c43b4ad11eef1f68553bd6c924173e3b93ea8ba0ede618843f2dc61df0410ce6c64b134d7cbe8216d2dad05fe457ddeadc1a2b275a857e4c6d33e6b609c8100fb6d7d77fea4fc51171ec8c1748abbacc44895df7af0cdc29923bb19efb93bb1b7d6aa7b8601505c9c1a44deb1afb77c017a341383cc7fd72d1fae5cbf7a02b69ffabdbb65f4c5b1ce0a52e86c209054945e38919606580391d5548a0c786bf99b76039508b25fb4f4bea7a44a551f2c90a75915c5ddcc6d3ceb2235ca8230257328fa3ced661482f181b97009e413733dff1c0daa992cd80341dac75908b968e9f3ab953f8cc5fc8747c26d19962c4ae4711a65033e4dc0ea63450e7f76ccada5564d11dad49f149e93fa9d188f37faef1f2dfbe5ed71fe83cc6fea88c584965bb760cba7a5e94783ec997b30178ea0fd2576383dee0ce975da80052817e965f12fb79579991439e1a4773efff8f0f38018a211288b727e674713c58dbb201a2442f79dfd60c8a0bf2cbe48becb3223e2d4ab9f7fcc6da6114783d820b576ff4a4ff37080a32804163d1b1825429388b96e3a9e0af4ac22c5d7ae0bfad0042d095d3a4e242b27d90097c0bc7302c96b32fc446b53d66fbd011a875fd32e697a202e01b08ee7b222cff76854962609bc1b9ceb33325d61e79834cba463db807486828215f96ae8148a96b3400d2244cb25bf27d1c68c65cdb6411640f73d04ca467f7665c96d6f35eafcd81b4898330e055a6dc080bf87ab50782af9beca9af8ba218843ba759768e8e23a736baa6ad6dfae1e87760b70689a1c14b3392ce66fbab99d0e88803ddd3bead6c090140b482d7cc987c589bce7a927512678dc7d86dfaed6c40de132e4f5d2acc90512f7dc1c4fc592c9c064b041dc599ef5a17f78b810b03fe391cfdae50cc203d18947f9f411b58037d2a91a11bc9f06af7f014ea95960b29b9521fb444165090243d8191b6525395d3167e8320cd6a58f4ec5bd5936b30019ad681d5e9a5f1c32a2bbcea6881d7b974b464787754633d86953fab9b1928b35a1de18fc34a095569555bf145b7489046f13711bfb9f18c92d18c4162985c830b3fcb91e2509e15f5a196ee8c91db970048487ff5cdf08f245c2d05b2342bd845a328167423830b48916f992be819d69d54c49cf80e03f79214f264545f152e83b7914b804bdfc0cec6e95f73e5bf46f08474ab26a69fbab57583d87d93e072a3ad8b11a06d5978b137ef612ea5fd7e39dc6f9b87a2ee1c4667b788369df657e36c0d262c9250e049ceff6078f90642d4b31d3ec76939e3fef421e8decec83e346861f527ede276c3c6c07932c391b0645a0017b1c6a34f331a81b4097d49ff2fde36314e9a338a1819fbf01d452ee84fcfeb47b1bcb8581b2a29268d730159f4335ed3ce8cf2d4c5ac149058431ca29ea2ff9774e386b51a1d1323ab8e56377379903595320ae5be4567df799e752cf5c9f463fce38ab5a05397f15bc7fdc6424a1347e1fd597d34acc0de40bb5cf3af8dd2cefece1bf60426082d0b7494a350617f6e9eb25e102de1ff17ec059626c17014573fd2d150505bfbacc871dd3eac3936042a775b52a958aa93ef3fed747bab6ec1dab4df8dc7435183b15c324e7b209d172c03fda6222b18e1c12418541d9ebfa445daf80c5549a31bbeaa934d316ebee39a0b5bae60e5668106ab2c0c89ae85b972c5ba485bdb2340e57be981ef363d908e9403af628f7a91dd23ee1f4e61c33874f1fdd18dc18068a1128c873e052939299836cd146f600dec6e9791783930e2050a107971259f4e273327b7677726e56f7771e41ebabaf0b22e6bed0d6280ea96e045c6ee20815b5c4b389d1bfb687edb16d9f5e54579d3d68f0380e47d07d4660530a8ad5f87fd85d7438c9e361ef5c49873edd2cebbd70e3862b1759fcdf3247831209dbed121399fa389c59286384b7d91aba48b0d81a57acb217815f50d2145f53ebc1f3c9f87e42089622c3c5760a6710e24b738d4b85c9cc6960dc1b1bf4a776f3330fd7f7e779928b128959268a834b79ca522bbeb1d42bb5a6438019f166bfd7b153b8dd4f88b46895f6fd9b83bef11302ed552788f34bfbacb754f3d8f811d831283b61c012a3de2a34b318199e39e7a1074bff42e020b23e93838ef6b7dee52601e7293bc8ae4219b2f7546d35dd62d6cf7d37eb61df1367cbb8736c91e8cc35d926ff48ac22d1ab01377e1e98bb48679a636b013ea7f9185be67b72934ab8c9774cd80f088f08c010afa0597f2fcaa8048deae472d51ace77c427c3e58b7319cdfc9959cf693fb408e8974351e5cb616b79772216738b19be0b216e3d5bc31e4b0d85d0cbc78209e68c81379f5ebefa137f373e2a07d9856fef167ba6d3a8dca6d54b7a6a446320d07ee175c6f7d7895705a13e402c81256d35310c3a56b7a9740554120836ff3fbc384792b569b988555653819c7cae71d1f0dc10f1f9e08f2a176ddd3b20cd50809f4c1c41d4da4a9fe97c93edb08656b514184cb1e2a763c014f4702b641bc3fde60f716a91a8c7802ae48f90adea2abe13ffc8a61798e877ed91605b8f6666254e6fac0253cc07a4180f9401af6f7e509cc57d03f5cfee157c24ad181b79d57b8295f34a1b318aa07dc4441d6ab8d3922ea791f8f138612ca5397f611d80b2c6e35c357496c0baf91cc0095439d0a14d28d2829c3d792d08c62af7b9b0b865bf9c526e5d6126b9598a349b02ed8706f40b72c6544b2bce8b5322c0c8068f1c5904162b2c8037d3355a315db33f7ae989773523a6feb3a9d96c9606176f369c706f0aa99f7b200f67ef4400fa3b5d887c7b7262a2024511c77d60896a74eaab559ec09adfd6f4e081948d0e939c40f7df25d4f0e254e147e070ca03d0440228d8525a790718a5b02cdbdd71e649f9192643527bf2e2fbc11a0de77842703ae804c7d56b7aa2617fdf686ada85c1f4960752877f89a7f04d11f472e28cebc5d21c744e0b22771bd712d1f298408559f847023851977288157ee349564af59f33a37a8a18818d009a173b8c9c6f5f90bbf54bf04f219243fd168b8844a5efede97cf0cd3f31b44eac84fba56e83a7a806dda1a183a95cb16fbacdd2a6b1b0210dce4dae6ffac4eb0ad96b43510586f9859dc4f2be0cddaf42e6c14b13047e91c320f45dcd0a98965c6156e8b6155064c62164812a78bdef79e35b10c530ca59f26721400b2bfbce5e366aa11c94d6ad2c3419d72456e98c3309e70d97e1ef52ea6b5937bfd85707d61ae0a2eea92e3fd3e3f34996b6d81179039d9a8e0302e862e32e5e71bdb43e095156b239b894f483f34abeac958b6d93caff8ab94ca592d182f4911ca2366afd075590c7d0bc528a3a3e75aa68a83e18a443017f59cf1a16aaab12067cc6add445c06fe36b3b31a54cb06e009d4a580681c8f6d0e3fc8fb74a70fd92e12005878752994b9490b57935b96dcce5692afdf40b9d9cf208dc4e9ff35a10902e67fcf5003efc59c1bcbb93fb95817bd3806af2687db57e8f64d4e476165016785e4b777a845a383b9b9c6f23f752807f157ae59abb1ca62e158cb1f49d52dafe021f653f7e135f057b6755fd727ff0233dd28969b924a61f934aa55989b723bdfb74122958b2c8d97f902422d2b501fb1eee4ae6b4d957d7468d917fee7e03c7279ecf2e6f74d45256ee494750b7ac86a1c4e7ee1632b1a616307260c7c899073e418cdb5d0af2cd598206135fa8ed937f170ecf653df19d1eadd8fdaaa21897d2c885e0ae40a3ea68103cedeff2ccdc525b3fe08c8244a7b44be8438e8166999633f18ef984e52607eb3fdfdb852eec5f7ebdbca12f0fad9bb44af11824d79edde81aa9c8eee5bdb77ae0551b56fa4fb5dbd582283be957722b8e8667b479ab8be0a1fa9bf6ea7015f82995148eb858297229e6491317856af73c0fe9e1cedb7af9ffe90f1fd9c0e9e9108e965b27e3fe2ebf2e6b402a5f57eddcb9c66e58aab5aa6bba761bda2dc0efd3e814ee518a9e5a6d49e8a93b7912325050555d0d4b61110ced618190cf01fd509ae968f390e1a1f677215dd58c71b30303e9079052e24e16a45829645abf17a35abae0650f0e840d7b77dcf6579f21ed03ca3af84d5c73e68e2dd9e3f575dc41ff6179e180d8605e51363275522a13605abb18e177992014e7bed4ddc652c55025af3d21df7e0b90c6bc2340435b4eb399fc89329fe6f5822f5011866666030b7c25b7bf4180b1d080b01592c0f20656b299a8bf31705007455cf668cbc453c0dd6bca1d61600da4bcfbdf15658bc5392af2d8de6edaf8665587deb74375b0301c281e0f953696a644f68bc9eab7213cc0e0cb2cb51650c8d231903ad0395909a34180368569f7469a211781a44e21a945ec86e2bc762f0879e3aa6e0bbe4cbf872008efef834981ed476c98957a70d8346398fef3fe0fce2547570548720d114c1d3ccbd98d1b2f2f024c3b59990af6f92a930cefbc4a239fae6d0bc4372465c234516fc522b0d351005b5a84a5828e92f02ec49a28d3477e4b60f8e0bac827fef10efd51c438e58fc08d1de718805b3ea27cd014f02decec74f6ab5e361a19353e246fe3cb73ef799e12ec0012d13654bc829da2278ad403647fbc9863db2462007d0f70aa8c86274296ab150b8f61df824543774f353564149742e1f1b75dc46cdd602e0646fd117a08bd0f97461d33061ed7d6fb9f7a12ff771aa5fa0217e87a75ba6dbc0c5cba357f465db04d5d88bfc0b47d43655429943b598b7463f95a86998f48436709176a25052e42371bb962f5542f170ff6d5c9ce8d14823d82207bee9dccb474eae9f9ec576416aae786715d01669629d71d2259ac058187875b5fb61c210053e2a42a554ac5ce81a04ed3e65fb59ddde423b2857d772cbd10e1298132148e05ccac3d6872bf5b4001ab39b88dadbfeae8ebfced90de46e4ec8314b0f5be3f275eb90462729fb403fc105e8c09efbf0fbba4700fe3c04a3dd0fa0abeb283e4805a208670627613b4ce931ee6d9d443978d66d538acbb764c4101339dce3e02c71ed74fac114a6ea034a551666df10a40e69c7ee36cc05f369680776d359aed37cec9d5e718de388f2954342bb12bb58103c2390752db05ed91ebd27fe8c711f502c81f30e8aa0dc13882edc54a631691fe6bee3cc1f7d4c3e4e3b5ba117d7d95699a54ddc07c05b7c266e25be23148f9df1cfeee0bfb36cb1eb2fca391b8b4f5aad11e96d4dd7fdfcafa0c4972fa43974caf098476dd327ff73c3881af85370a14d757afd900946e5c21477c06696172d363840b51006670f0be94325872ae7c339c1b2ee922333cc0b58ed6c7409a8610e407d697d4128688529b9e48fba4a662895cc38af03d1fb00a7dbbaf605534e8373a7fe13b6c5580600e93c76ed6e4fd6ab3ee204c0f8469ff1ee792fc1403602da03de6bb2c808f42b6a02b9f366b2da675376d57035fff71450188cde11c1cf310c517cd40ff2a8d8d3f5a0326d3efa4acdf29e5c596a29632d7220645a076e36610f9dac72ad61847130532c700b047d9656602dab9d4eec041f978f4e92a4b07469bf3394e49e2fc972f61813f8cc33534f7b556e3a3b28993140396aac8ae91b0f64a6dbe01599a8e8a2936c90995559197df44997a9cc1c571772cdacc9cd0d66702c443fd33e0608314ac6417ffd8ea4f5ce088dc867c6c459942df47169930ccbb7f73e4e7137d2d8a38cb6ec125bb64f4533811272b38d65f1060d2117b21fa54c41d60f4f539f481309ab6b0ada353b2ab5e45f58a5f9003c9a980bd189ac1c8f1c6b028093254493ee5060040d16f2e473bac0cf457f21766b0bf8202dbec1f14f6b02a9fe7e5adde132a2dfcd473e31a426a3508590913a014bb869ab82504eb698d9c12f35f014a12351610335b104a73a25881fba6accccad27ae9a600996bccf91ffafd53a8c7acb6e6d092cc2cd735e9f25f0a23c419934b5ccdf2c07c543259ee6af1374fa0635af0db723d5fd5045bdf515e98bf5cd93d29cd9ddaa50f014a1b0dc14e8da7fdcb6ea69adda5e78530826353996f42a86bf87bffa7c2170d5e3d5a46b29eb234929169e3b707e6025348ab61d63615b4e16ac2822b415debd1278211ae07f81f0d45460cd97391eb2b2f728f933860da7698f572ba03d71e4b85b6631d814060bcc1af7a4c8e4453f8324d5cf4016211242ab99ad128b8fc0fe5c7ecd687d2acb63cf1852a3cdaff90ab2ed62b6b569400af5999674f0075392b7101740a8af56ba8880f0940a57e583a8e0ed3abf567f0a7d1ffadd9ba01d70e1ae56fc605a8b5e55eb6733ba87e0517070516b9f19b77597b29045bd0e3ffb8c233d51ec776249edc36010f653c3161c32da878641e5065390c01e5e6662e0d63631cdc1d9cb9fc43a80a8571db977c377848cc038d57cc51f540efb3785ee40f7220153d51bc078a16ce7e061f0a247d29b5aebaa260e5e289b43ca95f0c8f818d3a3ed5e5981bc46e3b7a2e557b906d0b8070e4e47a212775bf95e114f89108a9dbec336425d3b8a57e4f27989d140d6e0980ba4d208041bd1e5414238ba6bb3991267e3a498c9c45b874ea12de916483abd591bc210bf25a100a31d9d3d2f32b50757eb57661c9d06fe11204396b25fc69ae62ad04f03774443212145a7c2405c2b29e557e239a8457bf799b6f2b51c36f4cc1d662b6b38ef4346c489889b53c568d5022f1eef0ea31a7ca3fbe6a22e34b077e3fff0d3ded5abd040492b63ba997e379d505278f39d6ac9d3f9cae7b43f517bb394be0b6767f2709b746d0caf16600540b6fe3883cda5eb093823dfd443083e4dd42fbc79f9a3b669b59f922ba814e1b2886fc228dfbef18e5f3c664db3212714eb391094a558dee70d86fb291aed53da1a3213fe1b240901718dd30184ed23384c2edd3fb92c55d144da03d2e617155168d0198058c058ca8d9f500fa07360669eab1bea18411b9ba7d5589f069fb46e82e0f041466377c8d33dbe6d712c1ae34a4de06e2004e7f468e2095014db4fd41940fe826d954ae9540e7c3439e6e41a38240890cc4d64853d15779adbc9c0cfa3f402a19bc9e3bc7fa082f760d5255a15c99708e928ecae13804599a58273c0c96177f4091a43e89f4918145a7d887ba0302319a513c712a71887e74b7b2ecfef3542e301b0eabb557aa69028c820474f4841a23031de1712ad6c2bf08488bbc93880e049e1d8ef7504efac9d24ba75d7916f00aba1ace895f45e1e64d9dccd7a3c353366f24d4ea3b8ad3b42d608c8a29427a88a491e346778d83ed841a4e529c73e3688282f7b2ef25e3f81a923ba72e9289fae1ac8865d4fcfcbb8645919780cedc6fce68682e35c05fa4e691b2625a419effc7dace48c0c5c16baff6bc10a629165b9e49ba5675712d0df3efa622d711af799ccff1e67e7864351cf8f4c11cedf97cccf4cc8c475fd6e584634472f803d9e12901cebee1db2af16cbac82df13cfb7b332761887b08c2039da6b4f05d2a5d978c52dc9f6a05087671c87629edadbf9e2dcf4e96f569252c124148ef85c310b6bed9a602c5a1b3e38722cfa7ee6008e6a757f11f0c0f838e83d02846e2a5952ec57f9916f09c3d60620a612065e4696d6ce1788f8ba260693e9565bcebdf540e38991f8aac9088b7d73fc7a0aa3693d8678ff8fc874581c562260696f7085a8e26348281feec56a06d5cb1b452f11b87c6103778724e8ff6b75088bd2da82956b4a6a67ddfec60c6134774140288f2d0d8f2a0514a962ccc5ecef9b7ea45f9d1c05d46def14f4074df66e9c6fadb75649a5ce2e37b6b735d596274ba8e2522bff1b3da375969b900c81855bc96949fc5f3941c1a4644400b6121a0629a00607183b638abec36e6fff0172f8e9cbeba6c71291cd034defc0a963d746ff38a8b1dfe104657af3f0c1d778bbedf68d8e67ca590b988ff9c6cffd901c4ffea930077ff471255eddfd0263fad5eaa8f3ec195211d2305977397f19d3e041cef7b91c9dd4bc8e91df842171a4b7550408b13b9362af459d99aa7f2f381844eb75aac6d5e30b2ca1c67736c8147315b4b9149beeacff21d0db02bc8fa393f41fe64426e2595b30ca7d56bdc3de0fc58026a9be046d7e655d1cdc5c33354e7899233730b48a4e9874e1981f9e51fd3f1fcc77daee019d5c8dce23b689f047957edc7cb2793d6a905733bf2efd24f287ef3b1df6b5bf1cee85044c1a4536b765b2930d5471b997835271dd70915e7db34102a5fc2d3ae635d24d9c3dd2b88767c74002df8fd8c452615d51ca02262b16226d8d13787dc662aede6da0bffe20fd9a8366a862fe08943a0719799ca1d3a96792ba40c9df0cb2040f1501907f62adcd9664cbd34482d53c5dfd3ef71eb0005b419f0b651c60aa946b468770038ea7e2a451dca9a4c7822c0a0b7a07be6686668d00621611f286ad653b9040175d601119f016b44ff83eb0cff518299eea37545347af090db5d8f4df142103a88e5a12807271e01239f5f7d2d6595b51aadea36f0dd92639db630c1c0f85c8e9878de1f0a080c70314e00c95fad9138fea39bf143ae488a3ae1b8bae7c7f0419ef9634b7ed0f609639ea7075dd065cc2aac88a2ffbdbedb4f1601d57d28fac0fd3bb1f7be2e5d660c49d97d27db5cee5b27ad3213c53563a6dcc3612dcbec188dbb7eda307bc0e1e9e0d3366f7b2aee33e1be7c4e3ac7aa457e0b8886d658ccb5f0f1d64b926401537bf3643f4aa03227bbb15a834e81308aa5db7ed647d05598d975ffba848ef8bd6a267514a8c5070de6a02e94fe99f021497eb04ad5331a2605108f332a6013031950c3b001e7675052d4e3ea53abd227252c7209840f4f99203b79aeb0b0dfcc838e182a8bc99fc9853a43c97f73cc24ac2e02c2f842860fa7d9c53710a0ee4fb28d435662b3cf0c2728baf0b6617f1ba25a384e48d2ac9c7f8d04173c6cc123346af97e7ed0cb65616f10aedbf873489f756466d9d25e559658e8a58fcce78fb0f19ef03b99c9f8c5dd2c7200862162ad0360c217c6ad9e9ab38c9d961450690c2b188323565f4e6dd43dab1deec6f0877a4016254f040e1c6fc605ec9f58a8b38051cf8e060fd9098ee348d126d6797de3e90be33a01be9dfbad1d67093a0f5fac3ad724c85f44d16d1373e0fa3e1e453bc99d5a5689c220ff6a9f5f9fb9c18c7ac2abda337b54f75da563919a568737862f8c3cb61c36ebc3fbd61d46b350d0d71df87cc7099acb09a749a9249682a22bae944f99b3ed18bddca31884403ab68206c6294ca6372394631c539f14f32ac43af9f5bbf790203023020bab17eda9876521db5ea17b6e63dff9710145700db29fa0106134b2add5e0d7b2eb666c6698f42ef4c8e3cc1c0fc7156c338670dec1468cf8382bca18a0bb4e3c1bf2e2de58917bb897b682f0677edd60aa4b23aab8261f161a3d989a17ff7edbcccb71a0defff01e97d8929db920075707e6c662f66e5a5ba7494f29b955b23c7c1aafa0eed9bc50414fbe0e6bdc196a6d114c3f51ef994ca65723754c2e31336cf43b02dd90a7716934aa03c564dd17120eafdc38a42026b35cf2103fdcb9693ca7a07dfa385be165bb7842ab76dc9fe51338bc5b22536665b6868a5bb1203be5510dc1a4d0c04040ab6cb9a7eec4bb4f04755cd72c07ca472abdae00c1359481d80597972f71d563cf233c76be369acfd0b5d30dbd3f60017b280ea38559db7755e1051dd2a17eccbc4c5c0efdfe9ee127fedf39febad430d31bd282352f93bae32ffdeaa60748ac18091f4c87852bcf7078fbbcbfad857bf7503480cea9195ae47a99991fe52afbe445cabd2adfb9120d382b0d68c30d1074938a1ba1b37af191838367c7b35fdcd9a5a0126c40f96e485090e498b905608d25018372b48aafbe8b4f8aad1dcb4992734b1d709b1d6187e41090427c032b19040705ec4366b5959f861d7db3008114ef4b5ad12c023db10a97a53e5b8a11437450fcc06cc16bae35ea9d27b19a402d2995ff787f5ab72345203f0e770a043bf2fa3d621dd378537ef80cab22acb243312e50c8a0fbde4d64c11da63feffe5a16da0e65706137db89c65c371aff9d26f09fc16b56322e98e2ce5764664046ac0adc2365961a0e59351b1cf0aeef4bca6f96775dc97a4bb5f33fab2f03cb05fd054339f89ca02f29c0bfe4065a4d8f1a33f9d15a72624c4efc61b798f5d79f94682380cdb1ab1ace3c2fbaea45d32b626a393ab8c19e86d135cccb71029f3df6296e1889fc035a20f7c87e3ba8f085b5b5c6593c01a0804d31b9c4727ea0e05b809122a0befab8c659b5d9628c4e54edb8166dcf6f63716d7a985a8c2d3b9bc4efb9b5c2deb488c8dc942829fecef7cb0339cdcc5e0ea0b2838b4cd1ac228569dccf0051061fdc08c2c418a1af5689d992bda8d85ede7761cfe7f0b56fd3e15a27870db06dfc41af6b7ab51a700d136c3f4cfd8f6add8555648f74219bd4df22a4839d0a5bdafd9d5887f61f0248eb90f8e52cdc5bedbef3101a250c32a1aba68b44fe3b16851f2479a887df4bde8f577b63a86e64d5814f735b9b9e5be6fdc4cfa3bc845a5610f4c5a3b65d28d9a354a415d6d395917474d24e1b6a7a68fcdca28a3274473d2fcb7d6734f1fb6bc04b574171a3180bc971e9097becd3064c06bb200bb06b78f2d6246d58fbe8e577ca5b56374e1fc5319f9017a07febc2461124c057b21bd81be91d015399c4f6659cf65c9ae6df34e8b9ef3a8b9b9dc259a6907f048349f1e2dadbb81fbc44033ad277ed787b6e9a1c79aafa60ddc4a922ef6572e9706e41d4b63f953b68ab39607c5289e9af8526a2397384edbab3e5c49a9884bdf0ba1298dfc7c5c645ae874acada13c4b4002b3660c03cb104760bda51cdc3b7fb062361b734c47e0d39c1f042cf3e421e49a2e09b42919a8f25fb856c40432d059a61a8f59783b2b358f2e73c97158d608442a93fd5b33fa95a5ecbb4b25f5274370e35259d4d9679358e30565e477cd63a3c692b3b283e62cccd620d1b902e1a4400fba96d6404a138bfbad2c07d3d288a7404c44551e69e28746d6259d0ebd885a7f2ed5941787883ffe46a930cb8cb62b43da852f3651942867c34c62006e9174948d8a501e4bc6c90ff561bd29dead9dc0d0dad472f07ea4885ede5ffc332e24c7abe83f1c0c53ad3d0197e331b5304145fcb339c6e1a50a001ba24008a0615ebb6d03229abeee555cfa6881d26a87bebf3bf84c974a751261a8e697e993088f20d4b597b8374e1af749f56ad404bf04bb66fd8dfeaac6d86e5750738da8f1d41c0cc1558799ea2da70e40e83e1c0828ce8991c97c2702dbc3783e42f9423cf4024271e1c03ed8c764ca7aec57c24ec6fdf4428138f45a4b40fd7fccd12f9e8e1ec2c8d7cfa18605f3ccbfc96015e5a5778cbaa0c51d60b3ea6457467d8acae49dcf6afe2b7f9f872d913b6deaf9eb22e1b2dd4801273bce7f61730e81981fdcdd85e878ca3d4e8601339bcba0c183ec442cc90fe27a2dbafd4e1c791aff374b5326ba16880a16d98269abb731904dd1f8eb00aaea66bfef72d5252931d84cc01cfabde3bea854b5b145ddd37bdced843340e0679b6b4e7ed2fe318fd0cef76d160543722e0c3eac11f901ae15db25905dca7a17b81c6d51869fd12ea569fc4b072d217786b4b4d73bde4b9bd9425bc87b33d6b1911e6398673939aa2f15ac505b9a1ab029b8452dd0869f392daa28adc942272615ff2db16bcf084f01ec9fcc2f7f6a632b2bba8c468655e985a3b271c25952b7ba3a9142a23515947e79dc051e75d70f84249a4b15e53ab0db7671fc7d0ef947948b2a1b2acc5b018f4b8d08cafe6a3b7737e46342838d1f702e5cbbc74bb112359d8b8f34138863717dc062a9e4c804dc3b0836b1c341c5fc2b53497554b8878e8c81753b820601688326f26737d9b3c6a400a521c21d1d20957b78d01aece4196b731dd14a862add99cbce003b71811ecd1d9e43e4affa252035283e8b8a26fc31016366cd7c4ab57667ab5306bae436498188633964ea5556f12d762353af8157a9b09b8bddae4ad31f08979e1cb67706c8cb814rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootdpdk-18.11.9-lp151.3.8.1.src.rpmdpdk-any-docdpdk-doc    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-1otherproviders(dpdk-any-doc)4.14.1_h^^.\mA@\I[["@[;e@Z@Zz@ZZ@ZZZH@Z\ZTZ@X6@WJaime Caamaño Ruiz Jaime Caamaño Ruiz Marco Varlese ndas@suse.deMarco Varlese marco.varlese@suse.comndas@suse.demsuchanek@suse.comndas@suse.dendas@suse.dendas@suse.dendas@suse.demarco.varlese@suse.demarco.varlese@suse.dendas@suse.demarco.varlese@suse.demarco.varlese@suse.demarco.varlese@suse.demchandras@suse.dendas@suse.demarco.varlese@suse.commarco.varlese@suse.comndas@suse.dendas@suse.demchandras@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.dendas@suse.demarco.varlese@suse.commarco.varlese@suse.commvarlese@suse.commchandras@suse.demchandras@suse.demchandras@suse.dendas@suse.dendas@suse.dendas@suse.demchandras@suse.dendas@suse.dendas@suse.demchandras@suse.dendas@suse.demchandras@suse.dendas@suse.demchandras@suse.dendas@suse.demchandras@suse.demchandras@suse.dendas@suse.denirmoy.das@suse.com- Update to 18.11.9. For a list of fixes check: * https://doc.dpdk.org/guides-18.11/rel_notes/release_18_11.html#fixes - Add patches to fix vulnerability where malicious guest can harm the host using vhost crypto, this includes executing code in host (VM Escape), reading host application memory space to guest and causing partially denial of service in the host (CVE-2020-14374,CVE-2020-14375,CVE-2020-14376, CVE-2020-14377,CVE-2020-14378bsc#1176590): * 0001-vhost-crypto-fix-pool-allocation.patch * 0002-vhost-crypto-fix-incorrect-descriptor-deduction.patch * 0003-vhost-crypto-fix-missed-request-check-for-copy-mode.patch * 0004-vhost-crypto-fix-incorrect-write-back-source.patch * 0005-vhost-crypto-fix-data-length-check.patch * 0006-vhost-crypto-fix-possible-TOCTOU-attack.patch - Removed patches that no longer apply to the code base: * 0001-vhost-fix-possible-denial-of-service-on-SET_VRING_NU.patch * 0003-vhost-crypto-validate-keys-lengths.patch * 0001-vhost-check-log-mmap-offset-and-size-overflow.patch * 0002-vhost-fix-possible-denial-of-service-by-leaking-FDs.patch * 0002-vhost-fix-vring-index-check.patch- Add patches to fix vulnerability where malicious guest/container can cause resource leak resulting a Denial-of-Service, or memory corruption and crash, or information leak in vhost-user backend application (bsc#1171477, CVE-2020-10722, CVE-2020-10723, CVE-2020-10724, CVE-2020-10725, CVE-2020-10726). * 0001-vhost-check-log-mmap-offset-and-size-overflow.patch * 0002-vhost-fix-vring-index-check.patch * 0003-vhost-crypto-validate-keys-lengths.patch - Change constraint to ssse3 to fix build issues on x86_64 and i586- Add version to the PMD driver directory to avoid loading previous version drivers (bsc#1157179). - Update to 18.11.3 (bsc#1156146). For a list of fixes check: * https://doc.dpdk.org/guides-18.11/rel_notes/release_18_11.html#fixes - Add patches to fix vulnerability where malicious container can trigger a denial of service (CVE-2019-14818, bsc#1156146) * 0001-vhost-fix-possible-denial-of-service-on-SET_VRING_NU.patch * 0002-vhost-fix-possible-denial-of-service-by-leaking-FDs.patch - Changed to multibuild (bsc#1151455).- Added 0002-fix-cpu-compatibility.patch to address issue with older CPUs (bsc#1125961)- Update to 18.11; some of the changes are(fate#325916, fate#325951 fate#326025, fate#326992): * Added support for using externally allocated memory in DPDK. * Added check for ensuring allocated memory is addressable by devices. * Updated the C11 memory model version of the ring library. * Added NXP CAAM JR PMD. * Added support for GEN3 devices to Intel QAT driver. * Added Distributed Software Eventdev PMD. * Updated KNI kernel module, rte_kni library, and KNI sample application. * Add a new sample application for vDPA. * Updated mlx5 driver. * * Improved security of PMD to prevent the NIC from getting stuck when the application misbehaves. * * Reworked flow engine to supported e-switch flow rules (transfer attribute). * * Added support for header re-write(L2-L4), VXLAN encap/decap, count, match on TCP flags and multiple flow groups with e-switch flow rules. * * Added support for match on metadata, VXLAN and MPLS encap/decap with flow rules. * * Added support for RTE_ETH_DEV_CLOSE_REMOVE flag to provide better support for representors. * * Added support for meson build. * * Fixed build issue with PPC. * * Added support for BlueField VF. * * Added support for externally allocated static memory for DMA. all the changes can be viwed in http://doc.dpdk.org/guides/rel_notes/release_18_11.html [- 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch, - - 0002-fix-cpu-compatibility.patch]- Fixed a problem with ABI compatibility; API/ABI compatibility is guaranteed by DPDK upstream community across subsequent bug-fix releases. However, the .spec file broke it by defining the wrong version which included also the bug-fix release number. - Fixed a naming issue with library: did not reflect soname- Update to 17.11.4 stable release. Some of the fixes include: * app/testpmd: fix buffer leak in TM command, fix DCB config, fix VLAN TCI mask set error for FDIR * bus/dpaa: fix buffer offset setting in FMAN, fix build, fix phandle support for Linux 4.16 * doc: fix bonding command in testpmd, update qede management firmware guide * eal: fix bitmap documentation, fix return codes on thread naming failure, fix invalid syntax in interrupts, fix uninitialized value * eventdev: add event buffer flush in Rx adapter, fix internal port logic in Rx adapter, fix missing update to Rx adaper WRR position, fix port in Rx adapter internal function, fix Rx SW adapter stop * hash: fix a multi-writer race condition, fix doxygen of return values, fix key slot size accuracy, fix multiwriter lock memory allocation * kni:fix build with gcc 8.1, fix crash with null name * vhost: fix missing increment of log cache count, flush IOTLB cache on new mem table handling, improve dirty pages logging performance, release locks on RARP packet failure, retranslate vring addr when memory table changes * PMD drivers: various fixes fro bnxt, dpaa2, mlx5 - Fixed a syntax error affecting csh environment configuration(bsc#1102310)- do proper cpu compatibility test(bsc#1099474) [+ 0002-fix-cpu-compatibility.patch] - change %doc to %license- workaround kernelrelease error- Sync dpdk for SLE15 with SLE12-SP4(fate#324872)- use gcc-7 to remove EXTRA_CFLAGS hack that was required for gcc-6 in the previous change(bsc#1090668)- Remove fstack-clash-protection from EXTRA_CFLAGS as gcc-6 cant recognize it(bsc#1090668)- Update to 17.11.2 restrict untrusted guest to misuse virtio to corrupt host application(ovs-dpdk) memory which can lead all VM to lose connectivity(CVE-2018-1059,bsc#1089638). Changes: * Add deprecation notice for rte_vhost_gpa_to_vva() * Patch vhost-net and vhost-scsi examples * Fixes checkpatch warnings * Take VIRTIO_RING_F_EVENT_IDX into account when ring size (Tiwei) * Fix next chuncks translation access rights in Rx paths (Tiwei) * vhost: fix indirect descriptors table translation size * vhost: check all range is mapped when translating GPAs * vhost: introduce safe API for GPA translation * vhost: ensure all range is mapped when translating QVAs * vhost: add support for non-contiguous indirect descs tables * vhost: handle virtually non-contiguous buffers in Tx * vhost: handle virtually non-contiguous buffers in Rx * vhost: handle virtually non-contiguous buffers in Rx-mrg * examples/vhost: move to safe GPA translation API * examples/vhost_scsi: move to safe GPA translation API * vhost/crypto: move to safe GPA translation API * vhost: deprecate unsafe GPA translation API- The vm_power example does not work for ppc64le since it uses the IXGBE PMD driver which is not available for that platform(bsc#1082154): * Disable CONFIG_RTE_LIBRTE_POWER for the sample application; * Disable CONFIG_RTE_LIBRTE_IXGBE_PMD for the actual PMD driver;- Upgraded to latest stable release 17.11.1 (LTS): some of the fixes include: * location changes of the GPL and LGPL licenses; * net/mlx4: - fix drop flow resources leak * net/bnxt: - double increment of idx during Tx ring alloc - group info usage - check for ether type - size of Tx ring in HW - number of pools for RSS - return code in MAC address set - link speed setting with autoneg off * net/nfp: - MTU settings - jumbo settings - CRC strip check behaviour * net/sfc: - multicast address list copy memory leak - DMA memory leak after kvarg processing failure - fix label name to be consistent * net/i40e: - VLAN offload setting issue - FDIR input set conflict - FDIR rule confiliction issue - setting MAC address of VF - flow director Rx resource defect - warn when writing global registers - multiple driver support - interrupt conflict with multi-driver - Rx interrupt - check multi-driver option parsing - flow director filter * net/qede: - enable LRO over tunnels - reject config with no Rx queue - check tunnel L3 header - tunnel header size in Tx BD configuration - VF LRO tunnel configuration * net/mlx5: - Tx checksum offloads - un-supported RSS hash fields use - device operation type - pedantic compilation - fix pedantic compilation - flow item validation - flow RSS configuration - UAR remapping on non configured queues - secondary process verification - port stop by verify flows are still present - flow priority on queue action- Enable(disabled by default) MLX4 and MLX5 pmd(fate#322609)- Upgraded to latest major 17.11(fate#322609); some of the fixes include: * Extended port_id range from uint8_t to uint16_t * Added a new driver for Marvell Armada 7k/8k devices * Updated mlx4 driver * Updated mlx5 driver * Added SoftNIC PMD * Added support for NXP DPAA Devices * Updated support for Cavium OCTEONTX Device * Added PF support to the Netronome NFP PMD * Updated bnxt PMD * Added bus agnostic functions to cryptodev for PMD initialization * Updated QAT crypto PMD * Updated the AESNI MB PMD * Updated the OpenSSL PMD * Added NXP DPAA SEC crypto PMD * Add new benchmarking mode to dpdk-test-crypto-perf application * Added IOMMU support to libvhost-user * Added the Generic Segmentation Offload Library * Added the Flow Classification Library - Removed 0002-kni-fix-build-on-SLE12-SP3.patch since patch merged upstream and available in 17.11- Added missing supported broadcom chipset family Broadcom NetXtreme II BCM57810- Upgraded to latest stable 17.08.1; some of the fixes include: * net/qede: disable per-VF Tx switching feature * revert "net/virtio: flush Rx queues on start" * various fixes for mlx5 PMD drivers * various fixes for bnxt PMD drivers * various fixes for i40e PMD drivers * various fixes for crypto PMD drivers * testpmd: fix for non-consecutive ports * ethdev: fix ABI version- Add missing libelf-devel dependency- Updated to 17.08(bsc#1050250, bsc#1046598, fate#322913, fate#322608) Some of the new features are listed below: * Increase minimum x86 ISA version to SSE4.2 * Added Fail-Safe PMD * Added support for generic flow API (rte_flow) on igb NICs * Added support for generic flow API (rte_flow) on enic * Added support for Chelsio T6 family of adapters * Added latency and performance improvements for cxgbe * Updated mlx5 driver * Added NXP DPAA2 Eventdev PMD * Added dpdk-test-eventdev test application * from 17.05: * Added mbuf raw free API * Added free Tx mbuf on demand API * Added VFIO hotplug support * Added PowerPC support for i40e and its vector PMD * Added VF max bandwidth setting in i40e * Added LiquidIO network PMD * Added support for NXP DPAA2 Network PMD * Added support for NXP DPAA2 - FSLMC bus * Added support for the Wind River Systems AVP PMD * Added vmxnet3 version 3 support * Added MTU feature support to Virtio and Vhost * Added event driven programming model library (rte_eventdev) * Added Software Eventdev PMD * Added Cavium OCTEONTX Eventdev PMD * Added NXP DPAA2 SEC crypto PMD * from 17.02: * Added generic EAL API for I/O device memory read/write operations * Added VF Daemon (VFD) for i40e. - EXPERIMENTAL * Added generic flow API (rte_flow) * Added APIs for MACsec offload support to the ixgbe PMD * Added Solarflare libefx-based network PMD. * Added support for Mellanox ConnectX-5 adapters (mlx5) * Added ARMv8 crypto PMD * Added crypto performance test application * more details can be found in http://dpdk.org/doc/guides/rel_notes/release_17_08.html http://dpdk.org/doc/guides/rel_notes/release_17_05.html http://dpdk.org/doc/guides/rel_notes/release_17_02.html [-0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch - 0003-kni-define-HAVE_TRANS_START_HELPER-for-SLES12SP3.patch - 0004-net-thunderx-sync-mailbox-definitions-with-Linux-PF-.patch - 0005-kni-fix-build-with-gcc-7.1.patch - 0006-kni-fix-ethtool-build-with-kernel-4.11.patch - 0007-igb_uio-switch-to-new-irq-function-for-MSI-X.patch] - Use updated patch to enable HAVE_TRANS_START_HELPER for SLE12SP3(bsc#1031705). [+ 0002-kni-fix-build-on-SLE12-SP3.patch]- Enabled CONFIG_RTE_MAJOR_ABI: libs SONAME equal the DPDK release version- Split libs into a subpackage to provide multiple installable versions on same sytem- Do not use obsolete pci_enable_msix for() kernel > 4.8 [+0006-kni-fix-ethtool-build-with-kernel-4.11.patch, +0007-igb_uio-switch-to-new-irq-function-for-MSI-X.patch]- Updated to 16.11.2 which provide bug fixes as below(fate#321541): * mbuf: fix missing includes in exported header * eal: fix debug macro redefinition * net/nfp: fix packet/data length conversion * net/i40e: fix setup when bulk is disabled * pci: fix device registration on FreeBSD * net/i40e: ensure vector mode is not used with QinQ * nic_uio: fix device binding at boot * net/bnx2x: fix transmit queue free threshold * net/vmxnet3: fix queue size changes * kni: fix build with kernel 4.11 * kni: fix possible memory leak * kni: fix crash caused by freeing mempool * net/i40e: fix allocation check * net/virtio: fix crash when closing twice * net/ixgbevf: set xstats id values * net/i40e: fix hash input set on X722 * eal/linux: fix build with glibc 2.25 * net/i40e: fix incorrect packet index reference * net/thunderx: fix 32-bit build * net/thunderx: fix build on FreeBSD * net/thunderx: fix deadlock in Rx path * net/ixgbe: fix setting MTU on stopped device * vfio: fix secondary process start * net/virtio-user: fix address on 32-bit system * net/virtio: fix MSI-X for modern devices * net/virtio: fix link status always down * net/ixgbe: fix multi-queue mode check in SRIOV mode * net/i40e/base: fix potential out of bound array access * vhost: fix false sharing * net/thunderx: fix stats access out of bounds * net/virtio: disable LSC interrupt if MSIX not enabled * net/i40e: fix mbuf alloc failed counter * net: fix stripped VLAN flag for offload emulation * vfio: fix disabling INTx * net/igb: fix VF MAC address setting * net/igb: fix VF MAC address setting * net/ixgbe: fix VF Rx mode for allmulticast disabled * net/bonding: fix updating slave link status * net/virtio-user: fix overflow * net/i40e: fix TC bitmap of VEB * net/ixgbe/base: fix build error * net/ixgbe: fix Rx queue blocking issue * net/ixgbe: fix all queues drop setting of DCB * net/ixgbe: fix TC bandwidth setting more details can be found in http://dpdk.org/ml/archives/stable/2017-May/001809.html [- 0005-kni-fix-build-with-kernel-4.11.patch] - use default gcc which is now gcc7 (bsc#1042372) [+0005-kni-fix-build-with-gcc-7.1.patch]- Add upstream patch to fix building against linux kernel 4.11 [+0005-kni-fix-build-with-kernel-4.11.patch]- sync mailbox definitions with Linux PF driver(bsc#1035993) [+0004-net-thunderx-sync-mailbox-definitions-with-Linux-PF-.patch]- Enable HAVE_TRANS_START_HELPER for SLE12SP3(bsc#1031705). [+0003-kni-define-HAVE_TRANS_START_HELPER-for-SLES12SP3.patch]- Fix dpdk KMP build fails(bsc#1031750) - enable igb_uio kernel module(fate#322394) - update kernel version for SLES12SP3 4.4.59 for bsc#1031705 [*0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch]- Enable HAVE_VF_VLAN_PROTO for SLE12SP3(bsc#1031705). [+0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch]- Disable dpdk-kmp package for ix86.- Upgrade to LTS release of 16.11 which contains fixes below(fate#321541): * app/test: fix symmetric session free in crypto perf tests * app/testpmd: fix check for invalid ports * app/testpmd: fix static build link ordering * crypto/aesni_gcm: fix IV size in capabilities * crypto/aesni_gcm: fix J0 padding bytes * crypto/aesni_mb: fix incorrect crypto session * crypto/openssl: fix extra bytes written at end of data * crypto/openssl: fix indentation in guide * crypto/qat: fix IV size in capabilities * crypto/qat: fix to avoid buffer overwrite in OOP case * cryptodev: fix crash on null dereference * cryptodev: fix loop in device query * devargs: reset driver name pointer on parsing failure * drivers/crypto: fix different auth/cipher keys * ethdev: check maximum number of queues for statistics * ethdev: fix extended statistics name index * ethdev: fix port data mismatched in multiple process model * ethdev: fix port lookup if none * ethdev: remove invalid function from version map * examples/ethtool: fix driver information * examples/ethtool: fix querying non-PCI devices * examples/ip_pipeline: fix coremask limitation * examples/ip_pipeline: fix parsing of pass-through pipeline * examples/l2fwd-crypto: fix overflow * examples/vhost: fix calculation of mbuf count * examples/vhost: fix lcore initialization * mempool: fix API documentation * mempool: fix stack handler dequeue * net/af_packet: fix fd use after free * net/bnx2x: fix Rx mode configuration * net/cxgbe/base: initialize variable before reading EEPROM * net/cxgbe: fix parenthesis on bitwise operation * net/ena: fix setting host attributes * net/enic: fix hardcoding of some flow director masks * net/enic: fix memory leak with oversized Tx packets * net/enic: remove unnecessary function parameter attributes * net/i40e: enable auto link update for 25G * net/i40e: fix Rx checksum flag * net/i40e: fix TC bandwidth definition * net/i40e: fix VF reset flow * net/i40e: fix checksum flag in x86 vector Rx * net/i40e: fix crash in close * net/i40e: fix deletion of all macvlan filters * net/i40e: fix ethertype filter on X722 * net/i40e: fix link update delay * net/i40e: fix logging for Tx free threshold check * net/i40e: fix segment number in reassemble process * net/i40e: fix wrong return value when handling PF message * net/i40e: fix xstats value mapping * net/i40evf: fix casting between structs * net/i40evf: fix reporting of imissed packets * net/ixgbe: fix blocked interrupts * net/ixgbe: fix received packets number for ARM * net/ixgbe: fix received packets number for ARM NEON * net/ixgbevf: fix max packet length * net/mlx5: fix RSS hash result for flows * net/mlx5: fix Rx packet validation and type * net/mlx5: fix Tx doorbell * net/mlx5: fix endianness in Tx completion queue * net/mlx5: fix inconsistent link status * net/mlx5: fix leak when starvation occurs * net/mlx5: fix link status query * net/mlx5: fix memory leak when parsing device params * net/mlx5: fix missing inline attributes * net/mlx5: fix updating total length of multi-packet send * net/mlx: fix IPv4 and IPv6 packet type * net/nfp: fix VLAN offload flags check * net/nfp: fix typo in Tx offload capabilities * net/pcap: fix timestamps in output pcap file * net/qede/base: fix FreeBSD build * net/qede: add vendor/device id info * net/qede: fix PF fastpath status block index * net/qede: fix filtering code * net/qede: fix function declaration * net/qede: fix per queue statisitics * net/qede: fix resource leak * net/vhost: fix socket file deleted on stop * net/vhost: fix unix socket not removed as closing * net/virtio-user: fix not properly reset device * net/virtio-user: fix wrongly get/set features * net/virtio: fix build without virtio-user * net/virtio: fix crash when number of virtio devices > 1 * net/virtio: fix multiple process support * net/virtio: fix performance regression due to TSO * net/virtio: fix rewriting LSC flag * net/virtio: fix wrong Rx/Tx method for secondary process * net/virtio: optimize header reset on any layout * net/virtio: store IO port info locally * net/virtio: store PCI operators pointer locally * net/vmxnet3: fix Rx deadlock * pci: fix check of mknod * pmdinfogen: fix endianness with cross-compilation * pmdinfogen: fix null dereference * sched: fix crash when freeing port * usertools: fix active interface detection when binding * vdev: fix detaching with alias * vfio: fix file descriptor leak in multi-process * vhost: allow many vhost-user ports * vhost: do not GSO when no header is present * vhost: fix dead loop in enqueue path * vhost: fix guest/host physical address mapping * vhost: fix long stall of negotiation * vhost: fix memory leak- Fix broken dpdk-pmd/* soft links(bsc#1026804).- Do not disable cryptodev as EXPREMENTAL tag has been removed. - Remove CONFIG_RTE_LIBRTE_MBUF_OFFLOAD as cryptodev is not depending on it anymore and its removed from the upstream.- Enable rte_kni kernel module for dpdk(fate#322394). [+preamble] - Build dpdk-thunderx only for aarch64- Update to version 16.11(fate#321541). Some of the new features are listed below: * Added software parser for packet type. * Improved offloads support in mbuf. * Added vhost-user dequeue zero copy support. * Added vhost-user indirect descriptors support. * Added vhost PMD xstats. * Added virtio NEON support for ARM. * Updated the ixgbe base driver. * Added APIs for VF management to the ixgbe PMD. * Updated the enic driver. * Added openssl PMD. * Added support for new gcc -march option. Detailed changes can be obtained from http://dpdk.org/doc/guides/rel_notes/release_16_11.html - Resolved fixes in the updated versions are : * enic: Fixed several flow director issues. * enic: Fixed inadvertent setting of L4 checksum ptype on ICMP packets. * enic: Fixed high driver overhead when servicing Rx queues beyond the first.- Added gcc-6 as default compiler for CRC/mtune & other optimizations. - Fix possible parallel installation of dpdk subpackages.- Add pre_checkin.sh to generate the dpdk-thunderx.spec file- Fixed paths using %{name} to have the dpdk.spec aligned with dpdk-thunderx.spec- Added back in all the architectures to keep .spec files aligned * Driving thunderx platform architectural dependency via the ExclusiveArch tag- Added support to build code for Thunderx platform(fate#321960). - Introduced new dpdk-thunderx.spec file: * Removed architectures not supporting Thunderx platform (e.g. x86) * Added dependency on gcc v5.0 for armv8a-crc- Update to version 16.07.2. Some of the fixes are listed below: * ethdev: prevent duplicate event callback * hash: fix bucket size usage * hash: fix unlimited cuckoo path * lpm: fix freeing memory * lpm: fix freeing unused sub-table on rule delete * mempool: fix leak if populate fails * mempool: fix search of maximum contiguous pages * pci: fix probing error if no driver found * net/bnx2x: fix maximum PF queues * net/bnxt: fix bit shift size * net/bnxt: fix crash when closing * net/enic: fix Rx queue index when not using Rx scatter * net/enic: fix crash on MTU update or Rx queue reconfigure * net/enic: fix crash with removed flow director filters * net/enic: fix max packet length check * net/enic: fix multi-queue Rx performance * net/enic: revert truncated packets counter fix * net/fm10k: fix VF Tx queue initialization * net/i40e: fix Rx hang when disable LLDP * net/ixgbe: fix VF registers * net/thunderx: fix Tx checksum handling * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides-16.07/rel_notes/release_16_07.html#id2]- Update to version 16.07.1. Some of the fixes are listed below: * contigmem: zero all pages during mmap * crypto/null: fix key size increment value * hash: fix false zero signature key hit lookup * mem: fix crash on hugepage mapping error * mbuf: fix error handling on pool creation * net/e1000: fix returned number of available Rx descriptors * net/enic: fix freeing memory for descriptor ring * net/i40e: fix dropping packets with ethertype 0x88A8 * net/i40e: fix mbuf leak during Rx queue release * net/i40e: fix null pointer dereferences when using VMDq+RSS * net/ixgbe/base: fix possible corruption of shadow RAM * net/ixgbe: fix VF reset to apply to correct VF * net/virtio_user: fix error management during init * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides-16.07/rel_notes/release_16_07.html#fixes-in-16-07-01-stable-release]- Drop code for generating our own linker script. * Commit 948fd64befc3 (" mk: replace the combined library with a linker script") added upstream support for building and installing a linker script so we drop our code from the spec file which generated a much larger and possibly broken linker script resulting to linking issues (boo#1002534)- Update to version 16.07. Some of the new features are listed below: * Removed the mempool cache memory if caching is not being used. * Added mempool external cache for non-EAL thread. * Changed the memory allocation scheme in the mempool library. * Added a new driver for Broadcom NetXtreme-C devices. * Added a new driver for ThunderX nicvf devices. * Added mailbox interrupt support for ixgbe and igb VFs. * Updated the ixgbe base driver. * Updated the i40e base driver. * Updated the enic driver. * Updated the mlx5 driver. * Added support for virtio on IBM POWER8. * Added support for Virtio in containers. * Added vhost-user client mode. * Added NSH packet recognition in i40e. * Added AES-CTR support to AESNI MB PMD. * Added AES counter mode support for Intel QuickAssist devices. * Added KASUMI SW PMD. * Added multi-writer support for RTE Hash with Intel TSX. * Improved IP Pipeline Application. * Added keepalive enhancements. * Added packet capture framework. * Added floating VEB support for i40e PF driver. * Added support for live migration of a VM with SRIOV VF. * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides/rel_notes/release_16_07.html - http://dpdk.org/browse/dpdk/tree/doc/guides/rel_notes/release_16_07.rst - Or the doc/guides/rel_notes/release_16_07.rst file in the released tarball.] - Removed patches that are already avilable in dpdk-16.07 [ -0002-examples-ip_pipeline-fix-implicit-declaration-of-fun.patch - 0003-mk-fix-external-shared-library-dependencies-of-libraries.patch - 0004-54f9e32-vhost-handle-dirty-pages-logging-request.patch - 0005-d293dac-vhost-claim-support-of-guest-announce.patch - 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch - 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch - 0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch - 0009-bonding-copy-entire-config-structure-in-mode-4.patch - 0010-bonding-fix-active-slaves-with-no-primary.patch - 0011-bonding-do-not-ignore-multicast-in-mode-4.patch - 0012-bonding-do-not-activate-slave-twice.patch - 0013-bonding-fix-crash-when-no-slave-device.patch - 0014-bonding-fix-detach-of-bonded-device.patch - 0015-bonding-fix-detach-of-slave-devices.patch - 0016-eal-linux-support-built-in-kernel-modules.patch - 0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch - 0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch - 0019-i40e-base-fix-driver-load-failure.patch - 0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch - 0021-i40e-fix-inverted-check-for-no-refcount.patch - 0022-i40e-fix-overflow.patch - 0023-i40e-fix-VLAN-filtering.patch - 0024-mempool-fix-leak-when-creation-fails.patch - 0025-pcap-fix-captured-frame-length.patch - 0026-port-fix-crash-for-ethdev-writer-nodrop.patch - 0027-port-fix-crash-for-ring-writer-nodrop.patch - 0028-tools-fix-unbinding-failure-handling.patch - 0029-tools-support-Python-3-in-bind-script.patch - 0030-tools-support-binding-to-built-in-kernel-modules.patch - 0031-vhost-fix-leak-of-fds-and-mmaps.patch - 0032-virtio-fix-crash-in-statistics-functions.patch - 0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch - 0034-virtio-fix-restart.patch - 0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch - 0036-examples-fix-build-dependencies.patch - 0037-examples-ethtool-fix-build.patch - 0099-mk-fix-gcc-5-version-on-suse.patch - 0100-kni-fix-build-with-gcc-6.patch - 0101-ixgbe-fix-uninitialized-warning.patch - 0102-ixgbe-fix-constant-sign-in-left-shift-operator.patch - 0103-e1000-base-Add-missing-braces-to-the-if-statements.patch - 0104-igb-fix-constant-sign-in-left-shift-operator.patch - 0105-e1000-fix-missing-link-interrupt-check-brackets.patch - 0106-app-test-fix-missing-brackets.patch - 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch ] - Created soft link for dpdk_proc_info and dpdk_nic_bind(from dpdk-procinfo, dpdk-devbind) to keep compatibility. - Added a new binary dpdk-pdump dpdk-procinfo- Add _constraints file to force build dpdk with sse3 enabled x86 machine(bsc#993462). - Enable compilation for ppc64le with the help of Rüdiger(ro@suse.de). - Enable example package for aarch64 using Rüdiger(ro@suse.de) changes. - Do not enable PMD_RING on ppc64le (missing rte_eth_from_rings). - Disable examples that need LPM which is disabled on non-x86. [+0036-examples-fix-build-dependencies.patch, +0037-examples-ethtool-fix-build.patch, +_constraints]- Added support for aarch64 compilation. [+0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch] - Disabled aarch64 dpdk-examples package for the time being as it contains lots of Intel specific code. - Added proper "Group" field for the subpackages .- Add upstream patches to fix building with gcc >= 6 * 0100-kni-fix-build-with-gcc-6.patch * 0101-ixgbe-fix-uninitialized-warning.patch * 0102-ixgbe-fix-constant-sign-in-left-shift-operator.patch * 0103-e1000-base-Add-missing-braces-to-the-if-statements.patch * 0104-igb-fix-constant-sign-in-left-shift-operator.patch * 0105-e1000-fix-missing-link-interrupt-check-brackets.patch * 0106-app-test-fix-missing-brackets.patch * 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch- Removed unwanted files(bsc#984437).- Added missing GPL-2.0 and LGPL-2.1 licenses.- Update tarball URL.- Applied all the fixes recommended by upstream for v2.2 stable release(bsc#981996). [+0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch, +0009-bonding-copy-entire-config-structure-in-mode-4.patch, +0010-bonding-fix-active-slaves-with-no-primary.patch, +0011-bonding-do-not-ignore-multicast-in-mode-4.patch, +0012-bonding-do-not-activate-slave-twice.patch, +0013-bonding-fix-crash-when-no-slave-device.patch, +0014-bonding-fix-detach-of-bonded-device.patch, +0015-bonding-fix-detach-of-slave-devices.patch, +0016-eal-linux-support-built-in-kernel-modules.patch, +0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch, +0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch, +0019-i40e-base-fix-driver-load-failure.patch, +0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch, +0021-i40e-fix-inverted-check-for-no-refcount.patch, +0022-i40e-fix-overflow.patch, +0023-i40e-fix-VLAN-filtering.patch, +0024-mempool-fix-leak-when-creation-fails.patch, +0025-pcap-fix-captured-frame-length.patch, +0026-port-fix-crash-for-ethdev-writer-nodrop.patch, +0027-port-fix-crash-for-ring-writer-nodrop.patch, +0028-tools-fix-unbinding-failure-handling.patch, +0029-tools-support-Python-3-in-bind-script.patch, +0030-tools-support-binding-to-built-in-kernel-modules.patch, +0031-vhost-fix-leak-of-fds-and-mmaps.patch, +0032-virtio-fix-crash-in-statistics-functions.patch, +0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch, +0034-virtio-fix-restart.patch]- Use fdupes to manage duplicate files- Create DPDK packages for 32 bit x86(bsc#977639).- Add upstream patch for the ixgbe driver * 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch: Fix VLAN filtering logic by adding the missing brackets in the 'if' statement.- DPDK is most common vhost-user backend, Adding upstream patches to help qemu vm live migration with vhost-user (fate#320713). [+ 0004-54f9e32-vhost-handle-dirty-pages-logging-request.patch + 0005-d293dac-vhost-claim-support-of-guest-announce.patch + 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch]- Move the combined library back to the devel package (bsc#975123) Ever since we dropped the CONFIG_RTE_BUILD_COMBINE_LIBS=y option, the libdpdk.so is no longer a shared object but rather a linker script generated by the spec file. This means that it is only used during linking and the linker will add the individual DPDK libraries to the DT_NEEDED tag on the dependent binaries.- Fix shared linking against libdpdk.so (bsc#975123) * Restore the 0003-mk-fix-external-shared-library-dependencies-of-libraries.patch patch which sets the correct dependencies for the shared libraries. * Drop CONFIG_RTE_BUILD_COMBINE_LIBS since a custom linker script is used to create and install a more lightweight version of libdpdk.so. * Include the combined libdpdk.so library to the regular package since it is also necessary during runtime.- Removed unwnated patch and reformated patch file names(bsc#974903). [- dpdk-2.2-dtneeded.patch, - dpdk-2.2-examples.patch, - enic-pun-fix.patch, - dpdk-2.2-warningflags.patch, + 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch + 0002-examples-ip_pipeline-fix-implicit-declaration-of-fun.patch] - Added CONFIG_RTE_BUILD_COMBINE_LIBS flags to club all all *.so into one library- Intial version 2.2.0(fate#319169)  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~18.11.918.11.9-lp151.3.8.1dpdkdpdk-docgpl-2.0.txtlgpl-2.1.txtapiannotated.htmlbc_s.pngbdwn.pngclasses.htmlclosed.pngcmdline_8h.htmlcmdline_8h_source.htmldeprecated.htmldir_082fac248c5922c9b524b8ed4e70e149.htmldir_09939486c1591516b984494000c3f64b.htmldir_099d2d80b969e7fd740b685b10b04f52.htmldir_0c4a44b1891135ef8e3f51c114dfc40e.htmldir_0d8d734d473b3cabdef3fd977d50bf3e.htmldir_13eeac154bac823f6a128588ab25dbd1.htmldir_14bc92f4b96c8519b376567118ac28b3.htmldir_1cb3d74b2ac9573f839cf243cfa1bc11.htmldir_1e371fc4c61fbb916177b5ec80f09b33.htmldir_2154f83b08d9713661fee356762316ea.htmldir_2164e25561eabb34d2bd0b8fdda0aeba.htmldir_280cb7b638dc3c2b18b46d48e8ebb350.htmldir_2874bf55c2200dd42774d2ba99074e53.htmldir_2d618a55e588f156483774ccf7b84b21.htmldir_312e5f832048176c38c17335b02a769f.htmldir_313f6c18e163a6142a5a3b7a38753440.htmldir_3241a1b75803951af6cc6f4dc301eca1.htmldir_35ae03c0f35416b98825df846a315ffa.htmldir_38b2ae9befb282239df37d3eaa427f9c.htmldir_41189bc1b2cbbbf473cc198cfd351ef1.htmldir_425fd6afd4367244802c1f095c2bd91a.htmldir_465fee731b4650f251292c02a329fbe4.htmldir_4a8e137842b96fe670fd4b2985ac89ae.htmldir_4b8e6c0016b49edb5f37b579e2023f82.htmldir_4d32756cfe7396f6b5bd672081496d5a.htmldir_5035da364ebbdb660400f67ccee744ab.htmldir_5188debcb509bb3663f061cc199aacda.htmldir_537c65abdcc57b6687fa40a177fe2911.htmldir_57fc2e9d988df25248b2986356737354.htmldir_5dafd97c0d945e0ac41aa1317e88fadc.htmldir_5e14993b9b1571024c777dcdb495ae81.htmldir_605c07ae6e02b3d13cc3bf92b6c5e54b.htmldir_6242a765e90f02e6b399e351944e02df.htmldir_662763201df975e54664a452d4fba6a4.htmldir_68cfe39720133e98f6e3a4074209d013.htmldir_80017d03a93d1c6dc29fe032f2756a58.htmldir_85ecb587e53a4a73ea61471f0b12c7cd.htmldir_87f0c34ed8400daf07819036fa8c39bd.htmldir_88c81b6ae6213964a6a534ee00cb813b.htmldir_91ededd9c78ad866b6d26d7a496929b6.htmldir_97aefd0d527b934f1d99a682da8fe6a9.htmldir_9b3d03c4eb61cec62b5319e654017f5d.htmldir_9cc23110c523433deab11cddab39a876.htmldir_9dfdb91ab02719873a80bed01b3a1a5d.htmldir_9eeab561cdff5b79b69e3433d5c0167e.htmldir_9f54a0e5c0accd58ed9d59aeb0a494b6.htmldir_a837e178e589be76a266a59d671110cc.htmldir_a914dcfab5ff2d1bc9dd6b873a7b604d.htmldir_ab1cf081cc3a382f37f4faf4624bc98a.htmldir_af404d643d0129b0e925f84c76faf17f.htmldir_bab3158cba42af609928ad7bdc323e4b.htmldir_c546cd799bdd92435e34b0203cfe1750.htmldir_d5965c24693e7b1ab7ad0767cbd37f15.htmldir_da18e332567afad90ca07324c52c5833.htmldir_e4d91705e579e3718a61980d7fa2b542.htmldir_e6bf5b3b5611bc8c19dd42f833c7eb40.htmldir_eaabdb77807ddb33c9f95a20e00c6648.htmldir_ede7e24c7966ae13eacb9e9d5c8994f5.htmldir_f3c49864a69d49874faab6e12ff2e6f9.htmldir_f5e0cc2a752635854ee1050679b5092d.htmldir_f9bb17aa67306532eda035e0955b885e.htmldir_fd57c5f233fdd9e7da26a5e5f646d081.htmldir_fdd811c43070b66c424782ec94ee51d7.htmldoc.pngdoxy-api-index_8md_source.htmldoxygen.cssdoxygen.pngdynsections.jsexamples.htmlexamples_2bbdev_app_2main_8c-example.htmlexamples_2bond_2main_8c-example.htmlexamples_2cmdline_2commands_8c-example.htmlexamples_2cmdline_2main_8c-example.htmlexamples_2cmdline_2parse_obj_list_8c-example.htmlexamples_2distributor_2main_8c-example.htmlexamples_2ethtool_2ethtool-app_2ethapp_8c-example.htmlexamples_2ethtool_2ethtool-app_2main_8c-example.htmlexamples_2ethtool_2lib_2rte_ethtool_8c-example.htmlexamples_2eventdev_pipeline_2main_8c-example.htmlexamples_2eventdev_pipeline_2pipeline_worker_generic_8c-example.htmlexamples_2eventdev_pipeline_2pipeline_worker_tx_8c-example.htmlexamples_2exception_path_2main_8c-example.htmlexamples_2fips_validation_2fips_validation_8c-example.htmlexamples_2fips_validation_2fips_validation_aes_8c-example.htmlexamples_2fips_validation_2fips_validation_ccm_8c-example.htmlexamples_2fips_validation_2fips_validation_cmac_8c-example.htmlexamples_2fips_validation_2fips_validation_gcm_8c-example.htmlexamples_2fips_validation_2fips_validation_hmac_8c-example.htmlexamples_2fips_validation_2fips_validation_tdes_8c-example.htmlexamples_2fips_validation_2main_8c-example.htmlexamples_2flow_classify_2flow_classify_8c-example.htmlexamples_2flow_filtering_2flow_blocks_8c-example.htmlexamples_2flow_filtering_2main_8c-example.htmlexamples_2helloworld_2main_8c-example.htmlexamples_2ip_fragmentation_2main_8c-example.htmlexamples_2ip_pipeline_2action_8c-example.htmlexamples_2ip_pipeline_2cli_8c-example.htmlexamples_2ip_pipeline_2conn_8c-example.htmlexamples_2ip_pipeline_2cryptodev_8c-example.htmlexamples_2ip_pipeline_2kni_8c-example.htmlexamples_2ip_pipeline_2link_8c-example.htmlexamples_2ip_pipeline_2main_8c-example.htmlexamples_2ip_pipeline_2mempool_8c-example.htmlexamples_2ip_pipeline_2parser_8c-example.htmlexamples_2ip_pipeline_2pipeline_8c-example.htmlexamples_2ip_pipeline_2swq_8c-example.htmlexamples_2ip_pipeline_2tap_8c-example.htmlexamples_2ip_pipeline_2thread_8c-example.htmlexamples_2ip_pipeline_2tmgr_8c-example.htmlexamples_2ip_reassembly_2main_8c-example.htmlexamples_2ipsec-secgw_2esp_8c-example.htmlexamples_2ipsec-secgw_2ipsec-secgw_8c-example.htmlexamples_2ipsec-secgw_2ipsec_8c-example.htmlexamples_2ipsec-secgw_2parser_8c-example.htmlexamples_2ipsec-secgw_2rt_8c-example.htmlexamples_2ipsec-secgw_2sa_8c-example.htmlexamples_2ipsec-secgw_2sp4_8c-example.htmlexamples_2ipsec-secgw_2sp6_8c-example.htmlexamples_2ipv4_multicast_2main_8c-example.htmlexamples_2kni_2main_8c-example.htmlexamples_2l2fwd-cat_2cat_8c-example.htmlexamples_2l2fwd-cat_2l2fwd-cat_8c-example.htmlexamples_2l2fwd-crypto_2main_8c-example.htmlexamples_2l2fwd-jobstats_2main_8c-example.htmlexamples_2l2fwd-keepalive_2ka-agent_2main_8c-example.htmlexamples_2l2fwd-keepalive_2main_8c-example.htmlexamples_2l2fwd-keepalive_2shm_8c-example.htmlexamples_2l2fwd_2main_8c-example.htmlexamples_2l3fwd-acl_2main_8c-example.htmlexamples_2l3fwd-power_2main_8c-example.htmlexamples_2l3fwd-power_2perf_core_8c-example.htmlexamples_2l3fwd-vf_2main_8c-example.htmlexamples_2l3fwd_2l3fwd_em_8c-example.htmlexamples_2l3fwd_2l3fwd_lpm_8c-example.htmlexamples_2l3fwd_2main_8c-example.htmlexamples_2link_status_interrupt_2main_8c-example.htmlexamples_2load_balancer_2config_8c-example.htmlexamples_2load_balancer_2init_8c-example.htmlexamples_2load_balancer_2main_8c-example.htmlexamples_2load_balancer_2runtime_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_client_2client_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2args_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2init_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2main_8c-example.htmlexamples_2multi_process_2hotplug_mp_2commands_8c-example.htmlexamples_2multi_process_2hotplug_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2mp_commands_8c-example.htmlexamples_2multi_process_2symmetric_mp_2main_8c-example.htmlexamples_2netmap_compat_2bridge_2bridge_8c-example.htmlexamples_2netmap_compat_2lib_2compat_netmap_8c-example.htmlexamples_2packet_ordering_2main_8c-example.htmlexamples_2performance-thread_2common_2arch_2arm64_2ctx_8c-example.htmlexamples_2performance-thread_2common_2arch_2x86_2ctx_8c-example.htmlexamples_2performance-thread_2common_2lthread_8c-example.htmlexamples_2performance-thread_2common_2lthread_cond_8c-example.htmlexamples_2performance-thread_2common_2lthread_diag_8c-example.htmlexamples_2performance-thread_2common_2lthread_mutex_8c-example.htmlexamples_2performance-thread_2common_2lthread_sched_8c-example.htmlexamples_2performance-thread_2common_2lthread_tls_8c-example.htmlexamples_2performance-thread_2l3fwd-thread_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2pthread_shim_8c-example.htmlexamples_2ptpclient_2ptpclient_8c-example.htmlexamples_2qos_meter_2main_8c-example.htmlexamples_2qos_meter_2rte_policer_8c-example.htmlexamples_2qos_sched_2app_thread_8c-example.htmlexamples_2qos_sched_2args_8c-example.htmlexamples_2qos_sched_2cfg_file_8c-example.htmlexamples_2qos_sched_2cmdline_8c-example.htmlexamples_2qos_sched_2init_8c-example.htmlexamples_2qos_sched_2main_8c-example.htmlexamples_2qos_sched_2stats_8c-example.htmlexamples_2quota_watermark_2qw_2args_8c-example.htmlexamples_2quota_watermark_2qw_2init_8c-example.htmlexamples_2quota_watermark_2qw_2main_8c-example.htmlexamples_2quota_watermark_2qwctl_2commands_8c-example.htmlexamples_2quota_watermark_2qwctl_2qwctl_8c-example.htmlexamples_2rxtx_callbacks_2main_8c-example.htmlexamples_2server_node_efd_2node_2node_8c-example.htmlexamples_2server_node_efd_2server_2args_8c-example.htmlexamples_2server_node_efd_2server_2init_8c-example.htmlexamples_2server_node_efd_2server_2main_8c-example.htmlexamples_2service_cores_2main_8c-example.htmlexamples_2skeleton_2basicfwd_8c-example.htmlexamples_2tep_termination_2main_8c-example.htmlexamples_2tep_termination_2vxlan_8c-example.htmlexamples_2tep_termination_2vxlan_setup_8c-example.htmlexamples_2timer_2main_8c-example.htmlexamples_2vdpa_2main_8c-example.htmlexamples_2vhost_2main_8c-example.htmlexamples_2vhost_2virtio_net_8c-example.htmlexamples_2vhost_crypto_2main_8c-example.htmlexamples_2vhost_scsi_2scsi_8c-example.htmlexamples_2vhost_scsi_2vhost_scsi_8c-example.htmlexamples_2vm_power_manager_2channel_manager_8c-example.htmlexamples_2vm_power_manager_2channel_monitor_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2main_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2parse_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2vm_power_cli_guest_8c-example.htmlexamples_2vm_power_manager_2main_8c-example.htmlexamples_2vm_power_manager_2oob_monitor_nop_8c-example.htmlexamples_2vm_power_manager_2oob_monitor_x86_8c-example.htmlexamples_2vm_power_manager_2parse_8c-example.htmlexamples_2vm_power_manager_2power_manager_8c-example.htmlexamples_2vm_power_manager_2vm_power_cli_8c-example.htmlexamples_2vmdq_2main_8c-example.htmlexamples_2vmdq_dcb_2main_8c-example.htmlfiles.htmlfolderclosed.pngfolderopen.pngfunctions.htmlfunctions_a.htmlfunctions_b.htmlfunctions_c.htmlfunctions_d.htmlfunctions_e.htmlfunctions_f.htmlfunctions_func.htmlfunctions_g.htmlfunctions_h.htmlfunctions_i.htmlfunctions_k.htmlfunctions_l.htmlfunctions_m.htmlfunctions_n.htmlfunctions_o.htmlfunctions_p.htmlfunctions_q.htmlfunctions_r.htmlfunctions_s.htmlfunctions_t.htmlfunctions_u.htmlfunctions_v.htmlfunctions_vars.htmlfunctions_vars_a.htmlfunctions_vars_b.htmlfunctions_vars_c.htmlfunctions_vars_d.htmlfunctions_vars_e.htmlfunctions_vars_f.htmlfunctions_vars_g.htmlfunctions_vars_h.htmlfunctions_vars_i.htmlfunctions_vars_k.htmlfunctions_vars_l.htmlfunctions_vars_m.htmlfunctions_vars_n.htmlfunctions_vars_o.htmlfunctions_vars_p.htmlfunctions_vars_q.htmlfunctions_vars_r.htmlfunctions_vars_s.htmlfunctions_vars_t.htmlfunctions_vars_u.htmlfunctions_vars_v.htmlfunctions_vars_w.htmlfunctions_vars_x.htmlfunctions_vars_y.htmlfunctions_w.htmlfunctions_x.htmlfunctions_y.htmlglobals.htmlglobals_a.htmlglobals_b.htmlglobals_c.htmlglobals_d.htmlglobals_defs.htmlglobals_defs_b.htmlglobals_defs_c.htmlglobals_defs_d.htmlglobals_defs_e.htmlglobals_defs_i.htmlglobals_defs_l.htmlglobals_defs_m.htmlglobals_defs_o.htmlglobals_defs_p.htmlglobals_defs_r.htmlglobals_defs_s.htmlglobals_defs_u.htmlglobals_defs_v.htmlglobals_e.htmlglobals_enum.htmlglobals_eval.htmlglobals_eval_e.htmlglobals_eval_f.htmlglobals_eval_i.htmlglobals_eval_m.htmlglobals_eval_r.htmlglobals_eval_s.htmlglobals_eval_w.htmlglobals_f.htmlglobals_func.htmlglobals_func_c.htmlglobals_func_e.htmlglobals_func_i.htmlglobals_func_p.htmlglobals_func_r.htmlglobals_func_s.htmlglobals_func_t.htmlglobals_h.htmlglobals_i.htmlglobals_l.htmlglobals_m.htmlglobals_o.htmlglobals_p.htmlglobals_r.htmlglobals_s.htmlglobals_t.htmlglobals_type.htmlglobals_type_c.htmlglobals_type_d.htmlglobals_type_e.htmlglobals_type_h.htmlglobals_type_l.htmlglobals_type_m.htmlglobals_type_p.htmlglobals_type_r.htmlglobals_type_s.htmlglobals_type_u.htmlglobals_u.htmlglobals_v.htmlglobals_vars.htmlglobals_w.htmlindex.htmljquery.jsmenu.jsmenudata.jsnav_f.pngnav_g.pngnav_h.pngopen.pngpages.htmlrte__acl_8h.htmlrte__acl_8h_source.htmlrte__acl__osdep_8h.htmlrte__acl__osdep_8h_source.htmlrte__alarm_8h.htmlrte__alarm_8h_source.htmlrte__approx_8h.htmlrte__approx_8h_source.htmlrte__arp_8h.htmlrte__arp_8h_source.htmlrte__atomic_8h.htmlrte__atomic_8h_source.htmlrte__bbdev_8h.htmlrte__bbdev_8h_source.htmlrte__bbdev__op_8h.htmlrte__bbdev__op_8h_source.htmlrte__bbdev__pmd_8h.htmlrte__bbdev__pmd_8h_source.htmlrte__bitmap_8h.htmlrte__bitmap_8h_source.htmlrte__bitrate_8h_source.htmlrte__bpf_8h.htmlrte__bpf_8h_source.htmlrte__bpf__ethdev_8h.htmlrte__bpf__ethdev_8h_source.htmlrte__branch__prediction_8h.htmlrte__branch__prediction_8h_source.htmlrte__bus_8h.htmlrte__bus_8h_source.htmlrte__byteorder_8h.htmlrte__byteorder_8h_source.htmlrte__cfgfile_8h.htmlrte__cfgfile_8h_source.htmlrte__class_8h.htmlrte__class_8h_source.htmlrte__cmp__arm64_8h_source.htmlrte__cmp__x86_8h_source.htmlrte__common_8h.htmlrte__common_8h_source.htmlrte__comp_8h.htmlrte__comp_8h_source.htmlrte__compat_8h_source.htmlrte__compressdev_8h.htmlrte__compressdev_8h_source.htmlrte__compressdev__internal_8h_source.htmlrte__compressdev__pmd_8h.htmlrte__compressdev__pmd_8h_source.htmlrte__cpuflags_8h.htmlrte__cpuflags_8h_source.htmlrte__crc__arm64_8h.htmlrte__crc__arm64_8h_source.htmlrte__crypto_8h.htmlrte__crypto_8h_source.htmlrte__crypto__asym_8h.htmlrte__crypto__asym_8h_source.htmlrte__crypto__sym_8h.htmlrte__crypto__sym_8h_source.htmlrte__cryptodev_8h.htmlrte__cryptodev_8h_source.htmlrte__cryptodev__pmd_8h.htmlrte__cryptodev__pmd_8h_source.htmlrte__cryptodev__scheduler_8h.htmlrte__cryptodev__scheduler_8h_source.htmlrte__cryptodev__scheduler__operations_8h_source.htmlrte__cuckoo__hash_8h_source.htmlrte__cycles_8h.htmlrte__cycles_8h_source.htmlrte__debug_8h.htmlrte__debug_8h_source.htmlrte__dev_8h.htmlrte__dev_8h_source.htmlrte__dev__info_8h_source.htmlrte__devargs_8h.htmlrte__devargs_8h_source.htmlrte__distributor_8h.htmlrte__distributor_8h_source.htmlrte__distributor__private_8h.htmlrte__distributor__private_8h_source.htmlrte__distributor__v1705_8h.htmlrte__distributor__v1705_8h_source.htmlrte__distributor__v20_8h.htmlrte__distributor__v20_8h_source.htmlrte__dpaa2__mempool_8h.htmlrte__dpaa2__mempool_8h_source.htmlrte__eal_8h.htmlrte__eal_8h_source.htmlrte__eal__interrupts_8h.htmlrte__eal__interrupts_8h_source.htmlrte__eal__memconfig_8h_source.htmlrte__efd_8h.htmlrte__efd_8h_source.htmlrte__efd__arm64_8h_source.htmlrte__efd__x86_8h_source.htmlrte__errno_8h.htmlrte__errno_8h_source.htmlrte__esp_8h.htmlrte__esp_8h_source.htmlrte__eth__bond_8h.htmlrte__eth__bond_8h_source.htmlrte__eth__bond__8023ad_8h_source.htmlrte__eth__bond__8023ad__private_8h_source.htmlrte__eth__bond__alb_8h_source.htmlrte__eth__bond__private_8h_source.htmlrte__eth__ctrl_8h.htmlrte__eth__ctrl_8h_source.htmlrte__eth__softnic_8h_source.htmlrte__eth__softnic__internals_8h_source.htmlrte__ethdev_8h.htmlrte__ethdev_8h_source.htmlrte__ethdev__core_8h.htmlrte__ethdev__core_8h_source.htmlrte__ethdev__driver_8h.htmlrte__ethdev__driver_8h_source.htmlrte__ethdev__pci_8h_source.htmlrte__ethdev__vdev_8h_source.htmlrte__ether_8h.htmlrte__ether_8h_source.htmlrte__event__crypto__adapter_8h.htmlrte__event__crypto__adapter_8h_source.htmlrte__event__eth__rx__adapter_8h.htmlrte__event__eth__rx__adapter_8h_source.htmlrte__event__eth__tx__adapter_8h.htmlrte__event__eth__tx__adapter_8h_source.htmlrte__event__ring_8h.htmlrte__event__ring_8h_source.htmlrte__event__timer__adapter_8h.htmlrte__event__timer__adapter_8h_source.htmlrte__event__timer__adapter__pmd_8h.htmlrte__event__timer__adapter__pmd_8h_source.htmlrte__eventdev_8h.htmlrte__eventdev_8h_source.htmlrte__eventdev__pmd_8h.htmlrte__eventdev__pmd_8h_source.htmlrte__eventdev__pmd__pci_8h.htmlrte__eventdev__pmd__pci_8h_source.htmlrte__eventdev__pmd__vdev_8h.htmlrte__eventdev__pmd__vdev_8h_source.htmlrte__fbarray_8h.htmlrte__fbarray_8h_source.htmlrte__fbk__hash_8h.htmlrte__fbk__hash_8h_source.htmlrte__flow_8h.htmlrte__flow_8h_source.htmlrte__flow__classify_8h.htmlrte__flow__classify_8h_source.htmlrte__flow__classify__parse_8h_source.htmlrte__flow__driver_8h.htmlrte__flow__driver_8h_source.htmlrte__gre_8h_source.htmlrte__gro_8h.htmlrte__gro_8h_source.htmlrte__gso_8h.htmlrte__gso_8h_source.htmlrte__hash_8h.htmlrte__hash_8h_source.htmlrte__hash__crc_8h.htmlrte__hash__crc_8h_source.htmlrte__hexdump_8h.htmlrte__hexdump_8h_source.htmlrte__hypervisor_8h.htmlrte__hypervisor_8h_source.htmlrte__icmp_8h.htmlrte__icmp_8h_source.htmlrte__interrupts_8h.htmlrte__interrupts_8h_source.htmlrte__io_8h.htmlrte__io_8h_source.htmlrte__ip_8h.htmlrte__ip_8h_source.htmlrte__ip__frag_8h.htmlrte__ip__frag_8h_source.htmlrte__jhash_8h.htmlrte__jhash_8h_source.htmlrte__jobstats_8h_source.htmlrte__keepalive_8h.htmlrte__keepalive_8h_source.htmlrte__kni_8h.htmlrte__kni_8h_source.htmlrte__kni__fifo_8h_source.htmlrte__kvargs_8h.htmlrte__kvargs_8h_source.htmlrte__latencystats_8h.htmlrte__latencystats_8h_source.htmlrte__launch_8h.htmlrte__launch_8h_source.htmlrte__lcore_8h.htmlrte__lcore_8h_source.htmlrte__log_8h.htmlrte__log_8h_source.htmlrte__lpm6_8h.htmlrte__lpm6_8h_source.htmlrte__lpm_8h.htmlrte__lpm_8h_source.htmlrte__lpm__altivec_8h_source.htmlrte__lpm__neon_8h_source.htmlrte__lpm__sse_8h_source.htmlrte__lru_8h_source.htmlrte__lru__arm64_8h_source.htmlrte__lru__x86_8h_source.htmlrte__malloc_8h.htmlrte__malloc_8h_source.htmlrte__malloc__heap_8h_source.htmlrte__mbuf_8h.htmlrte__mbuf_8h_source.htmlrte__mbuf__pool__ops_8h.htmlrte__mbuf__pool__ops_8h_source.htmlrte__mbuf__ptype_8h.htmlrte__mbuf__ptype_8h_source.htmlrte__member_8h.htmlrte__member_8h_source.htmlrte__member__ht_8h_source.htmlrte__member__vbf_8h_source.htmlrte__member__x86_8h_source.htmlrte__memcpy_8h.htmlrte__memcpy_8h_source.htmlrte__memory_8h.htmlrte__memory_8h_source.htmlrte__mempool_8h.htmlrte__mempool_8h_source.htmlrte__memzone_8h.htmlrte__memzone_8h_source.htmlrte__meter_8h.htmlrte__meter_8h_source.htmlrte__metrics_8h.htmlrte__metrics_8h_source.htmlrte__mpls_8h.htmlrte__mpls_8h_source.htmlrte__mtr_8h.htmlrte__mtr_8h_source.htmlrte__mtr__driver_8h.htmlrte__mtr__driver_8h_source.htmlrte__net_8h_source.htmlrte__net__crc_8h_source.htmlrte__option_8h.htmlrte__option_8h_source.htmlrte__pause_8h.htmlrte__pause_8h_source.htmlrte__pci_8h.htmlrte__pci_8h_source.htmlrte__pci__dev__feature__defs_8h_source.htmlrte__pci__dev__features_8h_source.htmlrte__pdump_8h.htmlrte__pdump_8h_source.htmlrte__per__lcore_8h.htmlrte__per__lcore_8h_source.htmlrte__pipeline_8h.htmlrte__pipeline_8h_source.htmlrte__pmd__bnxt_8h_source.htmlrte__pmd__dpaa2__cmdif_8h.htmlrte__pmd__dpaa2__cmdif_8h_source.htmlrte__pmd__dpaa2__qdma_8h.htmlrte__pmd__dpaa2__qdma_8h_source.htmlrte__pmd__dpaa_8h.htmlrte__pmd__dpaa_8h_source.htmlrte__pmd__i40e_8h.htmlrte__pmd__i40e_8h_source.htmlrte__pmd__ixgbe_8h.htmlrte__pmd__ixgbe_8h_source.htmlrte__port_8h.htmlrte__port_8h_source.htmlrte__port__ethdev_8h.htmlrte__port__ethdev_8h_source.htmlrte__port__fd_8h.htmlrte__port__fd_8h_source.htmlrte__port__frag_8h.htmlrte__port__frag_8h_source.htmlrte__port__in__action_8h.htmlrte__port__in__action_8h_source.htmlrte__port__kni_8h.htmlrte__port__kni_8h_source.htmlrte__port__ras_8h.htmlrte__port__ras_8h_source.htmlrte__port__ring_8h.htmlrte__port__ring_8h_source.htmlrte__port__sched_8h.htmlrte__port__sched_8h_source.htmlrte__port__source__sink_8h.htmlrte__port__source__sink_8h_source.htmlrte__port__sym__crypto_8h.htmlrte__port__sym__crypto_8h_source.htmlrte__power_8h.htmlrte__power_8h_source.htmlrte__power__empty__poll_8h.htmlrte__power__empty__poll_8h_source.htmlrte__prefetch_8h.htmlrte__prefetch_8h_source.htmlrte__random_8h.htmlrte__random_8h_source.htmlrte__rawdev_8h.htmlrte__rawdev_8h_source.htmlrte__rawdev__pmd_8h.htmlrte__rawdev__pmd_8h_source.htmlrte__reciprocal_8h_source.htmlrte__red_8h.htmlrte__red_8h_source.htmlrte__reorder_8h.htmlrte__reorder_8h_source.htmlrte__ring_8h.htmlrte__ring_8h_source.htmlrte__ring__c11__mem_8h_source.htmlrte__ring__generic_8h_source.htmlrte__rwlock_8h.htmlrte__rwlock_8h_source.htmlrte__sched_8h.htmlrte__sched_8h_source.htmlrte__sched__common_8h_source.htmlrte__sctp_8h.htmlrte__sctp_8h_source.htmlrte__security_8h.htmlrte__security_8h_source.htmlrte__security__driver_8h.htmlrte__security__driver_8h_source.htmlrte__service_8h.htmlrte__service_8h_source.htmlrte__service__component_8h_source.htmlrte__spinlock_8h.htmlrte__spinlock_8h_source.htmlrte__string__fns_8h.htmlrte__string__fns_8h_source.htmlrte__table_8h.htmlrte__table_8h_source.htmlrte__table__acl_8h.htmlrte__table__acl_8h_source.htmlrte__table__action_8h.htmlrte__table__action_8h_source.htmlrte__table__array_8h.htmlrte__table__array_8h_source.htmlrte__table__hash_8h.htmlrte__table__hash_8h_source.htmlrte__table__hash__cuckoo_8h.htmlrte__table__hash__cuckoo_8h_source.htmlrte__table__hash__func_8h_source.htmlrte__table__hash__func__arm64_8h_source.htmlrte__table__lpm_8h.htmlrte__table__lpm_8h_source.htmlrte__table__lpm__ipv6_8h.htmlrte__table__lpm__ipv6_8h_source.htmlrte__table__stub_8h.htmlrte__table__stub_8h_source.htmlrte__tailq_8h.htmlrte__tailq_8h_source.htmlrte__tcp_8h.htmlrte__tcp_8h_source.htmlrte__telemetry_8h.htmlrte__telemetry_8h_source.htmlrte__telemetry__internal_8h_source.htmlrte__telemetry__parser_8h_source.htmlrte__telemetry__socket__tests_8h_source.htmlrte__test_8h_source.htmlrte__thash_8h.htmlrte__thash_8h_source.htmlrte__time_8h_source.htmlrte__timer_8h.htmlrte__timer_8h_source.htmlrte__tm_8h.htmlrte__tm_8h_source.htmlrte__tm__driver_8h.htmlrte__tm__driver_8h_source.htmlrte__udp_8h.htmlrte__udp_8h_source.htmlrte__uuid_8h.htmlrte__uuid_8h_source.htmlrte__vdpa_8h.htmlrte__vdpa_8h_source.htmlrte__vect_8h.htmlrte__vect_8h_source.htmlrte__version_8h.htmlrte__version_8h_source.htmlrte__vfio_8h.htmlrte__vfio_8h_source.htmlrte__vhost_8h.htmlrte__vhost_8h_source.htmlrte__vhost__crypto_8h_source.htmlsplitbar.pngstructarp__hdr.htmlstructarp__ipv4.htmlstructbond__dev__private.htmlstructbond__ethdev__slave__ports.htmlstructbond__rx__queue.htmlstructesp__hdr.htmlstructether__addr.htmlstructether__hdr.htmlstructgre__hdr.htmlstructicmp__hdr.htmlstructip__frag__tbl__stat.htmlstructipv4__hdr.htmlstructipv6__hdr.htmlstructlacpdu.htmlstructlacpdu__header.htmlstructlcore__config.htmlstructmalloc__heap.htmlstructmapped__pci__resource.htmlstructmpls__hdr.htmlstructpci__map.htmlstructpipeline__params.htmlstructpmd__internals.htmlstructpmd__params.htmlstructport.htmlstructrte__acl__config.htmlstructrte__acl__field.htmlstructrte__acl__field__def.htmlstructrte__acl__param.htmlstructrte__acl__rule__data.htmlstructrte__atomic16__t.htmlstructrte__atomic32__t.htmlstructrte__atomic64__t.htmlstructrte__bbdev__dec__op.htmlstructrte__bbdev__driver__info.htmlstructrte__bbdev__enc__op.htmlstructrte__bbdev__info.htmlstructrte__bbdev__op__cap__turbo__dec.htmlstructrte__bbdev__op__dec__tb__params.htmlstructrte__bbdev__op__enc__tb__params.htmlstructrte__bbdev__op__turbo__enc.htmlstructrte__bbdev__ops.htmlstructrte__bbdev__queue__conf.htmlstructrte__bbdev__queue__info.htmlstructrte__bbdev__stats.htmlstructrte__bitmap.htmlstructrte__bpf__arg.htmlstructrte__bpf__jit.htmlstructrte__bpf__prm.htmlstructrte__bpf__xsym.htmlstructrte__bus.htmlstructrte__bus__conf.htmlstructrte__cfgfile__entry.htmlstructrte__cfgfile__parameters.htmlstructrte__class.htmlstructrte__comp__compress__xform.htmlstructrte__comp__decompress__xform.htmlstructrte__comp__deflate__params.htmlstructrte__comp__op.htmlstructrte__comp__xform.htmlstructrte__compressdev.htmlstructrte__compressdev__capabilities.htmlstructrte__compressdev__config.htmlstructrte__compressdev__data.htmlstructrte__compressdev__global.htmlstructrte__compressdev__info.htmlstructrte__compressdev__ops.htmlstructrte__compressdev__stats.htmlstructrte__config.htmlstructrte__crypto__asym__op.htmlstructrte__crypto__asym__xform.htmlstructrte__crypto__auth__xform.htmlstructrte__crypto__cipher__xform.htmlstructrte__crypto__dh__op__param.htmlstructrte__crypto__dh__xform.htmlstructrte__crypto__dsa__op__param.htmlstructrte__crypto__dsa__xform.htmlstructrte__crypto__mod__op__param.htmlstructrte__crypto__modex__xform.htmlstructrte__crypto__modinv__xform.htmlstructrte__crypto__op.htmlstructrte__crypto__op__pool__private.htmlstructrte__crypto__param__range.htmlstructrte__crypto__rsa__op__param.htmlstructrte__crypto__rsa__priv__key__qt.htmlstructrte__crypto__rsa__xform.htmlstructrte__crypto__sym__op.htmlstructrte__crypto__sym__xform.htmlstructrte__cryptodev.htmlstructrte__cryptodev__asym__capability__idx.htmlstructrte__cryptodev__asym__session.htmlstructrte__cryptodev__asymmetric__capability.htmlstructrte__cryptodev__asymmetric__xform__capability.htmlstructrte__cryptodev__capabilities.htmlstructrte__cryptodev__config.htmlstructrte__cryptodev__data.htmlstructrte__cryptodev__global.htmlstructrte__cryptodev__info.htmlstructrte__cryptodev__ops.htmlstructrte__cryptodev__qp__conf.htmlstructrte__cryptodev__scheduler.htmlstructrte__cryptodev__stats.htmlstructrte__cryptodev__sym__capability__idx.htmlstructrte__cryptodev__sym__session.htmlstructrte__cryptodev__symmetric__capability.htmlstructrte__dev__iterator.htmlstructrte__devargs.htmlstructrte__device.htmlstructrte__distributor__buffer.htmlstructrte__dpaa2__cmdif__context.htmlstructrte__driver.htmlstructrte__epoll__event.htmlstructrte__eth__conf.htmlstructrte__eth__dcb__info.htmlstructrte__eth__dcb__tc__queue__mapping.htmlstructrte__eth__desc__lim.htmlstructrte__eth__dev__info.htmlstructrte__eth__dev__module__info.htmlstructrte__eth__dev__portconf.htmlstructrte__eth__dev__tx__buffer.htmlstructrte__eth__devargs.htmlstructrte__eth__ethertype__filter.htmlstructrte__eth__event__ipsec__desc.htmlstructrte__eth__fc__conf.htmlstructrte__eth__fdir__action.htmlstructrte__eth__fdir__filter.htmlstructrte__eth__fdir__filter__info.htmlstructrte__eth__fdir__flex__conf.htmlstructrte__eth__fdir__flex__mask.htmlstructrte__eth__fdir__flow__ext.htmlstructrte__eth__fdir__info.htmlstructrte__eth__fdir__input.htmlstructrte__eth__fdir__masks.htmlstructrte__eth__fdir__stats.htmlstructrte__eth__flex__filter.htmlstructrte__eth__flex__payload__cfg.htmlstructrte__eth__global__cfg.htmlstructrte__eth__hash__filter__info.htmlstructrte__eth__hash__global__conf.htmlstructrte__eth__input__set__conf.htmlstructrte__eth__ipv4__flow.htmlstructrte__eth__ipv6__flow.htmlstructrte__eth__l2__flow.htmlstructrte__eth__l2__tunnel__conf.htmlstructrte__eth__link.htmlstructrte__eth__mac__filter.htmlstructrte__eth__mac__vlan__flow.htmlstructrte__eth__mirror__conf.htmlstructrte__eth__ntuple__filter.htmlstructrte__eth__pfc__conf.htmlstructrte__eth__rss__conf.htmlstructrte__eth__rss__reta__entry64.htmlstructrte__eth__rxconf.htmlstructrte__eth__rxmode.htmlstructrte__eth__rxq__info.htmlstructrte__eth__sctpv4__flow.htmlstructrte__eth__sctpv6__flow.htmlstructrte__eth__stats.htmlstructrte__eth__switch__info.htmlstructrte__eth__syn__filter.htmlstructrte__eth__tcpv4__flow.htmlstructrte__eth__tcpv6__flow.htmlstructrte__eth__thresh.htmlstructrte__eth__tunnel__filter__conf.htmlstructrte__eth__tunnel__flow.htmlstructrte__eth__txconf.htmlstructrte__eth__txmode.htmlstructrte__eth__txq__info.htmlstructrte__eth__udp__tunnel.htmlstructrte__eth__udpv4__flow.htmlstructrte__eth__udpv6__flow.htmlstructrte__eth__vlan__mirror.htmlstructrte__eth__vmdq__dcb__conf.htmlstructrte__eth__vmdq__rx__conf.htmlstructrte__eth__xstat.htmlstructrte__eth__xstat__name.htmlstructrte__event.htmlstructrte__event__crypto__adapter__conf.htmlstructrte__event__crypto__adapter__stats.htmlstructrte__event__crypto__request.htmlstructrte__event__dev__config.htmlstructrte__event__dev__info.htmlstructrte__event__dev__xstats__name.htmlstructrte__event__eth__rx__adapter__conf.htmlstructrte__event__eth__rx__adapter__queue__conf.htmlstructrte__event__eth__rx__adapter__stats.htmlstructrte__event__eth__tx__adapter__conf.htmlstructrte__event__eth__tx__adapter__stats.htmlstructrte__event__port__conf.htmlstructrte__event__queue__conf.htmlstructrte__event__ring.htmlstructrte__event__timer.htmlstructrte__event__timer__adapter__conf.htmlstructrte__event__timer__adapter__info.htmlstructrte__event__timer__adapter__stats.htmlstructrte__eventdev__global.htmlstructrte__eventdev__ops.htmlstructrte__fbk__hash__params.htmlstructrte__fbk__hash__table.htmlstructrte__fdir__conf.htmlstructrte__flow__action__count.htmlstructrte__flow__action__jump.htmlstructrte__flow__action__mark.htmlstructrte__flow__action__meter.htmlstructrte__flow__action__nvgre__encap.htmlstructrte__flow__action__of__pop__mpls.htmlstructrte__flow__action__of__push__mpls.htmlstructrte__flow__action__of__push__vlan.htmlstructrte__flow__action__of__set__mpls__ttl.htmlstructrte__flow__action__of__set__nw__ttl.htmlstructrte__flow__action__of__set__vlan__pcp.htmlstructrte__flow__action__of__set__vlan__vid.htmlstructrte__flow__action__phy__port.htmlstructrte__flow__action__port__id.htmlstructrte__flow__action__queue.htmlstructrte__flow__action__raw__decap.htmlstructrte__flow__action__raw__encap.htmlstructrte__flow__action__rss.htmlstructrte__flow__action__security.htmlstructrte__flow__action__set__ipv4.htmlstructrte__flow__action__set__ipv6.htmlstructrte__flow__action__set__mac.htmlstructrte__flow__action__set__tp.htmlstructrte__flow__action__set__ttl.htmlstructrte__flow__action__vf.htmlstructrte__flow__action__vxlan__encap.htmlstructrte__flow__attr.htmlstructrte__flow__classifier__params.htmlstructrte__flow__classify__ipv4__5tuple.htmlstructrte__flow__classify__stats.htmlstructrte__flow__classify__table__params.htmlstructrte__flow__conv__rule.htmlstructrte__flow__desc.htmlstructrte__flow__error.htmlstructrte__flow__expand__node.htmlstructrte__flow__expand__rss.htmlstructrte__flow__item.htmlstructrte__flow__item__any.htmlstructrte__flow__item__arp__eth__ipv4.htmlstructrte__flow__item__e__tag.htmlstructrte__flow__item__esp.htmlstructrte__flow__item__eth.htmlstructrte__flow__item__fuzzy.htmlstructrte__flow__item__geneve.htmlstructrte__flow__item__gre.htmlstructrte__flow__item__gtp.htmlstructrte__flow__item__icmp.htmlstructrte__flow__item__icmp6.htmlstructrte__flow__item__icmp6__nd__na.htmlstructrte__flow__item__icmp6__nd__ns.htmlstructrte__flow__item__icmp6__nd__opt.htmlstructrte__flow__item__icmp6__nd__opt__sla__eth.htmlstructrte__flow__item__icmp6__nd__opt__tla__eth.htmlstructrte__flow__item__ipv4.htmlstructrte__flow__item__ipv6.htmlstructrte__flow__item__ipv6__ext.htmlstructrte__flow__item__mark.htmlstructrte__flow__item__meta.htmlstructrte__flow__item__mpls.htmlstructrte__flow__item__nvgre.htmlstructrte__flow__item__phy__port.htmlstructrte__flow__item__port__id.htmlstructrte__flow__item__raw.htmlstructrte__flow__item__sctp.htmlstructrte__flow__item__tcp.htmlstructrte__flow__item__udp.htmlstructrte__flow__item__vf.htmlstructrte__flow__item__vlan.htmlstructrte__flow__item__vxlan.htmlstructrte__flow__item__vxlan__gpe.htmlstructrte__flow__ops.htmlstructrte__flow__query__count.htmlstructrte__gro__param.htmlstructrte__gso__ctx.htmlstructrte__hash.htmlstructrte__hash__bucket.htmlstructrte__hash__parameters.htmlstructrte__intr__conf.htmlstructrte__intr__handle.htmlstructrte__ip__frag__death__row.htmlstructrte__ip__frag__tbl.htmlstructrte__ipv4__tuple.htmlstructrte__ipv6__tuple.htmlstructrte__kni__conf.htmlstructrte__kni__ops.htmlstructrte__kvargs.htmlstructrte__kvargs__pair.htmlstructrte__logs.htmlstructrte__lpm6__config.htmlstructrte__lpm__config.htmlstructrte__malloc__socket__stats.htmlstructrte__mbuf.htmlstructrte__mbuf__ext__shared__info.htmlstructrte__mem__config.htmlstructrte__mem__resource.htmlstructrte__member__parameters.htmlstructrte__mempool.htmlstructrte__mempool__cache.htmlstructrte__mempool__info.htmlstructrte__mempool__memhdr.htmlstructrte__mempool__objhdr.htmlstructrte__mempool__objsz.htmlstructrte__mempool__ops.htmlstructrte__mempool__ops__table.htmlstructrte__memseg__list.htmlstructrte__memzone.htmlstructrte__meter__srtcm__params.htmlstructrte__meter__trtcm.htmlstructrte__meter__trtcm__params.htmlstructrte__metric__name.htmlstructrte__metric__value.htmlstructrte__mtr__capabilities.htmlstructrte__mtr__error.htmlstructrte__mtr__meter__profile.htmlstructrte__mtr__params.htmlstructrte__mtr__stats.htmlstructrte__net__hdr__lens.htmlstructrte__param__log2__range.htmlstructrte__pci__addr.htmlstructrte__pci__id.htmlstructrte__pipeline__params.htmlstructrte__pipeline__port__in__params.htmlstructrte__pipeline__port__in__stats.htmlstructrte__pipeline__port__out__params.htmlstructrte__pipeline__port__out__stats.htmlstructrte__pipeline__table__entry.htmlstructrte__pipeline__table__params.htmlstructrte__pipeline__table__stats.htmlstructrte__pktmbuf__pool__private.htmlstructrte__pmd__i40e__ddp__device__id.htmlstructrte__pmd__i40e__ddp__version.htmlstructrte__pmd__i40e__mb__event__param.htmlstructrte__pmd__i40e__pkt__template__action.htmlstructrte__pmd__i40e__pkt__template__conf.htmlstructrte__pmd__i40e__pkt__template__input.htmlstructrte__pmd__i40e__profile__info.htmlstructrte__pmd__i40e__profile__list.htmlstructrte__pmd__i40e__proto__info.htmlstructrte__pmd__i40e__ptype__info.htmlstructrte__pmd__i40e__queue__region__conf.htmlstructrte__pmd__ixgbe__mb__event__param.htmlstructrte__port__ethdev__reader__params.htmlstructrte__port__ethdev__writer__nodrop__params.htmlstructrte__port__ethdev__writer__params.htmlstructrte__port__fd__reader__params.htmlstructrte__port__fd__writer__nodrop__params.htmlstructrte__port__fd__writer__params.htmlstructrte__port__in__action__fltr__config.htmlstructrte__port__in__action__fltr__params.htmlstructrte__port__in__action__lb__config.htmlstructrte__port__in__action__lb__params.htmlstructrte__port__in__ops.htmlstructrte__port__in__stats.htmlstructrte__port__kni__reader__params.htmlstructrte__port__kni__writer__nodrop__params.htmlstructrte__port__kni__writer__params.htmlstructrte__port__out__ops.htmlstructrte__port__out__stats.htmlstructrte__port__ring__reader__frag__params.htmlstructrte__port__ring__reader__params.htmlstructrte__port__ring__writer__nodrop__params.htmlstructrte__port__ring__writer__params.htmlstructrte__port__ring__writer__ras__params.htmlstructrte__port__sched__reader__params.htmlstructrte__port__sched__writer__params.htmlstructrte__port__sink__params.htmlstructrte__port__source__params.htmlstructrte__port__sym__crypto__reader__params.htmlstructrte__port__sym__crypto__writer__nodrop__params.htmlstructrte__port__sym__crypto__writer__params.htmlstructrte__power__core__capabilities.htmlstructrte__qdma__attr.htmlstructrte__qdma__config.htmlstructrte__qdma__job.htmlstructrte__qdma__vq__stats.htmlstructrte__rawdev__ops.htmlstructrte__rawdev__xstats__name.htmlstructrte__red.htmlstructrte__red__config.htmlstructrte__red__params.htmlstructrte__ring.htmlstructrte__rwlock__t.htmlstructrte__sched__port__params.htmlstructrte__sched__queue__stats.htmlstructrte__sched__subport__stats.htmlstructrte__security__capability.htmlstructrte__security__capability__idx.htmlstructrte__security__ctx.htmlstructrte__security__ipsec__sa__options.htmlstructrte__security__ipsec__tunnel__param.htmlstructrte__security__ipsec__xform.htmlstructrte__security__macsec__xform.htmlstructrte__security__ops.htmlstructrte__security__pdcp__xform.htmlstructrte__security__session__conf.htmlstructrte__service__spec.htmlstructrte__spinlock__recursive__t.htmlstructrte__spinlock__t.htmlstructrte__table__acl__params.htmlstructrte__table__acl__rule__add__params.htmlstructrte__table__acl__rule__delete__params.htmlstructrte__table__action__common__config.htmlstructrte__table__action__decap__params.htmlstructrte__table__action__dscp__table.htmlstructrte__table__action__dscp__table__entry.htmlstructrte__table__action__encap__config.htmlstructrte__table__action__encap__ether__params.htmlstructrte__table__action__encap__mpls__params.htmlstructrte__table__action__encap__params.htmlstructrte__table__action__encap__pppoe__params.htmlstructrte__table__action__encap__qinq__params.htmlstructrte__table__action__encap__vlan__params.htmlstructrte__table__action__encap__vxlan__params.htmlstructrte__table__action__ether__hdr.htmlstructrte__table__action__fwd__params.htmlstructrte__table__action__ipv4__header.htmlstructrte__table__action__ipv6__header.htmlstructrte__table__action__lb__config.htmlstructrte__table__action__lb__params.htmlstructrte__table__action__meter__profile.htmlstructrte__table__action__mpls__hdr.htmlstructrte__table__action__mtr__config.htmlstructrte__table__action__mtr__counters.htmlstructrte__table__action__mtr__counters__tc.htmlstructrte__table__action__mtr__params.htmlstructrte__table__action__mtr__tc__params.htmlstructrte__table__action__nat__config.htmlstructrte__table__action__nat__params.htmlstructrte__table__action__pppoe__hdr.htmlstructrte__table__action__stats__config.htmlstructrte__table__action__stats__counters.htmlstructrte__table__action__stats__params.htmlstructrte__table__action__sym__crypto__config.htmlstructrte__table__action__sym__crypto__params.htmlstructrte__table__action__tag__params.htmlstructrte__table__action__time__params.htmlstructrte__table__action__tm__config.htmlstructrte__table__action__tm__params.htmlstructrte__table__action__ttl__config.htmlstructrte__table__action__ttl__counters.htmlstructrte__table__action__ttl__params.htmlstructrte__table__action__udp__header.htmlstructrte__table__action__vlan__hdr.htmlstructrte__table__action__vlo.htmlstructrte__table__action__vxlan__hdr.htmlstructrte__table__array__key.htmlstructrte__table__array__params.htmlstructrte__table__hash__cuckoo__params.htmlstructrte__table__hash__params.htmlstructrte__table__lpm__ipv6__key.htmlstructrte__table__lpm__ipv6__params.htmlstructrte__table__lpm__key.htmlstructrte__table__lpm__params.htmlstructrte__table__ops.htmlstructrte__table__stats.htmlstructrte__tailq__entry.htmlstructrte__tailq__head.htmlstructrte__timecounter.htmlstructrte__timer.htmlstructrte__tm__capabilities.htmlstructrte__tm__error.htmlstructrte__tm__level__capabilities.htmlstructrte__tm__node__capabilities.htmlstructrte__tm__node__params.htmlstructrte__tm__node__stats.htmlstructrte__tm__red__params.htmlstructrte__tm__shaper__params.htmlstructrte__tm__token__bucket.htmlstructrte__tm__wred__params.htmlstructrte__vdpa__dev__addr.htmlstructrte__vdpa__dev__ops.htmlstructrte__vdpa__device.htmlstructrte__vhost__mem__region.htmlstructrte__vhost__memory.htmlstructrte__vlan__filter__conf.htmlstructsctp__hdr.htmlstructslow__protocol.htmlstructslow__protocol__frame.htmlstructsoftnic__cryptodev__params.htmlstructsoftnic__link__params.htmlstructsoftnic__mempool__params.htmlstructsoftnic__mtr__meter__profile.htmlstructsoftnic__port__in__action__profile__params.htmlstructsoftnic__swq__params.htmlstructsoftnic__table__action__profile__params.htmlstructsoftnic__tap.htmlstructsoftnic__thread.htmlstructtcp__hdr.htmlstructudp__hdr.htmlstructvhost__device__ops.htmlstructvlan__hdr.htmlstructvxlan__gpe__hdr.htmlstructvxlan__hdr.htmlsync_off.pngsync_on.pngtab_a.pngtab_b.pngtab_h.pngtab_s.pngtabs.cssunionrte__distributor__buffer__v20.htmlunionrte__eth__fdir__flow.htmlunionrte__event__crypto__metadata.htmlunionrte__fbk__hash__entry.htmlunionrte__timer__status.htmlexamples.dox/usr/share/doc/packages//usr/share/doc/packages/dpdk-doc//usr/share/doc/packages/dpdk//usr/share/doc/packages/dpdk/api/-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.opensuse.org/openSUSE:Maintenance:14292/openSUSE_Leap_15.1_Update_ports/27546aefee0c6b9191afb4043092a567-dpdk-thunderx.openSUSE_Leap_15.1_Updatedrpmxz5aarch64-suse-linux         directoryASCII textHTML document, ASCII text, with very long linesPNG image data, 8 x 30, 8-bit/color RGBA, non-interlacedPNG image data, 7 x 8, 8-bit/color RGBA, non-interlacedPNG image data, 9 x 9, 8-bit/color RGBA, non-interlacedHTML document, ASCII textPNG image data, 24 x 22, 8-bit/color RGBA, non-interlacedPNG image data, 104 x 31, 8-bit/color RGBA, non-interlacedUTF-8 Unicode text, with very long linesPNG image data, 1 x 56, 8-bit/color RGB, non-interlacedPNG image data, 1 x 6, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 12, 8-bit/color RGB, non-interlacedHTML document, UTF-8 Unicode text, with very long linesPNG image data, 6 x 1024, 8-bit/color RGB, non-interlacedPNG image data, 24 x 24, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 36, 8-bit/color RGB, non-interlacedASCII text, with very long lines, with no line terminatorsutf-85e10108b43ce48fe2d2b44988fcfbbe8ff525dd67e7247c7931db08237dec388?@7zXZ !t/@W]"k%r=3Zu-A"] $^NI~:e9pS֊kL:+5c13_xX44iRC4lKR|0 T b B"gMdf>C2F<02b I&FRhI뭥.ZB+bQ\C\ KOz¥Z̲/kUW:xJ$R3ƁY8e i Z7hKŔ\ė&d2W$=~A'xV)` Yّw:Ci Vl따Q;B"DS#>ФTi`xoOv-:+j S!\pMoXU> c\Fz}zQ`zU(:B6H!1@ ((W4t9ĤV4%Uc53\珝!2dmHn.{$ye}Ug@:uDRq iaSo}ۖPH` NE (# (4uw2g9u hQWH0kDUƢhH ( S{w zR^XfԈ =0΢.~X_$4OJ[Q=kL^,h \"7 :!mQGcZForjGMؘXkW^ܩHY81uLƿ{7G!]OWLХs;ȗ^OƢLvY 93 ܺhڂaɚ,kͺpF6N Խq.zҋTT>w"n i=dʜywf* Ʉ\\N8f:I/LL wۡS-CnՍdwFh1Z":A|2]n苅%BPٰ̽΀v7> Ay-`<_u.uߤGɤv#@.\2"AEdz uo\=*`KZp0T0NU.VEһ~Dp)WŸIJB weݶM El<1F7hT)P]زȍEcݍ?g u឵hjhM%GuRC籰(N[ɛ_qx;v9zk 4>1-"NϴJ! +}Yh->P,]UqOBtBo]EV.9Xq*&ɐEInvŴF ioT 4&{\J]'n67h~pP+;v['Į` v"^ݦT. ؁4,O3 pɫn/ի-;SSǢcQ\| t`p ȄO,6yp9)N9RϘP"M9e]P Na4H:91N!Jw3 ;vI՜ϻq:y4mh#KS{樫?Nn'|".K*(-nT.+ Zۻ^ǧH09 N*2Δy :=*[pv9CY`]w)p+&-: Ҁ]~GC(e._Z.A6w{ȶ<`vGv?5i"+}[A'mK_^[k+CnV!2OObJIv؍*dqv{?a  w{VyCp8^U,d^q9wȧx;`} mgçN^Il6xߊq++2K9C% ^40 SܦPH VH@gɳk,B3{?=q(t2M)\.#=i9c0|g'$β%c|j_RJK0Fq, A cK5G/BcQgײ7_TUMK²DssUKpja51 |Ϙk($~c& >Heߨ* gxt H~*+ӅKc:(?u4SNrfZssg"l*kGŧc ]8?/ U\|$}TQEwN 4+/}t} \2wtzD7%Jsm ,G| ˿-M(PG1*nfSdn>VGo:)?d.'*I!# wE`ܻXNI$_2rq;ߨ.bNYF1PY`X*6/M,!k(.G*zG(\B߭u!ui"'F9 y;Z#").6)al"XY[M˽XYkz%dtn]7ʔ׎T(:&BU5ڱv(lE &Q̀Tyn(sp!fy RoNKp S]Nϳwá%Ժ}O1) I-TEj>*Zi$<@RHȿ mg,D,sRM{m2P_ YE1JH8`\ͲH[4W%xaHn, \&KmO-HаK x2V!&êz!olF{dWi3o5A}6QT=e'Br/&6]7p%˹mAk?5n!HU"raȷr)g]3фPҝm+?Vcl$|F;w.]mo)K/6GTXXyb%@~+fd\u_|fDm.ڝ7lo:LI+6_^u1AZpPDXHqO%AT)0Jl0n^ !m-8# JP[YU.;Y7qTVU9O(?SRKW=n^+pr8,.:BvIY&Q7;I-yqh[ԨɒK99a?>y&B4nʊrzؖ\I5|ߢ-܅,0\}uWDjғ`1 F>jz$)zV$Lғ>p!x!$Za%6\-eJ<AN/k݀wRs"^w#/aOBGtG _@.A$| #Vsj飢HYz߳S5GqLRU2 Zsy.r\ Ȳ0J,7 e S3<^4*-|Vy_6jzv*ii/sa`elsJwRE(t(} ڮV.,8Oh`b[5ϑv˜[g鉕wƢLLXi1Ƒޮ<4V KFQ`b۔Hc^XP  mYsrG4y`7<'P:频KǞj|C{wӧb})#Z Vd )V<[%)OumBr &ELmU=^QI/UC.]5zQJ#С~ĥPˢ^v$…Ldo\ot2^[^ؠCn'W$J3gPu媝븊\hi[ '>d9}in[-3^Q?œ|S/:֥ʯnî[ic)PɍaϗX{T ׏vzv&޹;_SPLiMyc=#dޫ(2pz×7u"|+KG:Y\ I xK-b6txσէ,$RIL/!Z1D$a\C :Un{ꈾb6iPRA c RIu\ldW&D6Yr1avP9&JJz̺7N(Kq"ijs2| }'*qY  +&N~aC1YG$\ٿjpr%ݝ|ÄϴPXd8zG,].%y7+Bv ܾl.I '1qc].˘cec'0(qnr^ct0o N 9~¤J%d\)]O@xXfhŝ" L#(A=Ŷ4rw:{2?-j `0ʯ,qdr zPB|",;.^IT=$ihiRԛ"NR@+W%LC'r^䷦PS0Tن,&4]>7PuN ƽN\.S|!-ܽN%5xUUl.-r[)޸.}sjl~N& x[nG*97:P?ѮŲdϾNS'e[=g7#TU72X/,sk}}XtC8.|ks֟r[qE;ktP}>p(m"Ao34wl=uPICrEz;H6ʓ4 {n!a7i3"7o)]rnSl73~G+k;h$kT,GW Nĵ9=ajv9SU.;F~m02X1rܜmPVzu^ꙔPsdn2٦5Y54E`LrFy^F/U ycL d\0G@W:Ndr0eZYIrq/3`{ qxjN*e{(%Q@˽i-&(}y:+e#VRp4Xg% m">8d6 {ΠFTLz\@QSn9̨~ﷺSƤcTl ܫ'X }{bsiy8)YWV<'#pm\?9 ,6!wJOp7R Q`b{!|+.sF}N 57";"Ē\*ȬtoJda 8\ EF:* JD_Dj.Yq`%3N綎m%\p6R"ѧv~"bw*:|N債, OsK6PU'=rJ[u'f h\"|NoX.’pZB~ ]ߡPz޶4lz=a"XW'7czthx(No-,\GuAEr$h\jEbq0{sty>|:)3%D`2s\^sr].$;;ZTL縭qya 'w"(QT787vw '01'fgdz^"2Wo)u'b\aEP`mMo-]o քzJ~4ݷ A$ /.oR#瀹886Ct$v ҤV>Eg`o,fԕJɞsRP;|_*=Zޤūib:q/$v+ uLԔ#RP ~"qu+σC'>0Xv1XN.Xi1mg0T?_A3zR5CP[.)4OVp¹ HP)MJɇդ{PN㾜go E` 3Vy[!;,8MT1Qp7;y3.="'3@QCU]Ag { 1+W'X䣼lB)#%IX TEBa_[fIItΒik۸v3$|u~p Wb¢*/;8cƿ2Tdz  ywr{nc;п2j(F}QPozҧKFb\ڵnA;y.+5-ư=[xfw{hIZLR1ݤS@ [>gX_%ġFbtv;@MDT0g䚅<=ԕNVk hyD!V `E:B`2NVGjii.OijaO&%Уۻk#8HfrzKe "Z*Ex Ĵi m.1ثIS,t[lraº6wn9AF&)Un-*(!|RWU65ChZ=H2uK]t 7|@rskPTUZoD%6E!Bp2<$rbdn eMgv` #{5IqW,1 pXlm cUדBD)魣V&̥i}t{,S`3#ȭ$iRzG1n?J4ıqa| RZLmB.$%jLC!ă'`wmb=*$W|pD8eGނ0*, k,`4v~RGYER$+>i91 iɟ5BTb$=$9-e[ 嵢:jJwq ^#C`5gG+TmG>ŷO z/H"aN楆2$d1&^!#zj3D9c 3! Ϙs9Mܱ1߂,;Ր"F]d݂Oz|Chsve(˓iV%P=*)UGaRF|& re٫Eg ^rZvn+* eYg鍓|uM9}t ߈\W^ZmDSVaIf)&Jn2h4ި;GkhUaTOWEI7KO\Ywزҭk<ԕ[.Z ry;QkY\Ak>iBKegíзQkP4d88byX =oJl<h}@$*v۶QR:X2գ/DiAAv7Do*.JRϋ'| FR|<<|RbAG7|QFJpg_y ^~F04@)} ?Q"$#bw cj{D] MdP%T0&FEOi[矻h 2"+PA$LhWLxZ_-vrPnT3@Cy}Q`N@c:U ODSJueqN"6lj8f?"ݣ&W(V;cɯ˜"M]vu mT:M .*Ur+;0C@m342]V`Q| N(/M(^~jbhVD(mğ I_R-FohVq.):/g45d`jx pc1k_vc pϦP;&|`cQЉ\Z4B{T>ِš.[^l DZY]EM$nc8lu8h%)b Z HP6=G34 |'H۞Ȉ@P]/ gTɯ4SEr[VZ'38P~zaTo9e}^HL(𬟞]LU $5,A/Yc?L_)[CoFPc~|&3Y3(rs@vMn $/Ϸ@>6_Qi#[&˨蚝HFh\]PC W6aTM76]^yqlاo{(blufKdP K[=y,4S /Խ{)vKMWj_M8㴋) TuU/\ľO+\]۩W~A4vF*@뻹W|[ rT:eV>jJI:s?<PUy|ux@ęjDKpŚ)/m1~IюX78K5x01pO˟Ǐ'S V,h?uk9 z}`ڶ~ik+{8d[) 3~^ &hҨ4>W>v "Fm-񶗱m_ <jf@J *Y숉"]*I֙>#*F}y}5olc y $'">0dԜݜadZ#JFl Sߤu/6CR̉ \# [;9F%fa1as Œfh}7~gD\UTD] QŲdĽeF$$M΅fc4:ϯ>}ς Պ^b35pcb'ZAXpG$1jA-Xs[00HY6 t/ T[4(hOWe~"ZE p*>Dp߻g o'_ ] [gB5{WӤkOU*jĆ>gƹ ;jZ. o=7uvSrp]ԝQa33 Wq낇O(l)#fâJ@hvBֲQ #/d/WgG̅2%h>M.B;5A>3zS8DhreQ-W'X/ꟂC͵v v}!?Jik-% *8#&˱SF.Ugf^{9r̶4nOjɋB $GcϮ7?%ټ«%.|p͇ˏ"٧Lnr3YV;>ʈ`1X&sZ 6<Ǡfi`3Hi|xrSe^MchzPE їгoޮ2dݗ{%@cNo%/RãkHC Q~Q 텩dtUZf$}K'8BdBZdt[AK3 !-M' Y7N{4 W[ Xf^אcM螖G,*) :ܙ}A~ ;;p"(na%ۈ2l*{IS.K1 Q/!|laA7H*^#]Gh7[^x`~){W6h=kYXuEO@t7 1׺#8.E=&` c _r junyu`I&\~@@u1pY }u-ZJ[׵A{Yn]:ڌ58Ul\ fM8f8Bx)h{Hpze]s NOY, ]wg|~IJ(ah)f}x)Qh̯ξ{@O6utđP1$XF0eyl 2vaχ͠axR=S8qㅨ$+{P;=!BpSުqu%OvwcPug&9w|A8Q$xgC1 v%!n.mμ,m[ JO1TJ3NGWc>z@HoWh|ߎKQ1Ddw.BT3~ʰeejۦԪ 8]:"1ܻ7 ˔0ELMֱ4XY>}S0ʃ";pޘl6OIt[])=û<6NP tNHZ rJ}Sɳr R.D\Mado*c6%#f fȦzϩ^IY(;U؆dƻuaghA2xzӝcڛW2k&+ u#gs8Ox&IиJĴ5c}m1[Hf+0 0%eD[>țrpOvmq&wu XA{HǨW%;PQ 2v[LZS 2Iz:n4&: +N](1ନKsC eKRWv`¢9Pe5.*P⏗Ýc ?6cmuu7Co S+ڭXeGaV)a4v\ 룭G \P;yJs %q~mhQ6H]Q"[KѝW h5"ҕ ȒRHVZ 64&-)-J#RTeNέ 57Ϻ9*پPF.xg@*:plC&(5 w\ 9I`l#)7)u_>9E\;$G e#G)~FWz:"SE DE6og7=-sIĨ#KvNM\jR|AtA9e{1!#wyJ}!& ~Y]58M*oWD%΄QXi[[Jżtrr_چ}SZxe"ͺ̼1#P^Z* ~RD1/`m_n9am~+L9AzK}N?>'e;i 7P?BѴ|v:U嵔e…a_iَd hXyngc㔍|Lt( >QmK6iJ܊4HC}|gcd}Ak;X`OWsĮK H@U(Q۩N+\>|[Ld.1z(N]hծ Ir ?ж/fpl5}|$u4-S@)LRɘ@{l^MT<=zv"_"v_6A[;OD}GqM=0}(66CN\\(L7dW 5/%ٞDP9 d +W; +!nb|6TǞI#\qM0,s*]k, {puBeu+_BaoGo'HS(UB[K*e(SR!my2))TyًXk`y =UE OJ?Amzi1%;hO:&.tVlsw>rk)rN#M3h9ʔ@[Ji4W4ҽEf(tԊ5{n!ZZm®B;!«\'vsa,M}r V()7Oc>3}^sA >O v3٬! .)ס}[ZDOwu~}j5b+'&d *OV ӆq7 tVh]X_P~/sHHCOc|f}+Q9}nH)6 6S%<~H{fDaM%8tj%;l6!' H?Uȟj0` ߷nCC279(ZQRDCys%1vd5#CRK|(N/nNh#wj^r ߭@}: eKMZ]q8;|ETFB<^YQ !SxI&d 3B ;z4i/C8`zIFLo6 'u1Ɗ EdNU8 Փߥ2=-W%vZQ gTJDGɚ1ta`kLgGib?T@w"cǞ_WБ?%]382)Um }ŪkIa9W!_b p/iӮg1-:. AzڅM`fN,VTN&^]`?7>ג61qc0*$XFK qP>v DFڜtB}ކH}9'زKLKΖ |^f|&)&i^rht-\ӒЧ)@e&뻆J^8EIYHL8 DžJ'ECi\I Eg ,Ҿ@,L<"S]bX2VtXdvdL* F%pl#C o#ߍ=1YZי~eiI A<2{L|V됰AZ|5D_ʳFȻ`*ϽDނƠw][>3 eŒH5?9jON [p€gV3 <ܾ#&bs*o^@0]eHs"DN)}Yej*%|CF8u)aVy IEfF#Qf Eڨ9޲Cm0|}v̖mI|}ҧ̷H!e=ܯՆU9x3eU0g២4ZZ35In>X;Qž!pHͩL}"01}* xQ)Ur a+63usIHLDFJuƓډ2FuJhÎ)^3ҐxUULEf:!՛06}՟2۷kV;9D^n'9ҿm;ei9 x؈Ԝ*]Ctz&THՖ> T.Vij^|7 fuBy&?oH*0k8(t6au9!|< aBR:yV\A Ig/>{`@0ٝWm"'/& Z"gtgÙa*8AkhIVȓ 4"PV! :Vbϑ(,/ cƎ$\c]BfjtrdR[U˜?p,kN@ۯe%ē3ÈߤXeEm+ "-}et!V,"ỷE޾ʘBHr`$F zT8r7Ǥ?PTaxݬu4*#f6VcK#`%fP[A)7s.@(Af 7*Ɛ`0Zv>E^ =[$m@v5Y M*~b1A`BN=ɫGa9zun߿^z8*A7d~ڒ 8T߰wvV9s~c[wtc.vc+3խ3Cײv)e8+!uk)F<ΰ5nׄUOog+YzG ,$'0PdLS&e;5yPNҷ()vi,`Ǩ![KUН9zr"*x6l"]oc6*(:&Iݲ Hsg8|mcOQ+UQ KǴ51{l݂f ÂfEq .$D= ػ䲨u /f;*tqw c 7{/irV Ta!Bn f'x{vUB7~Rm eZBj;_?@;JN7b˩Ȳ5?:E?n7U?Qܓp5!S|x& iX0НԫfDƊN6!gKAHzVd/(=ɏLI!Q 2 2} Cg9Ҭ'R/u'Nˬ 4$\iCy8i/Qm&Z,`J)udV hg/Ey!9SnK $4C1 <^mԻsPԇ LϛW]P6y hLj @wH;wsVAa؍ZV#4#v ĩDJ!vLAJL4ϒُ,qއIG%/swE-16ݭmLhUǃlh쪟!b%㪺3Pn'mr,-4-91Z|3U g7BK͓M;%saWuέzMfk@ƑEʤ[t(٦nfz˼folֲsZm: p4`4 KVΨ m7Gh^W"4:<FM{@/yN5F(dQ,Oqr?-\[β4w*Z߀ " ~iBYW&#uMWf}"C/VM@"UaMBo{Rrrӕ/R=_$' uX+P#wrcd57O8 fB2sRtKf-ЉDItSMn]Bz-5G,i%793t~[b1[la"H +>& %HtFi_VC®O(&tp>'ga-H`g=$̰72/a0L3n!4ul%3+on]@ Df&~.n,}:C5+$ .@xjYF`RK-#F $?ɃhrE֮E}^aQ eyTɍ\b%o;{t-җif_qbR!$sR S]gѮy o y4y 4.wQi?6$_gȥ2SQI <}h۬ x ETѺ Ǐ> 2sSL~. .˚f1A4@Xpx"?L[b]WQ 0忭O| 0#yapmOEVᨸ5GW%Yo}K%KX}3Iɟ"x0kҬ?L- *٦BYvaWsu ޘ1Vko$6 VF54_cߠFЬ~HnPM2?Ht#4&̱:}b/Vx(Ika6+dg!ULˮ#\VR{8AMxEm9sJ_:J<_CIY%a6 Ng wƋʴ+6^]_ᛲH:Q\[. nB8mqA-,,|(P,mp/f~^dsH \ÆB`|栿/` A罈$wm(auO6zH_Q# -fݾ s:sO1OzZ7bM_"sc[+qymRmo}G?#Ӆ$zq,JTjA==w=b٢MXTqi,=Xp-ؘ",hǻ\x3⟠("ax[^]W&slY!_yLTcNK_);  z jZṪp)Ф=8p\N(q%,WvSF}S.[V#YQ;U3R!samsPi@ehԏWjj.ZHM'-8x|K_&Dq6ZWr g`m`,=ھg`{wqkc+|cܮYƴI,&%4%[qپvc֠g`eMGl؃r-SwRd-c31*b&SZ4 9f2MA En%"FjYLe{b;S!_OPx+xPY5NgR0Y b-4(4{WY0_0>-!4- 9_zƝTv /P e绑R/^bM#pE)5ph<&\.0GYW ^;@dبa#WO|Yi dw'K𶞽lP2pmMhL{jŽԠg{vfn4?X}7k;Df\4FY &bjo{%CRY5Pɋn?&j[*C}]%tQ:xHKGc̀n̫'n ۆ?)ɦZ{DP;پci܂nWbj"_C=&߿bRX&{؏%Bk%" 8 $8/Ylިqрwb{0 A0>C])8WlSNq@)fh'J|[7sFpHtz`NhVCصAd;_m}!LyW/ۮ]B=f%^k=, rc<9ٟ;DG#^GܺгSyg(!Cb1@Jlr&_x{>gi>Yu@ S4$X%k,j;!b26yW$v2|ةZ5jCk8<{ ?||=Oq[B;8*}nzpۆ7`/yx梃0@V} p8B#dp+T03 R߲Ѫv-+?dz7{=mM)TH2ls3Ԯ0_@j+*m-S͎5 7:d 5LN3]Υ{y$NJ6yPOzr22ŒW&hBL'@gBp0MHv^_ke:_Svm8Px0-ur&QI/ҥ>r|2R"G j K|c|pVP*b\{ WYY/ĴD (T"u%F^P=xy"@pG^Հt*& /ZMl9Y@[&A$A@^Ƌ + 嶚]쒊mj}gnQo'`X|x|c,H6w bRE쒜 ~{kU#o4⮠Ktڍ 'f<_(:n_5_C:Ch7 P"-wz

T˥+?F%h_[h!g=g { Z֠U4 NQT}ѣQ'ZI+zMTeޚ^ܚc[9K 9eVJY%tΗR놅wHdI#4v51@!~Ugr9|4T].{hl|l{Ք\iu 'j-)/YYy? efm1~h)R5^gҙ! hOІd%_ýuA ۢRSS>ٵPW'4ֶVp:Jjs[IVx4٘ϻo3W(SLH]ΈE2iz;,(x:ѧt]?K2*,9qA615)(4 j:G 6H3DkK M#[u4~ma*r2)}y-U},H&A3٦}ɼзˁ%´0˄LX3 I]W]F-QG`\Vt*kHG4x^ 54Ll6ʬӳ>D M@^wBq8|/jąw8A03W Ҁً)t%[N7Cݠ^Wˇ CNw4Qm3N#^Io+lE %+dLG9 "MFF)@eW^&.ٷXy d?gn2ޓ‰)vGbKͺhG.h pJw]NO#4 "F/#W;\ * 2x׵Gp9-h /CPXOj3EO_ZtF~ICa[|ʆxZDIO4 /ѫ;t+ics Tkl%:T/{fDPH[_&-I|Sѿ{Z A+C*>42o1_-k[xxХ r!6514@"fi_-` N!=H޹--8@>[7k`̨Mh(?,1Fr;G#_<&C`j +8ۮWݸvQ&D00ځ ٽP^ɶ;/ > 7\z:jR5_N*JkA.fﱆw7gov͓|`ButKiZd> GyQlvdc !QwNz#f{8=Ӵ#7bʛ,t馾T @-]ŝ΃іObstLltm&$.ɊBSuX6cЍn6b+d5zSeh[z@梬IuFD}E F~#Sm{00KoG| |QzCthz=%*\ZG8頒.7@$kHp݃Tv8 t@.ieTddyue:7FSp&>/(Ec$|l(*I9]z%b(2܂Ue;Q1&ExHYݏwwj]' B謇nT?,7G myywp`$snƋ5.1 %sR.$>ӅD'*gV,':߃uANڬ7U)9!iAvAYY(_BgiZ12=g,`#^ hV9_i`(x> V)L$rSs*:,tH{#=*`if}s S=ŁJTJIhdS^:hX-4PF.3ELߐ8.%A8ew(TwX Œ iA :I/NLP@S8=9;Ξ 8$l9#b |6 S>IѲCoڠۈs/S0}SZퟨmYA"ٸǯ%"j}h˾%&5sTN [KЁ2eTRD!@n$ @3wMV珒jŢJOo"K0K+=M<BWq/eYYX*jsB3m׶mbHR پveh*񰺙`0q 0DRiA%mi{UBꢊ|ؽC9G۰+2i_N򪹐 t_ auTL>id ;4S$3 FgHj5aV( ^"|pi:V0zgZW è Ù-r#`ey#paa4R& E񩝢)^y,:85*$l>cEl]f5~#I<["dAUg;NJUi^ۑ#^ɖ] %\zA}:S̼n~+O4ms[WɧC4?AmVĜ۽_ @a\:"=hԑS]6k\qӜ6Ü.T!`=jY@ܖhJmjYҼ?ђe4;0šJ:Icsku޶r2u MxS49-%,G S~Y)w-(66<4jk$V8QWKϦ8>UheN)p:@`jYJD#퓺9 Wïx>^G4 Uf@Az5>`Ӫoe Tt#zR;~J5VΕm[ՇhWnfwFV }n8rn|Uբ/"WW3.fnF]nqwk0sx"ĶzyuasCSVM*y;: !/_jl뼫ܶ1d7S-ٹfL NzAV*dGm88#)ŵڻ\ޡCSӍ1(,*i<,=h5SX8G1:3tphq .sgD̩-,X#X~59~l_`1ߋd=&bMѳi m>$)ܢ*q嫶rKZ)0?Xgb#>uٯ5Fgv}C* ϓE& H/dQFbE84PI'zM,d/a-os塠cq<^rTqX,;:6Iзŕ/NK=iXX7'X뷔?GkNrG4 (bIJɼa !ղa++1yyIکEL,TpRx|)q0/=6](Qf6Z/DL0 Qjaq@Jms#~rܼOT-zgѻj\i0sMZJ icDaWS;[ɘae)h}'+^JALc=T|~@N&)/ ֽp,e8w/[:kQ$}vr;=O|2´rwEWKlDEeI@jtp۱%t?2r Z}̱g) d3W;23r{ͶD )Z'\I[+:/]M4;ԬBKL;ӔV,jL0~zeM?H~Xtv)؏>h^\?XsZzWy詏ʹP>)2rc+Q#]}2Dl?Q^ick*VR8 t{x45fVi)nRא"Qjۏ^LZtcQ~ބz*75 9%0WTq-Zbi oLM6xJ=\uv^ElNغ/;QR9מ" r7q~J[OogV7: {&WB3O?r^YT=uVvI8ܣ0ǭH m~}-1(5+;qv7uK蛩`9:s.̌qK0Nk#\'eeDN\%WYKHך lW[n]uOՀbX'- ķ68D+NK4^I3;G8*^Q,Sd}L]t?#0jؙ6_ﺿuJxh"Ԫ3rѨvD?x@I:tHQISg[ΣZbꨮ*IxtTIN@$Dbe8BΏ=#*3'KK \g_T^}:C$ vޔMKډӦ pL )~XwO> OtΆF33BT ۩[Pj!p`c\BÄe&@-f.&k>UJ($uIϺ;j8 u{!Z +#H z1~F#@ AM:KLpmpkzG=&-=u'k&$8,P lta}'A.j?B@S!ߝI[#Wgu$0 5hep(-2 J* xNVwCXh*,,Tz)J| q_̓xOIJ]!ZV"mx ^ cz ZťUsALI7:?6`nPo3B-u,L bRK^Ђٽr>p3Z52{(Cjۋ :5hq;M‹v}]n`Ӎ\Yfeb=.ڻU]rAP]ހ%7_d(ޡnqna<ԗx:V%ʺD=QWv~s,둈: μ"ľU~K5xm3H@dp:XEp}1>q%pG_ŀ?%?bl%z72bCZL~g ?໅VLs_kVol,vkPfGLoZOޙXQ yudQifvmϣ] z}ǑG(c1b^5@&5N/h@PJS!pucר}@?©`XAD1Xk~v͌> bQTXnrB>ei}kdܧő̏9ִp&Զ` Fd%q V{LyN=K*l(yEf*zVяaKw5?CEqDfw2֮~ZX#dܬ b|$T&$~L{?3rs38._)T8Xq so>,.9 ZE=|U>CC#!|_Ti\>ND5f-C czs NZ f:_kIʷ=9m?Q<_l A BD6ۡ<a%Qf6A—!'(JS0E`Gvlh'prE0sAv1'}T}P43D`_6c+r~zn05kEO3t)NӍ4f9l- OR玴@./9NJtnpg j"&Xd>!e۝*e̦\~]orcctgHbݧHdeӵTCwHUJq"xYP)6+wLLuIz웁(urjMԋ0cY4|rPJh DŽjsO…VEu= E%% Ϯ^(k Яr?k%Y^$80"n>SWFuF}ZiI lW9|Bj"/\S߸&Y0}yh*r=&f*Ϯ5mjU|H䝣AK{b~HYwɭƮLȖ@H"2fݟ?WF7[I6miYM8 hM+"Je$^Ok?![%ȄjTID ȺGG~_n=¿ܔ“7 Lq.I(|?QF (h{)m7UYʆ^[/|nmJn !q* CA`C͠40hdڛ }h7ꤷFHtMW+*[h@K%5ʶ&=)ɪ*YFg'q_j-]9- F/ڃԻT*#pQjTͱwT:Oڂ)H{jWL*xCki1ynTWVTZacDYs[D4uA"8xǖ~LF'"|3^dAE;ΜJ=ĒQA;>`|EA62P#y3ZG"`4 1VS2,o%^p]WjY@/T]4xE*t=p봡ؽ7(Cό-$r*:3ɦ9)s׻6ݞ(8pv[+=gf#w.^/2e-vcßUu"$"MQśp7MU  ޽z`-.yH|3>CeDj[ӂH!ƍǧ5lG>BTc]K/1I8y\,syKzGGIh.{'u e>89U'V%f8[,"B$[&%; l#DPe ˬ2+о/&:jݍbk2yyr`Tn 2,|;gP>m=YS=f;!bXp)[k˥svσ3yN a`Z/T۝nw*~߹fn_ |rSUIw_([:Snc?Y/8]F>yF=2%Z гt)%U6KmVʔJuҲa՞ 22Aa5& h7eT<zu| b JR2 Mn,vg;Ji*zI$<2ѪHq0l+AB+:eqGS, 3C~oYN.9#l, t#oX|+؁#k +GծGȑ _[JKVl|?䦮߅ \vRvEJ鹕8ˆmo4]!nH-%=%\%l{*8h`J&JْQ{!upq"lQ}}`'/Aw˙raf̬i5ÜUL;30 =X(q4m\ ŷ]z4 w+$Q-oOPgk|00wXV)٘Iu?ۡE"4Duc`У<~#Vḥq +:Ӆ>5A]cxe5PT4;C %ћKC#޿n]iCkWLd PZ٩ CTlp+ǿp7Zivw9}GOy8kЮd"k4,2`[뮲;$%”asS?;7bu|4xc+I|o$J·CZ2JJLnB{ Y"2p o<.:ZuoqS+&/64E^&s`⊄LY 1n4%L*g0r/je fcUEjAK<nyP6@elHW槟Z#&a`cC3_W0"6a͐Q{ﶈ"E&/dj/v.8ǣ4OSw]o:!?^I7"GYw(i\fM(F jSK*,P>;dA߮Pc UMX>Olش={+GxU7jv[;Ѹ)RXm 0oi;q˓6[M W?Y_K$Q-`eIg hzB }IA.c Bpsf:Έ韉'G; ;lIR8.(}.#l /[8> g^ vhAtTNxYe ˧AwLl78-Yɷ_鴹 >o<^ϚHZFMiJwI`m=$Z1gQ أ_j.ZǖIp%i+@xӝڸ pxO+0]%W*W&>& D?nܦWEᇃ"o8" ^_AP2>89 N&eOS#^&ݙy9bL%!S(Nqu%YI2J*(7hF2#*?!X/eOh,S0=*pnB X~Lg}J8\oɺb%~<Ӑ' MX*͘$On B;P,-dCݰ-Nd7^]Wf uBse5M_vθMς؂d3;0 Mz+{J%~_/ Ŭ7slogS=}]r4NnD;\S} H Jy|Nw_]tk|]>ē(j6CŀuC.`*WJK[.K`Tv|(QP2eGMYjQ9!U^K@~/ 5ѦF^s R8֗ћPsMKx!w+2LF=<;~ɞWŹcQ5!{]at-y+2A_N %ʟB[7a!yxSW<7YK|5~?Iǩ8$/ "D85A}|dA& LhܕQMC )YhGk4Zӳ5弰k2c׭ 6E7;2%uZ_و,wKmiE,qmfsW??͂]'J.p#>1 =LHr܃1y葲J*xw lZg$R&͆&`7uFgϪ-EW5;o& }$p<7PKC68HBSko:{lMW'} /co8ӭG8V#A ,dj{\H_)V*OAgbc}`J+V8uDtxa3悷K=p F9ED皈rvPQV&1g"`Ѐ3Z@={T\(#~ѣx ²ق%9t.nAD&RUTk/H%Ϟ@Q.h?S FIRUϲ=_ijmk_)2g,(Ȭq394A۶6ϙo~O6N4&wT@%lRsq ) }K.iM!H(cbB [VMtv1ic$I4kq.a1$s_hDdEo!ܠRGʨK.kN:Vy!\b]GڹږϘ^#p3?-em~Oi*D k',3$Vd&ӣxvE0^5<҅; (+<+{FY3L9_Ml#4cf2Nȏߵ_r&Izt&sCvl:q4o?m4\S,kD^ _Ht:ZDVڞ++AVfY TFL%B{4uuմqXb;8Qy~0sL;PkUgb]GZ0-}..9\[ZkeVɄ*a?Kz;x;@Bs!9, Z dfF|1D5J:pe(7TX+x71y[ΣnHɜaxs%ZVMQ۰%CdRW#tԫN)뮋^~2m/8hjPF%iR+ݞj_ڸ&ش-IWpоzl ?Ch>UvT+6I0R~ȹ<Bпq[;Oz5wq$kxCҕGtDW1Ha%>ǟfh8 YF9ОoP Ԇ9;(@JIm}0#8Do?RkG&.%y*"NUC٨ge:%CrF =zgEtW"40| -ӓ$]t*$!ͻ}$&Fc6z!?عN y-5l4d)"]04us$W@L!- Vנ_B FQFR`-uHb VgIf"y' jNj_^=%#U|gƎS3~*Cu ^܈%p})w}Fn|ttdSysy_P(#ztg*\sSy "VuLDb?C203`6:t핽8Բ,H \VvA[ Бp(8˫sq% jm5%=)q`IG|SŐv>)6Jqyܽ7S ڷUġҤ`[nT靳m" E4 zP;CJuW6#{b7)ޛY[ޟuQ96V#R_[(Ą'cft]6GLQK2@< /o~$GMRSݵ^@Zv5PTDfS;USaH 'n]=sbb[g Mz?{,-T%Q*@Ak'feMO^0Ҟ{>+39keiWɑpv8U5\/ԙ%IamJQEe 9 f}#)w!m a ]zU޹)\`vjU",ZAmXY%73ϜN`>:nT:kZXڦ{N~9}cpfxY|R|bϜ`MNzQ2^HI(DTzK,`bĿed}v3CUevL72]E&aO_yLӸ`^G]*hxW3K@b&eq5:΂*>aXOcɶN!/:!}^+%bGb#*ZxmkSF6e\ݖҘZ>M59d9R:s4!,tP!27bSi$JGop&,upbm 9jp=$9Y2vtB/8,GSi;B:J(:WDQwzuRZ.[lQc,Dzc ]d#1+ ly]]Asԋ+)S 2b{;爤FR/h",Wum̫fi.dJ ~^7`Lm:JkC(95̖ @T2OWXDRGsD=[ówbE Xa Z]E OO@Ĺ}+'N*bTRANX 2?؍ApJ8@iuP8XqE|/zXy’lGpR$ ; `Tuע4[ʅkÅEwk+\+px'*NY=6(TN|9(Doٲ?2`@:'L~,Ñȗ4D Iq t$*yL>jZgA󄹨H1 [eBN3G0K~摛*NpXaL;.!Ƒ蓢3m'p\O|#M0`'ejEA`=(?L.{HG,E_QV8+5 (]vmhbas d]sT4yf Y;wuǡ2SۿLO=+=lq,:S3VWvV$*^j5qMaSS HsgIRJ2,6.Jx14T'W>8Ӽ ̵ kFu˳k6WͶ s㝻6vm ܇S1|77Zbil2s%s,[se3;g% XAxQL>U{N8p_1Sw}.?n)j៷'PiѲ--NGIÁ͈GaMo]g.`;lTlDd!iOl/b8\Oٔ%B LOzIEK.ܲR8cgM1V@IYwk%?X 0Ҍ'{ Yl,%F|cgwM7ѽo _^,bv? |0J4oSPYtǝpCS6 36Wd6*ㄮp璅Et*K+ڻ/]0$ BF0ԯ澭'{=볜}ƄсH Dqr&"Z-+ E 7rZWd{qGBl٥vرn>}r&5 EwXkGke4ZGӮ+adw>D/ZPۉ賂9ي#W~>!9>r(X^%&:c.kIk HD:Jק2wW`]kt"rkO^ ȋmşS8Xd"9Zx_\<a8b'ΓBHt Lkb?e^]q=?Fv34ջsRw Ƕ4& @-U_9xplN>е3\LtssQƈ0"{|Ov؇4Pu3^AB_h9'Uý >YugLd\*f'mRX*F/׳]95&28N .y8bcq_~Fo@Ȉ1=)⿘FrGr`Ne,$il*,UwU`,o,GK>Z z?![zmTtx/̌p}MwVGod(# KG\CKz?$vDĜ._ID ]V5YP;b+vO#2QOB3KYS7ԇì-3V-\F)p&Njj<2)Ok5NcђO tFA++'2~u d.s6BҡG˽w=NQ.XQk.r8!R^U nܹzaMt@մu[=:yab+-f (rsmw]G3nRG SAq)n5KsM;LwWkUr-LCe6tx!n <>:ܖY~(J%6>ŏy ЫwI JpK@27lv* ;P,l yMn%z)PƩNR@2-̐4:%͔)I(ڄiqr/Dd,¦G%L ulFtiz@:C[˗NP(O+{Lxz& H3PIdܨ2igb4({"_߷%,yb1x9D2ٟ/hYyRӛԻJc^vٱi`Uq}?({ӥa臹lB <~Q 3s)_h) q0~y֘kLWΜuiS\eXφ |A8b.[.5h<-4 CdaY]0-ܭ-,Mp/lCmobjbIxs _ר4U)d~пbwW LQSʩ^Ţڇ2@D>~q%Ia06{)s}nޟ_~+ݒT\Z ]`-%mY!y;cb(P d}kMv)]#:7{X(*qۑ Q?qȿr{@A&jRV=hжCAsZQŗ<6o)5f^brUv>nO3Is?k!A>Y =*Ú$qZ>&>Yzel¶vd2<=i-YM`G\oj'&)Ǵ]i@ =h) \U/A Sn Ky{-..uT{,#/r1]}WpmP r`St?$ WELG~er0޼mP$7U;LR{C&.Xl䠼3Nʵ: u!w;>gK\(r_`<ȜKjgؒ`od>B:QquJ=Kaֻ 16~ :%ȡ~+ˤ8~!]hg޶].I14SLI8M'$B:ϩ gWUl$xlӵY>f]bTmw'9ȣa[Y_- cR0GH@ D* T8DS #67 n`Crk?&ꍵ_6a:LSzȍuua5ۜ~ +0 ;&QI^sxS\yjo $ ك؀ YZ