// Copyright 2025 Sun Yimin. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. //go:build go1.24 package mldsa import ( "bytes" "encoding/hex" "testing" ) // https://github.com/usnistgov/ACVP-Server/blob/master/gen-val/json-files/ML-DSA-keyGen-FIPS204/internalProjection.json var kenGen44InternalProjectionCases = []struct { seed string pk string sk string }{ { "079EAB79AB14747CA01582B59F2624191B0C59FA219CDEB79F66669DAF0E695E", "65406F1F72E6D3485C8F8AAEA6F44E59123D4FA8FE7122DB24558D2803CD3488562DBB70D635855595EFBDEE015419A0F727AF55CE5AAD68B4CF637EA3B336FA1F2771A47D7AF3967190BB7BB3F6E4CBC0765DA6188EC38674D6839DE9099EFF09DB1992375C68A5807127685373DE558EF2148CA557B9103BB68A3442A0EE485DD9CEFD1DB6DB73938E66F33EFEAF1F50F517058C85A26A5166C58AB7F03561E4331B1EC15AD6B562EE6222F1E77105AA24AF85561CDFAF4D7A23E56F80B401437EC8DF8BD038388FCC808FC7B5F04DD5C9E725AA7B33C2F0F58F09CEADC462972D15D92996826A9C92A70F7733F86A437FD1AB8A44228516B3067209CDF947A0F8CA4A2FB6DFE531852270C461A7809F08F67C79E01E1343567EA1B6E8F33F4C871AB0885D7F7A74763051D17D3B0024CABBD2202A10E92DB95A36B0067F737BD110A20301CFEC9673D311658CBFD8C4A5DA8633B236E5AFFD1B1175A6E80F2F2ECE869032306E90B3866509DBCACEE4C02206BC9F51572BD89AD918E4E5467519F3D7F288700B66C4EA0DDCF8C5477D4B015282C2AF7648E234E139298DC25840C946E33A5F4B9B22124F7D44D7E613742EAD04124A5C79579FC166BEE615867DA5AE691F819A723D55D66136869EF9D360E65BC1EE53653BB9C86F675D40F0E5D613DB96F1B4898FC5079EFF0A12AFAAF73BC9C3B8A325C6B0636098180977452024724EC26247E2FDCA9F3E040DFD5690E1190E6BDF15001A85159918201EDCB4D246076FD9B3729C2D0324851BB59AD7FB232C01FAD2CF0F2E42F28B39104077E46183C9198714483F840058E21C9FFE6B1B269C0F6F50AEF13F0B0B14C7B8031E37E7B3909A73DA0550B7503F78ED74FF78F697FA9985AAE13F7195A89F85B1D6682B58318D363C051396E2FF4098E04CFB1921A62727EFD27E205ECAB25A89D9ECD79EEC9D248294DCCC24855D6E4C7F55232994208BED3410BC5BFE0EE0DA6B6B5ED2DEAE992A73AA0BE5AA4D9227B8FA8A9AB436C92F9144FF84048EB3113A0532EF95384DAB3E49397CABF9A7E8F4CF3D031AF6B290358BF9C0D73D475CCEF219416D26BB7ED450D88D2332F031B25313A922E41A23139E0E1530DFA2DF4CE40D0F8EE9EAFEDFF307F9E49EF660D08F038CAB61074325E55D445106C14AB26B1B488D456BEF526354EECB75D70501D7BE54C3AC5E55B1114C22379E91C7BCE36F8F243CCF6078046CBDDC51B2E7B5142702834A156B7D85E206BA90DD3579653656FDF5CC98DC3DDC82A5E07D6535DE56C52A9AADB2BDC0B63B4833EEF75CB92C491D167AE3E2A33828B22CAB98C61701127332590D2285224623F603068B3E7A746D6817A48B681AA52237CAAA803E2C7155C67820AD3B4E3B88DAB30352DA6C5D2F40FDBFC3A74685DDB755417EC8414DC8D61C19BCF8EA39BAE9F8BFE88021457778B56A639C317A321385FC3567EB0741883BEE08F75AAAC4C10581D905383B03F4F27431591DD648045FD82DAB4223958A726DA9DE58B30DC9E163E4531B768EDF447BB4557E5E4E09C2DAE5A826F43F1C5732A2EE4632BFBF765ACBB75C98390A876B7C83AA040EB86B1220FF41AA3556CE5CCFBA0D8A4728F8DA735772658C9A49EF9774EC60312122FE1B8CAE1AD8ED88F47866F74FD4917F011077C2837447F4F4365739043074350E489378BD7340DE9D9802D17554C2161AF23FAC8E50BA22B664C716A46010B1A1BF2C69B6BB0C262DCD8D11DC455695ED3FBF9EFDDA12AE93CB6C3B6E0B727B65606682914EDFEDACA8EBC7954F2D6168C2AD8CAF49D956D41B1289C02BF90CA2E1B2CBAA965823CEDBB6B42827", "65406F1F72E6D3485C8F8AAEA6F44E59123D4FA8FE7122DB24558D2803CD348837D32DC65CA73C587F803E9B53F140D6CAE9CBFFE502668F2E1D78DD902EBF35FF1A249BB30421EC242466166DB44F09734545111BD77975788D35AD244A1A70ED800F1BA9303493B4170F36510FF6245801C17DEA830B9B87B4122A7C22C17E909868D38270C24882201365104689A120281C3388913061891891A4026D01897121286E0490609806701409720C06684AC09100878421386922096AC1C48862828C6442510094314A382210198010148EC8B80840802C58862D120350D14271124929D01240A42471992671531060C9384E53284E100992A2C865099630533090C3122861982541A28DE138120885290C4100488090CB164E19190D11B4515C046ECB404C21B750602660D9184A1A280844026014060ECC122613040C48466809212A134584080181E484818BB08120184D5300265406490B2711E4844421360E9BA005893401CA0850C320885B060E20A5401233421A20860AC2484C086D53869154046E50162C04092948C6709BC0890B139053A611CB28818140681136041A15421124410C07621C4888E0B424D9A010C0A28D21008CE1B80581C8206190500C173144221148C445C128421B986901153291348D5AC08CD9266288A6251336296034455A0608C222688308521B228A42C84CD834129C484A19C9481823088C046E0A296D1B4601DBA84013435243240641B26040120661405020844CDCC849C3249012B528D0182A9A2030022391E1C89100A98C24C37198048101396D1C0151CB426949C271201606C1284CDBC84D42420AA3427219176C24250C09398C49882CD4B60DA2964123018E03220511104518220508286E18B070A2247109992C5C088E0BC14DE08601A3941144344C832009022805C838621CC069E09660A38240E4A090DB486811A02589368100234A10991019046911A12C1A419043382D48346D24C15193900C20C16801244819199000836C80224100984C24232D12C86408C27188A061A4363202114A64466812372821C911220104A3A44D2418698242089828518980299238440BA62DC42429821609DA4805A3C0691443708AB6910446890C154DA1C625191471CAC06461440592C82D83B42D0B43668948321B182E11C724D09244E3186D63846002316EA2221082B47104C451E0122C50B64022852D90203199962DE4B850010349E28244CA248540386500408800C0291441496AD64D46CB269DCF0B473D67C86B46F72EB97AEF1509120C8C986BE704CCB20CD9B91190D8D77E4131B29E714F42906F6044CAD43E095877DEAAD80DDCF36D14C4CE4A13BD691B165A7EC05554E31B62BC8B11E3C6A9F1FB1C6FD4B83D72FED1F35433959B2956467BAE93102778BF3AC688E5317AFC982256F75A00A90128B9E15E6D82C7CF2C056E1B6F03CE4721CAAC73F02E784913EE4BBA1534E879B549591FC6F5E3FF6FD63FF77443C0C924649226C72BC886811FF2F344E0FA9809DEF8B66DA512ED2DA2BF3F4A7F77BCFF948CE615F3CEEF127AA7A14B99E36DFBAC9986DE34E5508F509EEE917720E8A8CD36490B6027A877372266F77DE65A184A2C479DF7B2C140D972BEEDDBF2922E0302DABE44DF18204CA2C1313BB242D095884D79B3E34B0E301C6C63B816B84896214040A1DAC9F618EC30064FE93FA91225D4A0F58B939F9415A81F72EFD52CCA545B549BBD0BE2FC4561AD59056C069283EC81D1EB00D7E8F2EE415E240060B140145D6F1BD14EAE7314DD09EC38D46836B91B13F3E0F879D5086CDE1626F290DB404E5755CEC6E38CE2E488654A214907AF4B3CE8E5DE2F2CB234D95021F00DCD6633C97FD906A862432F6F722E2F5B71096AE8D0E2663C68F9490791AB9A4F468FCDF7CF42DE43CFF199BF7331ECF2F3FCB4AC9EA08633595E2488A89E46B121986BC7A0AF4730CA326D2D4A0E26ABFBA6613BD415EECC13A7B3D9FA4CF194C40389CCE7F3CFDA82CD8422B66BE29C7A8974ECED7E855309A016E428002869CF0CAAEE4439EE1B9F12281DA82396BFDE326DE439AD9A2768A50B268FAED78BFAD456AE079D9BCCB08BC40FCC6E202515FA5B0672A18CFAAAEACFB39D3BBD1B492AD8740B1FEC1FF95A680474DFF69BD42F435702FA3FFEE490FAF12A33DA6C365522BAEE47C79A1DE1D7A431AFDE00AA77E5348067E27459869CC748E87B34B029FFBE085394C1258E9512883B30AEBA032877E8C9F5F9F57AE9442CCA6F5782A03F3171BF27CF747E3F1B35C64BE5AE8A726C4EB02CF1168151DDC3703E8BF7A9A92D5E255EE143D07EBCE5B4EC9A1C467684993EE10907B33E77E5146ABA29B6FF91A28181B5CCD6EA918FAC5E69E67DCCF0CF75F2BDDD58D19CE2E36791C5CFEE515421651FD603913422A38B29C2B5E98EDA1E993280070DD6D229FB50807F99EF702880C7591149BFDD762A47BC14386D05519EB4F4C5DF4A1B50A38F3AA220139880BEFA8CB8FF1A56FEA6773F832AE30959C09B8EEF7DE21B9D28A2CE8649F82C27BA6BB880D884EDADAB2B10D72E191A8EFA8000A2A2FCC323783CC250D029E307ADFE081B6F4F7965F5587D97EED44C100867517E3642137A94ED5CA6110DE4A415B2A48DDE6AA452EAB9C63E194F66C7C32257862901943149EF61FC605AF0CF661E65D00F101FD3EB628D9969E3EA8C1A897950DC1FDE732D0FF1E1678EB22367B0D924BD497961075933F1761B29A5057B4F3E38AD48778314708CCDDC5A39D0267DA06EF0343A6F637143D71DD0FBD5D25A74B68523A150291486E210D2EA4D4D125A2417CC3FB24D30072AAF6AA43DEE0D13DCF3D781202790EBE6E790C193E05DD0F4ED7C4F498B12B922C208DA62FE02CD267CFC6F0EDC4A7F077A5CACAB14C21568F6ADCE9062AADD8324A7744A034F146CD3F40EF29D2ACB063575712FC6B7EA0F68DB44D7B06DBE60155BBE61AD00BCD53B8DC2E5475F5806B3AF9E2B2BD810996B61757C0A7820994FEBD094BD8802CD2279233D8026F1B4554E50DD92BFAE1DD8D7020D1A6DAAF88C4205E513610415155F20538D6B1826FACD113CCD5D04DBC1FD292B064EF42D474B609D6CF8A9C90163442BC9966D4F057DBFD807BDE44D15D8990C2C74E16C65FEE59B4AA15188F72B80503A0DF7EF3E734FB7AE1CDC528130B903CF9CFA79F5349853F2DFAFA4D9704821201469C77A53AAD1B9A146D34C9C5851DFE020FE0932C6D02176FAE126310EAAF6B0B8AE4C42D5738113A69A763B009CB12CBC4557A36E251266E5181E773E1AE2EDC6961E23BF3F4407593A62276B8DBBE966675FBE3163FF015EE6A67369F9A72B75114998384FB1DA04D3ED76282DE041613B19CEEF6D4599820C09232AFB588A2C811EE0592FD51B8E2335AC54484471ECD55821E72B5531BCA02578BC06E77C644CF25395B28E9A170209980B3DD84149D4EEE28B912698E36028EA657058EBA41E633B0896649AE03B61CFFEE41904D119620C8C69C6C6F0B7C3BA808E8FC41F4DD56DEBD7AEEB2C1485EE30CA5C4C89F1E35DF11B782EF72EE81198B382B6DD65D9AEA64DA1A61C13B73A32C5D5", }, { "22B8B2E0107C7CA17DFEC8098C05AD75CBF5F40134F24E0FF97E951981962FAF", "CFF7D82A194D182A022653E7ECBB92A43D4995C2A2AF5372FEA8C29E89BAFAA555BE1010BF56598E772B22600DD2876118206C1E0E215773183534736D6467A8BC8A14CDEB65C0A09AD3C1CF74C5B3C50B74E2D0558549DB7B03AD2D29524D83F62E2E14E37C59D07405D031A927FFDAB5F32755EE3DF13CAA115A41B00BC947EB91FD84C3B7BC4B4C9B398932087DBBA3C412630F902D81D74767975B2E413527CA3222F378C59FACA6E99736FF07AF706DCBFA0DAFEF77B86F88A1F9942F8BA664DA9766E698A9AA583669DCA4F1476C5697ED33BD49703DC1D82BB37D52141EA527C9762A0772519A3DD506FF158709FCB7C0D21D31846FE4657BB8CB0DFDDC7DC78DA55D7CE29E892127F7EB1E977C4FBA4D336DDBA96BF6A27A91515CD85E9D7A7C3EA33D220AB5848A6A47B93DE2DCB57DD51519866214ADA3180DB4AF78886199D4D2B0CD501D25377CFA586A0482343D564EF321B238AADEAAD589E9595917C72AF4793976D0DFF90490791078D4FC2BDB806D48C8188C7254527F7D127BA5DCA54EBB06AAC890121D42143533CCE370B43CD6C392FC77D955BE3A4EC80BB22837503D36B29F0657D92B2948801683A174BB390C9DDDEF354C3F157915EE66AF9D04D729A02250321909CABC3967F47528B640A8C2A39ABAECCA7186017320FBF981AEF3426258787CF0F50BAE8BF68A19ACB52D650EB69AE697C1FDD7916F9D0F438187747F34CEC760C4F9B486E115085EAF4BF6364BD2277E8707D71603A7966545E0A6BE128C80983FEE509543842482C41E9660E7BD85DBBF360D426C1E88025E9BB70A65FE7908CAAFBC334A9B81E2B2E36C90DEC52C05A8BF92EE127E0C968F0D76BAD9B7055F0F66535340A251A8B1499629C3E86C549D1A243C8003A778C1F4F6645461D2DBCAE33A998489FFEFEDA7E371D4A6E389EB477179A804B7E4381121A1E041529B91E89D67DFF54A7FA5ADE4BAC369F1DA628D8B1494F24E6C52F6E74196E80488C58884D11199ACF2A927D92DB895DBF29D18134127C11730135F32A9667DB10DFD42EA93CAAB00B79B15C0078BA303ED4A2FC6056F2935744AEE406B3E0F3E225A998DF014B3E1A47F4E39D916F48AFD3C1924302C459063344E88704AA3A4078C326AC19F5A7F03D6E4A7AB4B265C2B2B28BFD96514CEE74F3BCFCEB5EEF20A8D406204BA5044A762DCD5681728901E499675FF559A11A39FD0B5FB3DA4B863652E9FC0F1714F4EE9759ED34E304E9AD5D9951FBEA453012C6E17C34834003B8955F38E50BA9352B2F1C2094DE33F98522DEA2E5A5477A7D6852B97425570C6286A9F7F457AA6AD49F05B1357D12CEF8532F37894AA9E5814575A80F3DB8FBBCA0E0BABD478AC8C9A981E09C501779793C7FF8D04FD4591597B83536F841E80D58C5F00907CE50321BCF8782A806E9CBA1716DE5E9A3E58FAF9E7B749CB2C0996BD1DE3CA8E730CA998B7D1F7F031F6136368B21221583F0D2238418C23F6D7C774630E38E2C783EFF741EA98A9DF632081ED5FF9B17184D1418F3818920787D7DDCC40A2053D04E272A2343E89994FB283AB12EBD92EA45E28CF70A2BC43AE4E0B50006229E5CD479A45ABF94725C29EE1220C71317E99004538DB2FB0E3A2178EA1E1C5016DA6D310BD173D43438872343CB02379BFEFE445487E86C2B89DF8F6F455B884CB36C6376EECCF2B6A2CB72AAC6542378B879C120C8C2B076859A51F25F0E756C1A482C1F2607F27773F21937288352C4E74BEE5B64B853B5977C4BD3324066D07D86D6126A112C3C07F34ACFDA65A531B82F4F7D9CE73FDC5D9382E91038C72D6B9C4EF3980D2F74B300152", "CFF7D82A194D182A022653E7ECBB92A43D4995C2A2AF5372FEA8C29E89BAFAA5F48FED8615BDD1C92186444630394EA8A69E8B7415158B6AA508117D9CF4C4B220121A76510A66426C8869B9518399D42AFE37835ACC89938AFAA9E80C8E960227DDB44845CD1A3B488A79631B12CE365B9BEBF59EB536CE3D503204F389BCE31492404C122A5120081B336A40C84493B62D44242E49262ADBB440A3406261402C5C10845A120E0106025AB62C0CA845D3B83019354600276CE1A62400A261C8220ADCA86D043431E010654C926D1CB16DD4102DD24671C38688C104880301700A2520E1248082B22408B361232260C0C281C3A40843A2689A424908A58423B060E3242961A6241B058202446680C22D0491911BB351514271CB0869A2422E22862D5A3442E30831CAA2110C474404A7445CB82408011041420818A1101BA691CBB049D9408553222A1B3020429860E3A60C9B1086DB246804988994C8011113914424068BA42449804413212518001120070824452A01818D20862160026A1C246698A648512802D1861180A228CC10041AC8641B296E50862820478E13071148C2449BC26D19810900434903494EA0B40C11816060222E8AB40D84142A50A824C4C64DDB36040B116D40A02CA33881DC8061CC860104835162A20D51068D8C240D22419102486111320AC2084C040426D0A805623629C4343208C86D0412322040080CA5009200011489718BA230A2948592067148468C598484843030DCA2291B072D63188A0803001A2185DC106621C04CE0B88CC8A44189A2409330020802840924885A448612224A9320824AA60CDC4471002671DA04011A185042A86503C545D2108941466942448644C2319C4800912045C3B63041366123258611870C03218A1B3781D9C46D93A42C49188C59C6690B2045C8282511C8498A043101286A5808640B1490DB846984A8310AB8099C406ACBC880C3906511C24923B570D818904A060262120A1832661A19254390044C906840C681D0006A0496040207122034295432200B250812A340029008C89251DB34091BA041E31648990425A4224500194A94483062401054B47094940D61362842B060E1126C1C94914394441CB7481BB48093B881A4C04549A48888966481C46801498D1B348C10392CE398208AA4081A822422926D12346D9BB40C1CB0289A40659C048180906C5C100CC8988500170C88004251366463400E23A6708486290304444A260689046E94886430BF5903C8F73713087776B5CAEC7F4B9068318F9F07E7B14CD374C8C47E1DBCB066FC4B97A6EBB034045D5E3B921422C68021B3E92C2A7A14C6F6FCC80D21D1402EF0BF0D64881B5857BB6172362B08BB532B94011372ACD3A842E083C1911DE8EAA027EF202F9D8BFD79FC3B8853C066C39571CE590207E2A46B4CFCEB1C77DFC0BFABC68E572B55753120D6812F78B8EFD960140EB05DD4652B4F36548C731AD2222DA60FB20B3AA2C98823AB8C5248ED90DD7258C3AF4CBE81AFAA6B743C1040D2BDAD748F591EC3E2103BE0FAAF8C5823FAB57946EDF17A5936F765B36F7F266403DE618F25ABDDB1DBBE3BC07B26B0616C7BB373942870E7C83EF43FFBFCCC3BD5D804BDDB7C8AFFC9593839A622840270FAD8B4418BB5BA60B4A028F9FF422D95A1546804468F6369F9F4830771A803C8F53A3811FC2F95635F9ACFEA5FA870CE477F906758711056820A8350E461D29264F1E48CA63DCAFB5E0EF86533726DB700086BD9EEE2053F1CC4D3D5A7D5626BC142CCEBD0E86D0F63FB69DC10B48AAD81C43668E1BC263E9DDDBB2B6188150AF94F755F782EE9A84EA13C5B64A9460E479A9B61BD385E2323AA8CD8ECE37872A56B136878F23A6B2F8AB4643BC4C612D1EFCC798E2A63F7849480E48B80C3F8FA7651E19975D291DC505827A8C96062BD886681A8AF88CECC5E7750FD0F49649807429CEF0BB21EA4CC06B7B949E47FAD7A91F0E3836431C35D27A2B115CD50BB895E8273AF1D35E888504AAB42E6096FDF2DA2F3CF4166A894AB99CFFB4C725A9A76CC7D1759D98808D3357695B685B53E3BF216E1670F858D6B58FBF0346E0D60B3A304684E0414CE6E3F235609B43F6621444A330107BF1108B0F28CAD163C81394CBC1CE58DA8531EBAC480A3EFF1E78FB44628F6F926D68A32348BE2AE71FFA22351CECB047A86508C96002E82D6C43CA488C63A2D6F0ADF897E0B1D8C68A999EEC2F77D597FCB94BE4490914C16D80643E17A323009656CBC85FCE6D85CF4EAC0EEC73B10F055BF586DBB743C0085C2D55D2B2BB1B58484AC5AC1412ACEB78BDA5584C64156746CDD8C54FEDFB8E33143BD885B603B8A1A0379EA7C0648496D0C4F06E25048C8FC61C3A203EC2DF70F540EA1F00D5683578595E2073A0C8D87B35A0E38BBB95A0B621A4138E1FF8ED7A246A2CE6CD0EBC529EC0A093E5838A71CA963949EF61F2A8A448839A203B0B351AE33AB557A1291D501C36FAB9EB42F5330AEC408849A2A4811034EF6393BADF7BEC392E77D12D3C2987ED35D29CD263F4ECD89A0EF18038983687412E4E2276698DC8781C1CC7FA340CBDFAD754C435AE1729F2F140DC4A7C315C783CEA727C7F8F522A26B03F3498013CDE1BEF70EF87B55F2883BA459C41A3F5608B2322E5910CCEA08C073A3CBA4067DBAD10AB197F728B8F111257B33736C186F0E1F16E2DDC9394767531F0A5C7C1A34A68548C0FBDDD61087C45D144429266DB1CB1CE2AC831449DB76F98BBD6C5F72395D59D42E91517453959F24C71E39CEC7B63808737B75FA18C9597A8D1E15CFBA8751DB700517D8D7C922B5C39B05FF164AA51BD4390A6A761AE17BAB1884ACEACC1BF7826EF6C9BE17FBEB9F6083C7CCF1B029E56B3DCCA618B36D4796A717F3854199F0D337A2E988E8BD65F1976861F6B3944568DB2D827510CC8F49C2FBACAC75E201B6B928C15250E046DBB8F0FEFF68B234B7331384C054F9A389CD980110D5A62FDFF8D9166589FFE7C9933C58997838A66D5629A437D435BF88C7707314653548DDA7D962F589263468690FFE3ED11F4B5E8EC55CCC8434F8577131462C8D5560458EE1F9D4874CBA7D66BAFA68CFCE66E9CD38117E3236DCA0EDF2722D3904690A974CF4AE140460C339E6C52094AECCA1E76B5C94085C599633B5E2B883BE84FFD5335024E3B00DD19B3700ED092EEA31BF610DCB7F5221D5F1DA6D133158F3DE4020914B2A6D336B45CA0D6D6801F0C50C8878EA1702A34FBFB82CBC70D871C87B33811901AE9E12A6A0CAE69924CA25865FF48A5DDA222B06EA1C1102DDBE482BC8ABE233EF03616D57EDE816C9B312DEB9A01C97824709DF818262876790BFEF67E26031676F69D1397AAD475A159600E3B3C3B6A970F4BED879F70CC9A1AB7B26A9FE68F39369C8D1E13BA540E62CF3D5B3E43077328E7AB3676CE533D13225AD536C24D28DFD8C3F8A67678124CF56097D8E1474EB9F340AAD95243E6C15362A7111B2FE6D3BD0614A95431AD800AFDF1740BE67DA9AA385C457A0996433E6C57315D42151AAE18A674D14A9F947A83726829E9A265775C83BB8DC81C943C52CC0F3295E", }, { "D9F891605500D2DC41FAF794BC21327E19FB7A09F64CA6FAB3F71E1D304601BB", "EFBA808A5F745EDE4DB9881265C6B7D9F9C3CFEF37FC261598CF4B524F2C8B04D899488ABCE7D5F8FA9CDCE28DDEC4407FF2502395824BDAD0B34BA40686EA34B3B8227B03C7109C5CCBC172C92805099518B17CA2237BD897FC03CBE2694C68E2909F4601ACEF9A7CE9607F4E3599B825E4466378E0838E953E65F83FA919756EC744AC15C7F46810B4E9931CBF57CED4C4152C9E995FA4FC71EE31BE5B1D8482D29532C319ED97AB3C9C567985EAA0AF5EA816A14D6E928C6BFC33906EA1D3CB80E706B346FB34CDD8B3881BA6D625390C2B4A7F85FD5BD306F54BF26815C5D0322648DC29D3DB6715A05160E412F30D3969EE0CCDFADB9091EE71E6C59A20ABD399F99F275A219DFAB42A9DE32B7BCFCEE4295DC18D7906D4F7808444CA86E35EAE1085BD12DCE68638309417AA748657A0F5624811BEF606E95CA6F94BC97D95776D551BD4D7F33F89C4F21784010C0224414AB9AECB11E035DCB5843C2003FAB22922A1D4F8EE175B7BAB6501DD90B062BD2962FFE68645AE47AF73F648EEAA143CABDCDAE8823A0A3DC625E6CE9B00C24F6FDA28DC2975639C72A6B0ECC47B4882BCC8B1425805EB7255DCD272938BBE5A65BF6688958DC969B40B01915135D4EB74162CDDD0D23E8492E20F4B442B17900AD2CB1600900FC2106DFA4C5CED38C1E9AADE84FD968AE6FE40602288D4588C899AE928AD8E2382389B28BDB67E7CEF8C29EB9A93764CB6EE4B08BA56B7C9F8E178C4824F1A33AB3E5CBCEA81CDAFCDC4F1A42A2446B35CD4A730A89ECD64299BF95284A626D8948784FA0A1BE80BFC75F1E62E5A5018EF38844CB2B32ACB823D06C97E039CF051B7E479415CFFA6A9E634A8DB38B8ADB844FCF04B2679A8D0F0F7700526D38A11C72F39A8BEF1820FE876CC2E60DBFF965C75C6BAB66EB18045D693E06563E866F5651463683A2F92C487BEBE45367AAA2354F05DD31A44CB1441CBDBC0849C5238A38B179E00B93C6ABD9E4573A51590581191D5228E9D750D645AECA86BC9DA574EB72D2BDBE89D55564FEA68D1E0A58033D43C0E15B2D4A2B65C2216FD057CFD599B359B4A3FE2274428377830B805C94814E0385586BA5428D846175B382E598F0AD999C6A4E19CDD989E9C9E8745E000B800C2A5E5D6E6BD7944B56E1F8B69B77B95E6710E89EB7320D965D7712C676BDBD7533B5F1FE2A624F992B639142254ACFD2047E2F48664EBB2AEDE2E4B5C734ABE2D9A219150CF777A04894FD2AC7C3B61A8D64494961F87E78C44A44C95565047BB4B93969AB31B92CC753AF4D9F24EDE908D9AF17D28CC197EED11989165D30E69B5BEDB243F72EDBCE74F6F451E14AE3C9D7CEB37A3F2004A0CF10C3F9A7CEF5117AC115BC2BC2B6C184612769C5625C73BBEA1C9712FB4962D67D2CFE3487C80E5B6B79E3B3E928F9E154D8764AD947433785F5CEA600C864E19DA6676939CB96B7E9A32293ED105FFA8702610E2859A161FE04546A3B05CADBF062A089B29B65755C80E034C29488394CF1C265409AD9D1664D83434DC768B57F56751D35AFEF34B8ECB4F25170A739048BD197EF01C6240DF31C2BA7ED60B6253173B0BA02A7EAFB49FC9339CBCD96D9978873342D9542B233E10194B1BC224CAFC3611C23FA42AD97FD6F26598187E8A683317940ED057F8360ED3919DEDF3759A4E3D2C177C607847B4F9F4C05E885666F15EDD8A1F8459E4D1774ADD1AF51173D4D703FF9E6056742894C6295D135D1FC566EC67A6394FD88FD19712F82DABBA57FE1FF46B2EBE489049793131E25F1DF75B57691974DF0F70CFBE7E322FA9F2BF798FF4633E36DF7414C82F45BCB17B504849", "EFBA808A5F745EDE4DB9881265C6B7D9F9C3CFEF37FC261598CF4B524F2C8B04F89CD31C1C78323CD70F04FE90E022C32474D1BEC6FB99D5A3F020CADB335A71F90B25013B05F0360218C09DFC853655C7144B7664EE29A57DBFC5E8A18AFD5837E1B8C40F9FBAAABA4261C10789A8D010468F2F17ECE83144E571D33829CA912224525B80090431921A239059C01010436E4B1442A21241DC9450531284D2408A80A681C0209291445058444D8A326A1985001CA06861046451022E13048090C6844B084A22143199008189928C20B95041A605013412C9028C924262C1908C40A80C931849DB046DE1B880DA44609CC24CCB16691A3620C8326403450191C28D84189118210A8AB6816324319326805A1061DB9005CCC45148006E04042022498DE3C82510067159C02D93160ED9B664D4160081920901234C5340419A860008272A8A24610C921142B200021944620811C81252111012A03850940409D09001221962CA2031DB848D99B40184442462282404B470C0B20DDC40061CB2910C1068A1308423430E9B400952A82563B89194008924290E8C06888914699B1685CA48924A406883148D13096E84088489220100290D1AC42943A26023B7849AA65149981158982DDB166A21A7718A30044C8411A4A0208B082CD8026484042AE1C20049B44C13348041B42D4A009094906D218971D2167252C850184450DA96409A128093904820066E89964C943060483206D8004A9088499B2224C130708A042D4BA660D8B64500051104392952B4119B460E80B60D50C00523476CD80021CA10420C16701200888830504B9864D80069D29884010929198061202065C028858B824D1221721CC304DAA00860048801B181904601D114410C452D1346280A426584A85192380A09A108148041D018685A96110A362602A200C31610C39409A3966812A630DB80800C89441C48055B484A88986898966C93320011924418044122122462240A940091D2306ED190250A372040B08901A50D603642DB82690B412E1233664C14259C4844242860232392C14408D098311427455C3282539025244309C42005DB4204039721904666891009E122400431800A2948C2029114116D81C00C9B888C231764D94041049430C0B231801409C12664C3068090C62850288AC042901B484A0A4431614030E1B6914B022A59008C03157002C3415A18080A2264E1466ACA00715836615A10695A240AE236528C204C113851183152419068D38D936CBAFC6D0CABA726F52D83AEEA8A3FF05E4255E7F63C029B9073A91EE7F10A6F099B1A4B89F76040FB3E47D0FCDAF3D918D45E4F4DE50CB74FAB524AE5F07EC05B52BAB164BE6E8D8CCC46AEB65821156B61D41EB183BFB26B33903E55F5A2F32A861936A86B5188286333383F8AF64BDEE081EF044EEBFC1297002909623F3602CA4E5E3281BE187642A758AFBE099D2363F128760C5C8E81D03E84362512BA967AF992FDBE7E296F15EA565930410D3B7D96B8A204A43A2B9BB1DA5F84D27E881BB6FB03A89B9366C3374ACA9FE67FCFF01F6E50FF36B83953880CDA97DEC97418DA486A5E0793324356C2F9DA4C4DC93B0532EFA505E499E03E351E287EBADFB8A03A2254B4CD613A800FD1C1C8C01B8FA4C38C0A0D9282196479F00984BE1BF77A4D4DC68319043AB4C5750461FC52298E9487B82D22E5CBFC6579A8DA9F76166A5516E579FF2C40A5F88F6E4FE56B91BBA46C861E2E8C9AAEB246966525C53D677C17FD78CCAC73118DAA7BE06CB81505AB8B0E8457A0ADCA59A8C9E81770A040F5B4C8FDBBF37B8F045698A5454A9E27478FCDD8D9B38CD857B99551090C967B12234B866B420BAAC46CD142D503D5DFE2D6491B425566036908E7C688B0D276CBA051E65CE7426A22F5B8B7A174571214EE917082A0B2C86B56AB246E93537422270425478BA48DA1A7784D65E9CC9018924EF9F94DA1FFE7389C1F77DD1685896E54BE9AAD552EDAEC0F6805BF5E0BFB7EBC57687F9CF6246E5E19FCF5B8A426DE2BD7868FDFE9B80E95607EE9054F99A62DC7D870B34D72636D2F1FF83B137752EF110B3FFC8507D7E2653DF554BB74C37C91E94B2E25BF2CCC6E50364951DF8C8A3EBF90A81047D3E916C11A913B5186E835033D8467B91B1C6CE39988F91209BDF8CAB8F51D1EEF05E8278FFA330A3CC019BDB1542065B483B05BC1A898607EC5ED10889DD1BA4FF7D07170C43A20D50492C068DBE45CD07508A3E3508EC6AD676139E8328F94705A2BD70DE411686F21659B4F3E79755C56A8535969BB530B3E87CBA4D82396E9155E9804289DE2A86345004C28210D82E0BD9FE9ADEE4914988991E4AA972894D1B1031B72279700B798627E334AF56BD03CB9EED6A7017F91A1664BEDB4AE4AA563F6980BFA5D4AC80C14BA7E78236CE3E889205E5E1BA7575504EC67DC4B9EEA4B93EBD3A405A581C48082972A26E9A01E6A0B207494203C3A273C6533C08BBA75EECC46396924C5F1423238AD900C388C9B00DB99C94CD429DC11AF68EF12A1F83A6B78A3CBF3B2F29AE2D2D1AE120C248BF8CFF2F89E3EF090E325A33F204D8295F1668C7AB5EBB4CDA2F4854FC77D407C7B8598D0E3F5641FFD38DB6E01B31AD6F0AB209EC6947DFF80970DD6726500E21166A91887C46777A1CD24A3EDFA94509D26EED89703A52DCF1D6FF58E01A03C20D0EEE2437D96EFF6E352B23A2253F9CDA80968BFE14F2E95DE9B25669F8C5C9CDF12A98B3AAA6D8D69482D39A1034F301A4B6ED56E2BE39508FEEC76C06036B84A19767E137DB94A56A97920E9EAC512CB689FBC8F952D298C658CDF2B3679FD7FEB7455544D3BA96BFE5EA43E31D0879E06BAB7EB0A60D24529ECEBD3A18C7926BB342D704860B0E7FD2023FE17FC86BBC2E6F27031EBDE3C2E9C355AE92E9ED0328D1BFDE9323D7F27E9236976A9940990E2DF561835D1BE8D6DABA04ACBBBA0AD731B642AD4ED47E190FF0CA334A2E228983D3A920ED87D5E2E83008445E804C29EFB2A23F5D97DA6617E5EF5E69B2B7E8ED48F28E28551A3217C911BAC9034F60139308FA405483A1E29145ED56D9FE105476EE6D5DA5C563EC4AF2E41A6C93F4A1BC1CCFD7D907E9CF728B113456FC8F4B09DF4F7E0A9B9DC80EB348296F2A0213B2D29E2F4F60C1F96036A04D6ADFDACBA5B7D7C0E507C5AFA41CBA0CE600AFF491F3DD0229B280D3CF075E9D85F738B40A559B64F7ADF777C587F8A74899D09AD98810B28BDA8E499685CB881CC8E0578C00E7A5B78F44132F0057A50904C745272DCC0AA7BA5925127CB0A2BDA50DB799B272DF3C2343AD0DD909A8E1F89F6901650867721DC6EA0FEAC70A13CD1DAA88B0BCEF9808FF9D6FE3DA64A7E78C5173B55DE42443E12C88476DD25048703EE0A9C0DB6CD6460F20D0154EB4292A73BAC52EEBFB9C5ED18A9B31E17853E5848EEF72ADB5742957AFD21AC1C13939E8329041E7084678E7B5F89166C86A3815FDEC2AF9D32E325C694B8FAA74FD1E58273F60C481883CAF62396C7F7ABC4E1387796AFB8164638698F885874D7A821CC201B907817C9A620A4FC8EBE40197F28F6331EBE33758E2F", }, } func TestKeyGen44(t *testing.T) { for _, c := range kenGen44InternalProjectionCases { xi, _ := hex.DecodeString(c.seed) pk, _ := hex.DecodeString(c.pk) sk, _ := hex.DecodeString(c.sk) priv, err := NewKey44(xi) if err != nil { t.Fatalf("NewPrivateKey44 failed: %v", err) } pub := priv.PublicKey() pubBytes := pub.Bytes() if !bytes.Equal(pubBytes, pk) { t.Errorf("Public key mismatch: got %x, want %x", pubBytes, pk) } pub2, err := NewPublicKey44(pubBytes) if err != nil { t.Fatalf("faile to parse public key: %v", err) } if !pub.Equal(pub2) { t.Errorf("Public key not equal: got %x, want %x", pubBytes, pub2.Bytes()) } privBytes := priv.PrivateKey44.Bytes() if !bytes.Equal(privBytes, sk) { t.Errorf("Private key mismatch: got %x, want %x", privBytes, sk) } priv2, err := NewPrivateKey44(privBytes) if err != nil { t.Fatalf("failed to parse private key: %v", err) } if !priv.Equal(priv2) { t.Errorf("Private key not equal: got %x, want %x", privBytes, priv2.Bytes()) } } } // https://raw.githubusercontent.com/usnistgov/ACVP-Server/refs/heads/master/gen-val/json-files/ML-DSA-sigGen-FIPS204/internalProjection.json var sigGen44InternalProjectionCases = []struct { mu string pk string sk string sig string }{ { "49A3370334B906E2044557D51118839AAB8A97EF68A0746FCA362E557CFA196A4B29254F34B4EA125D83C0C3170AB1A3971D7673CB56C26EF36CB71FCB6465C5", "6BD41CC40BB8620625090451FAB36D3161BBB94CFABF12023023956A84AA1C7EEAF114DB16DC85414F5969A1672D1810400AC2AB4E2A3E2ACF4B6891416B8A944C6670BE690C5DF284CCA6F770DE9355B663528020586C5397765FDF22D9B77D61744D6691B3A806B1F79AA12B456AD65C92F70C3D382CD1161B399A3442452B5BD159B7320CB73B3344ACDACEAD656BAF9E356C10877611D8D87D33C94C6B8C66F54B63BEA6EAAAB657F659DF7EBCD17EA722C646F97B120ACCCC9E3E7E5CA7672CCFD49513BB47AC94ACAE7CF49ACAD789A30BB49A349BA611250BB6641499E3B2BA469F1FF4BF8354C2F98F52C3C486F4BE05D5D78CA077AC6DBD8054A4DD8E3840DDA749BE709F748CACA7E46DDC8FDCD5507F7CDB62513D1233E03D0A26B5B5BA3C638BF45865B8185DA2078D52D6A426C96575D45C9DB41E0A7D63C759C544226EBC4E8216BD2FCEEB81E624DAB4BC656C34F2E20DF1A08D1F0E94C92250FC43675315553E13199E921DEF79C9CCEF5C15EC8D97915C5D6F6E174043C52F05ECFEE21E2AF71A9B6ED22832B1A6D09F4D6595E752AAB2AD71011739F5761D8BD775B5020FED95C9AB37882FF6F8D0E8AB1AA73D5C74F0E6A4A6F7016BCCC8CC0D8F9E7B4528C147CCBB091B37CA0D5F376E8C6EC8EF7B9D49554C0C955057BD874422160377C8785C8AD64E08AB97F5D7778A590B0D8977FEFA80993BEFF25329A78D274D730CD00FBD9A92B128BAB5960F02948BBD31658E202AD2FA50C3649BE36D0A916D1F8097C3D4852B5279E6441B4ECCF42361C678FF3EEFAE8FC0198CB07378A550EF0AC8D7AD12F0385CAC3D8600ADA648433009D763322AFA003BECCF51DABE54ECE1609C4BD8D3E14836C5A344C9521EA4DA37C1EAD95D212FF1AD5DD7CC15CFB4505ABC545451A9B01BBA2447BB467BD109CAA24106B23D6C380062743B520C4838023984D2BB18A9B7B1EAA136D4479B96D67D3D6CAC42E2904E0147578D2852888FAAF2EE7283A4725F7E006103A2E8E31D21340F648B56E16F8B49EE5EBC2E951F9DF09664C446375989DF2828006C0E6C6F694BA29E2ACEB26317BD520A4B272372939251CF8A2A813513316D507FFD8220477FB3ABD7338559BAE06DF1DE5CC4B26426F0E95DC9A76AC04FEA54C5E809E66E7CAE863B510D572C76A3BF3B011A577B265CE83B5DC95A10810B0123E6198FEC48184F62902E8564A281B036A96D71FC39F09799F7E46551510C8C4743DA0BD7C051B3A87E76E4FFD1B698525A42E6B273F2A359E736FBE5D01715FC3E1A92BC1185953B66DB4E1D0BE46E5A7EA1EA837FF7D6BE43A94D32299DF772F553EA7CEE562427B23268EBBC51A6E2C5A87F51CF5D237788CA90E661E0B43E93E8274BBEFCFAA66525AFC9AD2856AB28AA7544F2D38705A7335456A59E83DC6CD91FD3B64590CE9A7DFD38A4F3E9F7472F75F9DB6FC08C189FD3E12BA82DE42F69D286BCD943E8FB74D725A54B851D07D27AA50ED3D865C43932C11D04FE6E11A98AB8C2E8F92A8984AAB2F8D18E57D978C1AE1809CE12250E26D243D9DF8B6C4403FC40540FE33A9C583FE101BCDAA3751C5C3DA2FCC1B76E0D112486D4D19D0AFEC4CEA9A065EBBFF93733CA58126515D3DF07C6F7919B4890326BF936E12746AC341A775ED01F8C9E42C74784B6F678ED6A6A2E5371DDB7A17A17A6BC58B11BF730E9E3FD32F6A1659F33F8508CE9B78752541C4647154321BBF803A44C57B55C739870F2628DAEFB1758C880DE2F724B3EDC39345B70C771F5D2F041EF35B3FB8FE85BA5589AE7DE339FA4A6F1A5F689CE17378080D9B37B7344269D6A85793FF26600F6", "6BD41CC40BB8620625090451FAB36D3161BBB94CFABF12023023956A84AA1C7E10F73A72346A7A8F171D5A67C0B271AB9B99504A0DB361FD3B195CEB38C7519F7CC04987504EA0FC5B8D34682E0D9017C7636C3B19C71D4B143A7E7DC7C2040C4DDD73E6D98CFF73DB62C6FDA15F405590ABEC5E01791DFFC814871219F9215003A285241281400681DB84098180601280415340480CC02080820053A22463A831E3B00144820513044810B790539485044626C09468D2327293144E19B108D1C021432460E1148D19A12D542640C000311C32311B4149A3189064924D41C06421144912112213220E8BA82C0019684A0471C94828A2944421916C9B166883308DCC126AC2484EC328802201615AB02908B840E4B45109010E91840404826000B98D0B97815CB6442225641A395240100A09A1690B34901930401A2301199124892448523480D4142A20B36CD4028C9826518A9688A104851B2911C3962918A34C18982CD2348421B22004132ACCB68C98A64C53302E14028D911892A000701AC02C18854414156014214844020193B864109289091486CC8669A19209808069413090D1388401A02DDA808804B48110132E09C529649285D2C84803906803012AD314208B38929CC04403C84D43104C22A24803C46C0481455836660409220B4491609820DBC2456140881922084220459B382A01258E0929484480489140062331484A144A1B016860160422854120018ECB12656486080009500BC529DAB8209B4249C1A281E0B4918A306D22A4454028641A892082B84C1B064E102871D8B27102286462266E5824919A402002871114308DCBC285CB206921943049A449C8242E82A07149B240E23405011466D192902336701C08261A001020A52121C161DB380283B86024342099860C1BA680D84026128709529040DA8461C13441200966E08801DA12125C82891CA80419479024106D13348A122210E39401114246091409D3442C4B962D18472A2428084C0408CB400DA1B61018878040067221B611D4B00100C17024036C6440096148266228868A908C5C868009992850B8414C4466E4286122172694C0689A843001B76C121305193962C2B029D0A60D20962003179148B064531681E20251090468A2906591002583948522932420329020224E0B176484A82409332EE316882091014B348C13B38841B06108050092364C0C03600B914089C82003974143106011C368201466C4146EE20249C08829101530DA0BACF0DB7EA86D4F64F7E3F923E7CEAEF2556B6826FA629F42B53F004D679165D63265CE94D619F81FBB6903BEFE248C68C5B7C24654880D43A3B1CCE8170F488665B63B062A860C9F46735ECDE2D93A1B03FD6A74BC4C1687907B7F3B1C18FFDDF4AD7708D05A1BC3DEBCBFB4F6B9CE5D76413FEEF6D4B15773648A81A46D249043CAC68369F113BB45EC3F5DD0D3134DB81017E6F57A4B920E266A7F55CC7F43090688168A167621F1402F7047FEAEB94BC72A5BD91658E568CCE4A915156F989519DA5F58EDC88FEFB52DB9E1D4939C9A9F3E5F8187A6CEBC72988BEE0D9B1A1EB5B9F3E9A7B06B1097589D9F6FD78391E0B7E97A98B16A6C25AC8838044C4F27BA7C456730253186DEC07F1EB3C7B9780A54686DF288331ACD05886E5DC017C86A2C537BA19CE360760A62303CD3A754793FC2D22A14D6FE3EDF37E0E8C1293F4FB85A7E4E4836A8FF7833A2F789D9832CE1E7E2DC4D2B75CED33B321E3AF0450F0946F12DF76C26248977F1974F14713A4AFF3D4DD1A499AEF4016966435B4B01937980E9FBE56FE68F7C84885E212DAEC6C757A8C979A4AD2468C217B46B3AC36C5B3CC2B7A814F7D7D37359BB8BADFCDC624B39C9E2015D35F950958BE5536679FFE14171B8EE77F43028A39C2A1EF151992568FA39E8296A4169B6D7BBD2631DDFED786A5060200F1774B69B0C1C1F52E419E2F42B897A11AAFD514DDA14CBE2456D27FBE6FBCE53DFA29969CA7EB58C757C65A62BFF1D4836D2303C48713FBB83E7279E9A3BA31A3BEA862D3CE45C170EE9EE6F6500E85A52724A151524951C37FDB45A3A2E576567A9C81F017BA6C62CE8168D0DCF578355AE77BBD5D69FD29F4FB29357F8CC8075F7E56F2CC5FB555AB609A5047FD45C9F1F38680F0C414E026F514A44D79228B2E3CB79043D421B30E31ACEA52760C92C8C126F8650E676BBA76B702F89B360803530CAEE6FB06B7915CEBDB76C107FE9CBBD04FDAA681954326EE65B9C5AA2B9D329932915991A8357A39B37EAA5E6BFCE751ADB1E60171DD6C5B5D7E43BF19F2373F3AEEE9628FD9842156E540894750915934F93289467156F8A4F398192648E53A1EDF4C0F71483126DD39B71DCF8EBCBE6E2A5129AA3951723FCE906853F9A37AC50546B8103A82D844F2B08A0E0637577EDD9A9A9D5D635DA73D4CC83E9EE8B3DDA50F014CD66FDB25D099D451D204198FA6A4AC39E9759B435438B1E272E4FB476208BF69B825E8AED0AD9FF052928BBDCC13A330CCC3BBC4D098B03ACC25A38917BA825F1F3EE69D79573C7E38523B6AF03026B37250D9DB6FB7BFAE0541BDA05D3F4137B3E2E2DA492059C555675F126DA318EF31A2FBC535B25758A8B3133AFE6508BE8298CDC903D2937436DFCF9F495011749FC888C17D26755F1A446F05B82FF9568F807A8480CC9E02F12953E20AA16314C994CC7560AD062D1CD0CC756A22998F7FCD3805075B563BC7B7728BD601993CA3D1F491FAB38255D46ACD1A01408EFF40FC235E8E4B08592BE1C9D4DEDE7ED08C53E93E257DCECD65A704B57C648823673E57757F3FBDFD30EA640494D8B727DDB4E60B3841FB4E38A14F5A01E100223DCF0F54541778ED4AF2B804EB8D73D66E11A95A154C6A4FF6CC55708F5546819FB4573930A76D74EBCE331AB4BB05423C17966C8C1B5BAB8E4D68996D550ECFF0983E8E0DF673944C7DD0AABC16CEB3CDF1C43EB4EA97BE10197A089512F5D8A7240BB298B8E7643A57A46AE67A422F1856307984F41CAF02348E0744416D3FACEFB3C5CBA32650AF7D93B0F8AAE465420DAA8799AE34DD4DA383698F9D0AB40F40A6CCF24F7A0312A65269DE45BF2977C4880255A7906C17E8471B15018744051F746B2A85FDEF7C5FABC051CFF6B06E13750C2DD35331F8B5686E158C72FEDA9989AC63E9FCCCF338955D0287439788DC436E9A63D62365D68B545396C03AA7B757E132C2A1E7F917521CB115095F099D2AD5F26175CA808D1701F2A06EE84F08FFFF0E27EBABBCDA3B145D39A32BBAE744DDABBE083E0E3F631D122A94E6599DBEC7D0EC25A11422736C4F2D2830388C9F75C5CCE2255D2A41077D4B2CB1689C66DBD47079C35B6AEE11AEA598B2D99A80529872E99AD57EB9F6DF4839C456B526CBE2AE758BF1E4BD0AF7E6195BD5A1148A1366ABE06F4A35BDADFD60C87CA4C7D98F2A9C6F06DBD12A4A4B497D574E81644BB1D7D4FDDC077E6C5E309AB5AAA3153DADF178E9ABB258DD9D90FCB84841A50C1A2A9466E4485B211B47A0C711639B709D61655415F3482E8A544484E15427153D3FAE510ECF7D1295614C2BD080E2F19AF56F55002", "5D287B60D7AAF5E4996773AA4AB51DB069875B77E34195236A5F22CA9682F918134A44A9A1B87EBC1CCC6D8B0DA3AF6D948F17D50CB8FD8BDFE4590676B492763954A1F211DCA39DA52F7CC84A114CB675384421B312CDF7545A0ADF9231DC9297167BA03862A77D3440398FE60E6621422F80337D8AF6C18ABF348858370A77F52432E4CEB0AB8A1CEB07398BB682C5632274DF13B08E02FAC4385CF5E82F06A1454DDE091DF3A69EDA22C08152238C40828F1CB91A1EC28208E98AC789B42D5EDB4106FC6EAFF83266712213C63CE7768EAE00D74A79CB65025467905B8538F83586B0C4CA84EF5319E0A308BF2A40AFE6C7D870F6F7C949F0C192102B87AED8209EA41DC79D40F7021789C40B983E35DCBE3166E146A541EFB8B513A8353EE9F890D7F1025C32E9ACC9D3EA3F22203697A5A1494EF33C7F170E3D03C6F002CB5C84D64905C6D14D6C33C2809E65819CAE0E56FE25CB09C88BD675C45D08F4F260BE9F57724CAB4E9376AD9E64D73106BF74C734765FCD6DC8B780D17B4A4D593CB906F9AC16E7C3BAE44753B8F1E8583B6E55F7128196238D811E3C7C9E9A777A75FA86B984BE8AC4915474599CBF99290E0D1E1660A646870B3B0AA0A7FC517EF150381FD54752EEDABA8CD41AE34243AEE4E6A2343CC089D49F93A53149FA6CD4A242F7BFD0F0366C3B100E4F2C6CA263E931A001FEAADDB98EA69B9D10557CE4290B313A98ACB0633EBD36FDB23F6FD6F3F2BBE385659234593F7F22C65DDA23DC0995817492494DC8B50E031D929A324F59CD07E5E2165DEBA850D20BAFCEC2A081D0B483FF5CBA4583A8D16592BFDEA97729B47B29B9AF19BDA1853ADBA70B5AEC2AAB737B0C28CD16B1AD3AEA6C41DB94044664290C0F041A0C61C459323CB0BB0D7601CC9818FF81025338C49AA9A2FC9AC21E74F73BC3F6C63E633AE16C808E1A4AC3990C42AA3CC86750AB4C702AE256E02252CA0DDB6535AA55D1661941248CC25457BB359F1B4D98030C74900D7C9C052BAAFC492B7AD5BEC0464B020A007B84FC03BA050DD7DCBA6B3ED3F58CBF8747A8E5AAECDEFB917C12F5A09D865464AB27CB264AA034D176E6332D42C657F50D6FE1911E49D16638F43DE84723A7DB701C9829906803B9406DD49B02A46BB1EBA737D3C156FE561F6CE981D6D478D568EAC5FAF8E2F45DC5D5BBC7353990F3E212EDF5507AF74DF11006750FF4D7E099CA125E70A9F636F0853E3F9B622AFA5E3DFA1423EF2B16EC8E582B4F00F6D24D06CCE72A2A71BE94FB0E1E45BD81B14190F81F57ACF7EDD3FC773973242B0C3725C75F4CA4FC1A93AB729EC3C03DE66114FDBDED6AEE110916DDD661E1C9E295322F24DCCB0C615966154DCE750CB501BB3138346ACB45535062F2A241F3E91F362C2519AE8514E261F7851A0B4453C8CDD448BACE124595B2F871A9767FF67036DAA9E382C58379D0F9A3683A6013C3FBF5E9A6DF3985EC807B235169E027167920D5449EB6587B823504F508CA5AFBD007EB3BE06367081C0E6C7E9E6A40B208A75B7606298938F4EBD251DAF394A5BCEA227CEA803D4814AEC01B3992C9B51170B5F6051798CB8E9F574C5A52AFCB95AA127F1017A11C335696CAD6D66DF6A767841494EA5D788F44688491BF57D5347987CCCF0B8B7935DFEDE5853DFEC5BB3ADB0A459DE9B7C78F6253ED7939B0728E92448A0EF6269640B7131965D2FAFAD22E5778371C74630EDF6608980C853772579D268E181C7E916E6F098D966C9FD96A40E860C87A1FBD535ABB5BFE91BF08D4891229626D5E02E02D58E81E167D09AE6B816E4121B6035A3B7AE2A0D88BBDB3338564660EF5A6A30934E3AC88224258BB8CFFA7ADE5A5463D659153820F5D44956EA9430D9156E18D173C45FD73E1497841E7FD93DBBEA1275C5DC47DA2534BDAED2BBBF88E67FB25083F1899688B227F4DB6C5B62C21DB861B85452F104675B5FCA2EA286523E12C308B7B094B6F6E2F7F982451508FFE5F4FEB0E1D8EB4B3808A4F23DDD80F3FD6DF8E0DEF5EFBF18495D3CCCDFD4D601EF5C9AF227157E3AFFE08B4FAD8255FBC791F8F981B8ABAB8A7E6ADCE2B3FB5E4C695B5EF14BF10A316C9EBA08FFD9DCBE30A5E392090BB1CDBC6EDA50A8D9D2ECE9B06867C909B4CBAD9747486FA5D6B8418A84CD030B9AF1543B28E81D31F4DBFE81FBD85A169A378B3926417E155231DE3F72F732273ADB6A882339B246ADCF25A292B51C5D3DFFD3F9CD6BEF5B9EC3C8BB6A6933BAC714BAC6A3E0E85C56AF7E48BD8836A4DB0E695B8054EBD7C29E03A37971A9423C15F5A233261A19E147C0FB53079B1DA3CDE52E8ABD14079F1FCFDD1792F4DA54E1A4602DDB25841AD4D8072341EEC8975762A879774CF4FCFC76E538B225DE859DE7E38E10B1AFB2912E748D25D1D577D50B99137E79171F29A4A378DB61BF7D513BD67429BD60140E95CE55B381DE6DF46519D27A4AF33A3930681653AC14361D7DF0A60E7492BA766E6BA093C867E4688F34B3BD6B9E40C7D6810CA7229FD1FD9DDB599F194023E74819893A52EB7FC82FA27096671DC2AC19AB85677277AAB9A7DEF8BFF07D4DAF58B647B9750244C243A7936BBF9F2C718CB2FC646E02E3751AFC66B35E0131B7D6ADD7C2A01AC4699EA726C2E70F97CADA7D41E18CBC560B12C150D483A94256EA465867A622E82EFF21756FAAB96568FB21D0E041EA352017CD443EC573F2CE304C81CB9B3B4199992C1386A8F8E8B0B0CF004E4807E6B471EE9D15540F2B4BA130311383440B108B03EA6049E8CE411805371323CFBC17AF27D98238AD74A2BFA4440603B412069DD11FE5BFE729CE97642F82617A4D8AA9E88CAF708A1D2FA4326FCDCBE416D14A035A1A631F24861B5EF2E057B7EA97DB2D07AD6286A6EA0CB5F2AF0A6E7E2C922B75441ED59FA50EC215AA69AC6E460FFB97F5ACBA33FD9DCD863AE60C37F7C598DA28DAEFB878F9AB86A3514F5784C02E0BF343DA22273C984F8E861C4D083A6C52EFBA7EE0A9E94DEA08A58BD075BEACA4F195F2173A649CE84A032EFBDCDCF215994BF4E05B9D7DF34B317CEA9BD31D0B3046236C9CA703BF25AE121976C5AA1560B0A844B6ADAFA301ED2493EA516D079A55349AEAF225DF1824854BCA9A12C5EF16C968F125FB1FA423B68A131160C780E54F8E311E28AE3D3267883B759973A565DEC16C2AE538837ECAA757B407A9F463ADC9BDBBBED4A808040BE9B8C0249DD46E45094781ECC5C9059BAD7AD43AE6A3EB594EC1180C0659F17A8A0B957970A080D2C555F9C9EAAB5EEF2FF12163B4A515C6278797CA6AECAEBFDFE282C808B969BBFC100022586ABC2E5F60000000000000000000000000000000000000000000000000000000000000000000000000C1C242C", }, { "E6847B270E001A082BE44576FD0132ED978D42797CAF959F57EF135C8F40E8FE75DB648FC11CB6D77ED6B49AC59EA1DDD7331480CCEA6F4B143D44C4D798DEDF", "3741620EC815267ABFAACA2A01FF8F8847A78917B1FB034A60CE2EC4F3322F22829457022904F893A1011D7994977817784A68AAA6B2438C725542D26CB487D8DDEDC5122394BBC987C480C7A0B10A5726B93FEF7860B6F3C944D3BD25A9AFBD3BBE5860E66A4C60CEE9657117FE9693B0AE6A1AA7D162B89D575541E91E133339DDFA900177F4C9B5610D6C6E7C449DDCD5AE5CDFAC853036066211BA65EE24CDE8CBCD8D74BCCD948BB5849CE56AE568C40A7BF70F372D440C78624D49133EAE5602AAC94F1A31777EA5938F410A13C46AAB51347DBB41AA9633524E03075976625C6A5D85524D27C70903458AE05031F3FE5A4BCA916EE114087793A0796B1996DD3984F4DADF457C176C834329A291FB4D9E85CADE1EBEEA8A28BA5623E2B40C52E8BB378E646EBFF15204AA4598C3D419A57A7F91388FA34A0C49D7F31F1E34055DD3199799AAA09396E8BD6279A69186036C6E39E71CD85E63C38F55B09F0B972216E1E93B5354878FAEE682332B711FE38568AC9F91D9A6EBB4681C7B13E5FAAAB32575ED7EEEA026D12D374FA20D35873DB00F9442A16200CD37D8E5399DC1DE7623C935FE7C7B88A8E6B44AB7E990455B5743B018B4C90F76CBBD89ADCDBE166A22FFE45C9D183754858551FCB739823CB9708D7679C42CE1656BF3198F6F983AC4120940595DD4CBF14A6704886DF2C60CB16DCD060F70604C9B8A480998319A33EDDD0535B1012016A25E0F88D8F9CF8A4D73E41AEBD828BFA3736887524EC2B11319BADA5F79654E19A7B5A32B26131F3BAD949F828E543B7A3911184114BE8FFC2519F6963ECAB6A0FBEAC08E2B70D76B17EC1E1401504115C0A6498AD769A65D38096D40B48A1B4A92084D4AF284F58F47456BAC1C7C8CB90412F33049D290A9ABA43E98D806D42DF088BB4F3062306427A0ABE9EF3ABB1A2A410B9D3A9B6FF7EC6AA4E4D7070B5A822C199188440EBEA846F89F70C46ADEC20582AA1F9963BF3B3BA78BD5981C97F718C86EC49DC092AF628820E13EF21A1B273F6946A493534BD6819B1D6CC35A377B6A9165EA3091694078E190616126B1C7179E2806054B1CF34F3E9425DC689BCCEB46A9B23FC9B68C2F5F3687B23BC94A75BC0DD7AAC55D647050E7CE5F8B14751990AE976579E6BF6EC2B30A46EBD1101AAE1DD4A8F54DF88B946460D07F080EB4157C50AE054BB7BE3C50B891C9031760AB86A7DD3A42A598CF35B0A5F990E22053412FF52C8C79D34800B9A8220C60848C5E5C35AE7DD501237C5C16AE0791C301DA637744E254A5C144BE21BC3ED6E2EC1B611BBEC1DB05FF73056DDFBD2E4BEC30FDDEE996F35B97911AD2E2EBE0A89AB7FED80E20B0BBBC293DB0DDC94745545D868727344F1A7A0219FD6853C8A1B0FDD37343A130A8FB5C8AC6E730FF4F9F484F3800B012A7ADD6682F5A43CA937F367DC3F235E766B85390D12C1D172F27B6743B2FCD29D2A73CE5B17DB069A2638D2184C7F67937858706AFE8A0CBA3B20CDE61C08BA70434DDD7B4B08AECB96C3BB1DECB091BFFB1844740726064D5869E00AE18D21710EA228B57F04DA6118552077821BDBDC033FBAF3F865326F39B1AE364817400E1C97F7069AE913ED527E69AB65F042E2545DF8C5A158F5C3B3C63135077002BA4521CA53586AE5F87D4020A2560ED8CDDF32EF4D65ED950D1ABFB363BE5B298C47B8EE8E334308396E15FF9E4F7D24E7A60D1EA799292D80096F290BA52385FF5C3EB7DD73EE967D8F7B559038EE2679E688DBE6337FF59EEF513E30FEC7442F65CD9F3E5D08373391577857324922FFB00B6DD52FB0DDCB2A6CC30C0094DC02590656A4E206F", "3741620EC815267ABFAACA2A01FF8F8847A78917B1FB034A60CE2EC4F3322F224DC6738D4B03C040CCED93C9C6B454A474B9DD27C19055AB1A73B05AD5D24227FC21AFC604662BA78CAC79C2C66EE2BFDC6D7ED74B78CFD53FCFA0C83B1E03B173C2828BA949640374B1FBD10377DDC4F044EC7569C0B90B73F29F1D4661508EC230821CB50401262408072E22C9712488304A200C9AB4314C2472CB400981148A63480112B47100C3400A4482D90025E0204C09B165491429C138800AA44DA3100D04A14D21182C813484C0C06C0B818D83268C9C46280017665924850C160CE4305111328A04338560306EC9C8518B0870D0008E88A430E33831E030626184214B402ED136290B0328D9948580360E9B423211C17019C0815488900B3382D2206103C9511B368404978801996813848D53B82CCB4852D086085406310C91296180819CA64CE3440001A2481136315BB84D5218514B8008E18010E4306460040A9336701B2921D33065630042D1404A8A064491226D0AA964DCC430639648C218044A482410368A6434095138468AC841E3489250242D594466A4B06D43402AC33812D02882112564848028CCC011C0161120127013A1819118709A1410099065418021D144641A402E01168CD8489150462D1A00650C38311235298B146504056922350000B0310A81110A256490842C8A107149944823A64549B46D23440158224A62486D21B46D02108940C46CC8420694906D982601102361C0203208440C5C28518138088C420804435018366618918513036821A47160A461421448DCB4415A26042482815CA601DA12650B974C0B2786644411E1C864C8380653966089008EC230208A444C21C54163B04C08116220310C24274AE1482808903162348CD4484489462A102384E13845812462C212911B308819392E181884CA322814413014222499900D0A42860911521A1592084222D8B84CA0A63060348E0BC34899347223B12D40148D04B74508B5901B8651C0C469E4242A221781E3086593C6890A4565C9862D22236ADAB42D1B374D0CA00884222060108A04958023352A92326104B5719B122219C10021B96D00370989C251E4146853A025C3A06448226D41B00811346E13A471E4983004A22104984083224559066C403812A09211D4280244B86C921650CB384E4B9004E2064D4BA248E1A23023262D248124A1B070142051CC84201A22640B291009288C9036088134492382902496091C25659A3022AD595C8E1786745B87367A2F0DDBAE06A43F6B48A1229EB4DA3EE5088D8892C3B962EEF5F44B61BF1350A5E0530756022F4D846E78A4669C8BFC29771DEA56119B9EF0E99B7B727104992CA4ADDBF3F0CF1EB4AA8D08D5B53F71FCD0CED3EB9A9038FEC2155B185487F0178791DE324AE12EB6985B5970A4A46C7848430F983DDC9196C2179E01CA14B62D9EA1E6B136CB6C30B93148663E06E775BC1954AF39CDE89AF76CCDE99069531B51401DD192DBC5201ED06A713584BB2F178E171851C92AE7BE168B1AA707584D7CABDEF6B0B8259CE50A36E2F6D7A7B2D02046F3FF2ABB950A8E64E5BEF21C860CC37FE9FD31A4678399BF1578EBC3BC5744CEC8B5E13BB11E3710D03149130859691E6EBE50470AC746B8DEE6C823DBAB784350D288E75FC1FF703C206819DDEC92409E2A1325220DA44710465158FDE308F711CD0DA82834594997CABC03D3715FF8702658E205D9F1A5F91B9C2B1652EC109BE4CAACBFA40AD00CB5281967C069A3CD94D613621335D37B6CF4495CDC4FC8D057782865C4AF229FE382ABEA37EE7A87421672D000EBB8CFAE9D6788897C7995E820A6F7B1CC6F262251E2ED13B71DFF9C6C7A8D7CF3F599F35BE993534753E5910AB8CBB4D5B86850DA412418C2391174200A0DBAA9AF224A64442E06E0F7CFFE5B5757444DBBB1310518A814066B697DA8E529080B92C28056E62C8231C95D5664F0B6272B7AF385EAD52C349320093B95572F3BEB69A4810EE4DE890CD1C13B81AE428E1F9D6058033AFDD40436C243831DF34FE96FFA421F6618F960ACF4FBF53344FD8233EED6FACBB4AB41B416B7736C986AF0418B1037B1576D717F1864018FCC61F2B0B459FD7E8F48051C6899663473A1FCB59034CAE71E38FCC43BF394D1296AF1A7BC96B939FE9D3ED61B262A611ECEA674C3D53D520429582559D9137FE210A11442BB53EC3AC0D86CD6E19559131771B1BAA23491D45187BABB138548E0DF513056BEFCF831BC5293784BB4E369E281691B6E8BACC7489EBEC86CF8ABB8823FC6B69764F8A0803809C7F2F6F0557686226729B7B9D8C0BE9F7695FF303C928F6955BEF70BE6870648BAC6FFFDA7CB1D06553C94CE605F10B54B7F1DFA2F4E6F4787DEC17E1DB072637205ED75D2F5536567125543E3406A126808BCC43A0E4152110297007B7087F3AE07E1AE6FBD8BB60F0DF8C3D7F345C05443CA89257A2B1974ED3DD5795DEB620157FBE0D6B389A7F792E8C20A5B75A5DA0000B2243E2A371393B3E78AE7695BE51EA28D0B022E184FCD593138A24339D8208B01AAA78841ABA20A86643AD425A584DA8341ACE00C436A6570092EAB5AB76222D5704868A02B075D7A416725BCA5CBDE5CB7E9D89CAC139D8C35CF9677B7CF5901E845FC1ABAD221DDEC1E0413D8E5840D471A6A0DDD5E4E26CB5E5B8DF4C13B9EB33C68B78766289DEB49CA5042D4AD4E0F26F68C754F14F745F769779FB94365E1B44390CB0E1B109A26A132C243BE57FC85F5DDB462DAA1E5B54DC67EAA8B30F6FB4CC65B266AAF3176D89480D0C7EA3983DDBC730C8EF84C350C01AF17232DAD1C78210565F80B438695D92FB52BB82EE833D6162D3C63A1E53F71872BAB70462AF59767F7995BC96B5EF0EE87ECBE9F3D2DAECA63AC0BD456D92B7E0A4F998BABEBB8CA1F4946612C1F7705BC63D6D1343A205E223E23948D2D9DAC1C7A1C8D1D09C8598CD86BF3C96A8B09260C954913188F49551819BAC6EA820EE0871C664510EEE3E779455DFC9521FAA7C915DB87F33EFAE8FF46933CD0793A9D61D77A19621617F208976DA15E6B08F4CA7102DA74C41FA59ED1FE1E77C0D1F87631FC1FA05570B2FBF6217B6D839131B0F22B128722B991760EC5C9F0B0BB109962724060439F0DB3EE77E90E9573E6CC15354C7D513DAD4DE1634E7B7AD55E15A086133323C006B21ADBC758996270501B5B158C52971BD7F9B7F662A327E55D521DAD43C5BEC1A6796FDAAAF961EB2B057EBCEF10EE8C6CA84100B8CE00F37FABAFA4DF2860ED08FF86C183361D5891A330B7B154532461DC897AAB3587EAEBF29AEDAB96D75FD9A5E465DDF384508CF6CF2C0F850C5BF8739F45D308B30F8CDF8EDA6CD0B6AF22D7DB27024A11AF95DE8193626A02D0398CAD3E368D5133F6C6FD64BF159B8149EE75F212EF5A702B42DEDC7A7C082AE8819CD864E4195F37223B807D346449E85504B6CD6F9598F54D267EFE4F5A97BB0FDFD4EECDDA6B3260F65A8A9EB87F1ADD7C1D6DC6B2B43E28BCF43D81E170F0908B78AEFED6171BF8E03D6B60D0B7DC43B01EC99517136F17EC52920D71EE6E3710B4940960A6", "484E1A950755EA020AEAF678B9BADDC9F37F9E314024D09A832964C4B71A49054CC08846417391B65529519033831D18F8769B747C69775B4D0E87598FB9EFEDC75F57D50229649B83E11EC3C4A7561464C7F714979D695CF8618C50F93B5C2ACDA28AE7D43BA01D9E4F13E2D3F7A732D26289B9E7C07BD7D81B8520B5302E5D8D6EC5865C18CE69B10AE25B6BBF8789FB764BC4B519E8A7BA0ABBD19AFB6F35F6516307F35344EA87B917642926646480CEDB3E0248387A105374FA337F6BB61BC7F9614BCE543C11A929345F9A1112648A95F68AD21866657791A4C88E9CD6EC6115A717AAE28DE1BBF90A083AA4F375A06A0507759894F93009F988AC2BCA384BACF4B351F619A237872BD6C8735DAB7533CE093D8BBA3734DB963782A5F850E36934EFBFB7C44B7D6CFC5BBDF1BEDB8BC50F3673E08DF9962EAFD4E5F822059ACE694D5EF4DFECA035C603079B876966444672395627A60F24A45D6EF8FCF9079E5F979A4F4E501F97FC404CF072015B3A13A9C90C1C558EC78F2F702D8D2A8FE5CBD2E2000C7F817119BEA4F62D557149DDC57C14B3E99758117C4B65B45C21987D163011C28A211C65959C0E67DB8B7CA4C5984473CF483702F89DFEA1E3C96A492ADB23EED7A9D97D4DADE18E46BF7016749C12EADE9061E90A4CA360D908D6B0F95B02E8DF8F1EDB015528AB2AFFC7CD41BA6393BC628FAB40D0C203DD33699E286562405C82048285A8CD7894043F15FB675A1FBC6115135EE2F3C6F8617C05C983EEBCF35D682FD100F628333F1CDF91FFE2F882FA7B12400328EAB3EFAB96B7F242FC5DE8D8605D166A66E6A48F1CD6C7C374C08EAEC2D2A463D968C5E04AC26D94EDF8ED9EF5074EAAF8F0E24D1D3742A6D7A388C77EAE08DE51DD4C5D11922B5EC3B8578D47AD3DE73702618CBC9132504D74D64AD8E5459A1976BDC559C2439A0CF07BB6FE71536B3231CA48A2DB339B683DB37FFB9E17358B4728DA04ED0B429F99ED63E05622BA7F9B71F23A34CE6BD90641DC7CDF9B1EDA427B19FA7AA66633FF325227F3472A7B5097155E987E7CC2AA51CBB569D78D81D73C663AC7F417386B6362FAAEA938A4284538C9D8E80BB4625F3D9059F03C518958B61863CCA21BBDC8AF1268F6D3AF20E3BFCE0F010C1822EE65DCA6DEAE0335D0CE0291C27DF8168FA4F19D29E8E2B99EFBFD7C1EF56DA1090E25F78DD3090EC7B176042D6EC891030031CFAB71D917A3DC9BEC7502BDE906F77CD7C5919B47822A193FBFB570A70370FB1B1ACA12F92B2B78CFABD2D87A760337C025165DF8819A2B1E8D0429FA7D3584585FB99D7E98B1394C157D63018227953122E334842EA56D6A4DB55FDAF5023E97ED1488913673C7502AB7DFF0298887D03BF632AFD2AA4F94EED9ADC3D4EF3FFFAFB1D17C13041395EE7613E2E66E7CF7278AE52145786A5517B69EA2C649766E7A3EC68521A6AD82C5416FA285D5DFE837276FE258A5907A246E2E530B9E701F94B451DD30782325189DEC4DE9E560DF8C37C17E7B090B90B61D977CC7B34C47EB4F01EE3AA786948ECB4BBD72C200D6E1CE0713DF730746C7247D55A29C288E1839CA58EDE302430FB33C85DCC04E6E8FF4A5FB4D6E14DC6E30EC13ECA6383DEDC39ACFB9D4A636B9498D79284E27310A55F4BD92AD70EAA4821900339DD334E54038EFC0B64CFBEE61AAAC968B24EE3CB3D52BEB66C533FA7BB0245A434D10BEBB9E6A64E0F55985E80E27D23663684991080108B258BE64CE1DCE08370A5C79BC8198A4BDBDDFE0825A11507449EAFE7BAA0C1EA76B9E102E94E7DE8A362DD1C7CAD56933EB0572B89BAFC04EE4CA59D0735EF90C21A81E935842E2FB760FC9761C4A215119FB396C67FDD1A95AD668B4CFEBBAF96F9D7C2A8E867573263CEBB751F36AF454963D66712CE37D2B525C1B5C4412803A85DD1D5947623539988C4AFC72D5DE78D4341C821715A49B5945B5006A9CB363CBD7CD1B3FCAF9598F62192890965144FBC74CAB9D9673444E66DCC4186A014872B733ACA3479A81E79649D7E1B0643C7471F7C946FEC641559906075D597442663F666F2D282179950C08970E09010193DC87EC2E93570C445C7D63A842BCD7C59D8B18774D4ED1F3A4E25BC5726D30B2901CE68FC3352075BA0AA0BC4AB7363FC2B841D03B3FE270CF24D648F5A06D0B68D2DC92A5DAA9997320E03FDADACB3B87EF40FE9AF8EE5051901BD2D330F8390658CF17EE8E4FD1D08DECDC2CAB251B1DBD84E48D5EE9C98385E715A54730E3934692FD8DB9F1F86EAD87778F46859F1A1C41E39B804C402524E663AB9F8B1050444D9917F9F0B545D9A29EF7A7BA5C435386EDAA6FD54C4AB9AAD8EFC1FE1C1B1681B688092C2D2CC25B56D236792793D9551DFCF522855F05F419E68960621A939A4D16C8A0AC09F4D3035AEDA9154E430432E71FFD16D438BC2470A670E731DB879A36869FA4F69C203AD14CD1E534F1AAAADC8C97107846E5A58420CC04B4C784F7E5BFBF1968E41AB70EB234116323A59416F93AFF38A95F6E599691B2A9B77A69D621C2C756CB4A1D0828101A542C7FAE6FB8FA147C16935AB4EF192932C8060D0A6F4D19E2CD0C3998CA08525F337FFFC66A1ACDA182DA984E9110B92B2605841C55B4E8BCB0858084F454661874098ADCECD5EBA7D9802FDFD1C6B5C955B85EEB067E9492B6F174C403178D42426526C926DAA02B942ECFEA6CE4086919D6859F9AADA5E61B140C1031506019ED696DE968D290E63E21184968D0702783470CB98D425DD37430BA8B1A79A1F211CD0C4E8B9FD3EB2B14C52764DCC8F792F61E60EC8F4BA0B157F7F4A253CEB540800BBA9B09DA801532CD7EBD6C84CC69CC9A372BA6840A44517115F189841EBA6F041814A3B1F5C1BDDD21EFC452754A652757DF959E9436AA62C7F3F1B0745E667957A6F53559C493770C131AAB32F54E2902F6BFD29BF1B2B8FADA086793C04F7BB69401EBC18EACBCE12F7CB643A8DAE9F2792965A3017B4CB9361893864CB8B0A10D4F3D9CE0A362BD26D40AE33BF84BB6B3008C6B277B8F026767A29A3BC580C29B8154CF138BE4841DE16ED78B080547A1DE15B6CF44C53BFBE538787F98439B2A96FBB27D651B324D0DA7317F5C1DE4A2E1617496E50E2596C801C683B299C0B734C6B40A37ADEA6EA49DDFF81343C3F8BE5A1FBBB16088123824E904DFBB096C36A671E5D5B7FA9047FA9EE63D15124EE9975E08E6865E39296D7DD87E6244891BD7E0AE5BD6912F48375531A866774AA8A9338B88212329484E7C94A8AEAFB1B4D7EFF3FB081820254B4C7985A9ABC9D2D6DEDF1E30323A427275777885B6BFD0E41E22292C4E627A7F81848DDEE0E6F1F400000000000000000000000000000000000000101F2D3D", }, { "2733AABF7EF90063187D9CDA3C1388D749E1B53D098C28581B4E92795C01FF01304532B94BBE407E17A087C303F9E51396E06D0C55691959EDF57DBE7717039F", "FC7195C8941838C77419840D0DE5D8A914833E8C6E230CD13A98BA2F52525C3850FA6CA8EF02B665E600B336B37D0425D9CB16768098F051985A15198EF1E0272539D3E033355F3B5495F0E2A5C6A3981EEFCEBF7ED510AC0BD4E307A9B3B4D55077FB1D69B8E50ADE5B308EF7A6E86457CFC9AC33292BB9842D5835A05760BFE2FE18EE06B40221B40B3CBD6060A77675E3C1F91AA1717DCA1591D01468C2413A6DEEF92DEF3AE8E3AD6B9A3FD2559D098C0A969CA5940E14A654E97307253BA5D311BD1FB4C66D3A6FAF489A9C9FE4B31E7B6BEDFB792D53BE7D5038D600BAE89B3F0C831AFC87290A9408F0681C40AAFF790A93A85A6EE95C2E2608CED4E1F564C952545901EC7EFECA6C4CA1CE1F6A191AA0194D9482BA7BFE28C4E35BC783B018C2F1D8570963098EEF770AF27589FE1529E96AF3861A07C6B4144F921EA0E524ADF7B06C32854F90C935CCC8DD796A21DD3A94902A709BE93947EAE63548EF1061348B677E1A1B9A841A0FF2F5A31657E8FB7A4B963A67C91F97DAB784882FC6FEE40AD3C682A18C4C72D56612762B99FA35E4F02FA7A4F251EEC4D66ACDFF5FDF85C9C4B10A75478C242042FEB8E1C53568EFB8DE70D951D4E029829F78802A23DC1FE27CC4B2C7855415B8E0C9C705243881E93478CC352A1775F9A7A0F962CBB598E3766BEE890DEC6878A18CE67A9190D6AA115DE2C9A8640E339B956564381058060D7309CA1581DE84428E1AAF00AFF731E0CBC4BD1B6518959266123F5E3EA3AEE5BF8DF8E478B2E5A44E3155A0BE4F46AA07557AC225EEAC8ACCC458AB722DA03F498A88444087D6CE448EC98C55EC84FB46C43D2BFC15440C06984F69504FADCCD69ECC512434569389974A7CBE1911D104A3ACF178CFFACBB59DBC664A1F3DADE8F102F5F37EE168042B2BBC0C5CB26C306EB875B532FEC5048AB034A22B7754739844061F2E9FF56F3B15FEE913D61C3F4B3C8764D56088E1EB82DE499B10E934F0C51E1BEECC157FFE91120006A411ED489A6BA9939352515628B95C9DB3BD09B622EB99F8D9BCACA3841DE6D125F1DA6F18F19260270DAA0064E1CC375BD20F6CBD17A63E9C2DDCCED2F4ADEAEEECB693AFD3DE57922CAFAEE46C2A45DADF16CAF896915121D6256CBAA1A21CF7C6E41F4168289CA6127AAFEEF5A2F4EB5F5F202CC7EE318C9189FBCE517EBFF27A017C1C955A5ED5F6ACB8C259202E17E322DAA734E6D524461692942767CC68C91AC7A3E5EB79A1E2A34644F746FCD414E3A63907765D580E9856264F6CF051FD69FB4560CCA4D580523B3E241B7844EE47DFB7CA7C0749EC04D9616B075133CA6A972E44B92805CD9CFF0C87DDA282FC3D99F990DD77F684330CDE6327EEBB258DB624BC96F9E8D60AAE0E4676FFB5C158D315757C03CAF8DDF21D5084C0186D32568C1F9D34F659412E51B02DF1C5BFE4226A5CC8C27D8EB36016DFFB7B31A54F44050AB126211BA87EC0A8A1EE677E56DA03AF68C2FFC7754A92AA9F2C81A5D03F005E63E38D5D1C607D007FA34876564F1DA42C1F278F9339931EFFDCEB3BFD8E0FC7ABDD8E883F0F0CB3C8A81CDAF336DD55E902F40AAB2F5D33554C8BF592F421020DD92E5C037B36AC96CA55D4227B636C65D277EFFA85575F7CC7DD2DCB8667B9DFAB22DA7CA8CF817868809A3C1DE72838943A62908522E71F06E4D68771944CDEA76A9627DC4238652E2F3628589287C78C87A2D2B1145AA8A2842508DD9D99E073969D4E9503790011900E7F9FDDB1F612964993E7E96481B2B9AEB9AB1E62041B8BDAC89F47572B7AFD55DFE1062891291AA3870B7C155ACA6955C3AB08F5EC7E7601", "FC7195C8941838C77419840D0DE5D8A914833E8C6E230CD13A98BA2F52525C38C827E74BD777C158E1202ED9F182CF87F25231D3DC65775386AC182CC04C466722875C1A0CA68312E1EC14753501314F64F7B30C293034E9F796ECF3726D1BC8B44E67F750DA461106CF602063DAD08070400A242A140B0C65C05D56E596311522272551C030DA9808C2186C24272282282251084E54822801050222056188146DD8B82D8210401B2006A09444C09691C1904DE2444219A16D1119650394899A40615B2250D1B280A3168CD09225E000844BB22091062D02067013B12108110A04130ECBA451C49601D3244289C2288A04651BB3280C462D5C32460B002513492DD83086423409138988440866CCA8105A48480203094C9065C820868CB01124811118B4294818865124089A822091B06CD9A484CA2212412469191031D9B4611C200CCBC82890346ED0A4099B848C5B384AC012820B266C9A164409236C52A66118256D141120D1846520062E1AC14C5A4290D4420E084761C94072E3888D48B60463B2055202299C988482206653C245994861521690D3A4909C16694A488214B50C081666D98809E04425201130DB8250644285C3B82D1002259A18410416909C3208E1B664C2403159A25002054D2384211C27225942041996281346260042691893859BC6314334488136815892651C366A0CB681E0266C11C8885AA46503044E8C1052DC260C24117018072D04A88CD3446A03A4051C924DE092458B0484D99471C216240C068C493228A11452429225E2009009A14918264A4018811A860023A40DA4264020A86D50802014840D9B38220C178251A608D0260D5016722192681C960C893052E30845181421DA924002A07104842D00B82401C590E142821B1864443645011240033831120729C088095B3412231212449864DB180A0A132A4C880C09146821212262809113B791821489D9828891102212C34DA1984481428ACC840050886903182119081019806D58804993006C01324824348C11C5850044661B27028926401A374D142802039920649481D4A46C813289D4188849B890D3A681C0C84CD10449DC3040D8B068144846C8068112478A812281013962411008DB4282634886C8388ECA2686230805204031DC824D02242E50168091448D03C22592C22D93100CC0A265242361E2068910153181344094C8008C0230D38424C8084E8B404843242088446D40A069CC280504438A031386DBA40C920622F2A58BF448B4FDC52BA86546559D3BBABA4E07245CABBBB2E2C616A1D0FEB6F2F0443693A93B3E464B7536421B9C52EF063EFE0A26575D77C720831A7E722A0579CC9B8444A67D78EE60A403154675A9F7ED55EE2A738034166F11CEC60F862C3909499344520719DC2867B1AA4A1EF15C814EAAFE62A2FE0AA86A7853ACB15A18A2045334CE4C34F6371E46502B4F7C7E1189FB22826B0723BED0BAEE6F432E59477A047D4321BB16642CB39F0CD6309A3090AEFC2EFA10AC0F5C9CA4E4198A2A1F9F515047705A7BC4CDE86480B19589AB0D3C4F53E63D69A5CE28BDA8FC8A7403A1CA9C1C2A0220FC462C20063F287D55902C0A48EC7A658758750288E046E7E5B94F99FC173C504A79F22661DE7E7F28595766331C9C527B8E8FE64555CCC26866340FB62E5FCB418DC1D3F20AB4A19370B61EC77E44AF3D9C2FBCC8AA1F63F1849896CDAF78E2F3394E2427377904A7F60940E47907B1694EEB2558185441AC0994BD3BB1086B18074C4B481DB10B655D6D080D5A02EDDFDA263B88E4AB3CB8CACE101EEF15D161FF59624BDDC38818B8BF2663D9CC7046C57F4C8E2F1B6DEF3BB75D590E7F96FAC9797FEFEF7F42FAE9119C2626E22A84308F5C456091F98C878612CEB8EDFBFD32239A156A17700A9C6C6588930B312680291F4481794681DBEA92F68D688590B679F5B2D364CE87F74B321193FD6D917BF907A07670A5DD976F187F65DA99C7D07E2CCD37664C8D410E0693B2573B1261D4EF1157BC0B49F253C6E96F40FAADAADAB9D144FABCE5B03D5C65396E71BC9AD8995A386A30C636857E033DF2EE73ED021D99443EF672623BB47642E2635DFA47DFD694FB8704FA34B4AA5C6F554C0C8B9447685C59715A8550C69E228D3DFD25D2DC102E7332220536FEEA999FAC09E5C073E19223FE6F9C458B8E323E9D0A747689ACF614A7EE7418A9655A2F489502387CF6593F756F760F032A6B7C3192BB2F0EDAD7583DE67A4311DBFACCDA8951201FED0FB7024F35A1603A91AFED85B2F231B099C45BD18098DB598D39E601ED38B83CFA12F47AA16D1555AE6790906A080DF5C8918DDA0CDC7C3D42B311C6097D1E086B53CEEF9632DBF9893289C6884DD88C09DFE9B005EF01377BF17775D4E9E71BE6260919F521B6FCD53C115BE6F412232607F5F49F95E03BAB3ABF46EAF32284AB24F9F72EF1F45FEC42D9FF5FAF505070360322D94C3FF4D88CA6B38DD255AD0542821E1AF1D6EAE5141767C52057FDBCCD57CEC7ABFD848E5B8BD9EF01CE925E88830C73C09BE240F12F8FE5515A215D3680CBFF69D0BB87302DFF9E2A57995360748AE0F50BE464B9BACF0236A3091886C9C80CDA01F598B9321146F102941C5FB57D2C0FDF5F651478187D10F0F7E8F8508D26CB539B0CA4B5EA40FA51F88EBCA0131FEE210DCDAACB7F507DBAEBF63B8C7AD82293D1F849FAFAB0592C408A1A03F738016D822B35282CCE2853EA558D59A351EF4B7EFEE8BA13A601642C72A0EDFC01A4FF7C24ED8FAA13A14F909F392ED82052352CED0E3E73CFFD0B9D9FF7E9C75CE2CA599EA6526059EEE3D524BFE5A9B5EC5639609F3E3ABDC3EBECA2FD94873599968E5031913AABA6B89A0A01C35F706699D2E4BDB44614E4EDCA85A7B1B0DB159DDE9DDADA8689E21FFFCC91AA64FC811DC9A022F1B214C572FA0FB72D933C97B44C48956622821D46DD38701CAE85DF2750C31B8367EE4F44C8857B0E71F355B3F078680D62BCC8267A8F6F4AC5A7D3F4F677F87B3B093D3AAF5101E846377B6CBC012D723C547C1A03DBF2A9CA4C4E3079682D1DCE695606E8CD74E3E9837EFE5FA61AB36C7F2678C0199A011E9B1B2AA77FA853602743087830DD96D8FAD1E270B3DDA33AAAF591AD6E133DB31DE5C74F8B3F00EFB7AF477F40482DEF81390129B0340241C6D496B2C90ED373B820C0ECF9EB3895F2D27F64393B717435387FBC77141B792734D2DDA731191FA23EE99DF4698C5FFACB0535B11EB322F7CD8C184DCCA771E7D11F1066E4C6C5676ED993562367F87E85B5A5C845F335F3C345F8B2F28CB9EE9ECDB92229376028E76711A296BA7EA9A01BDE80021A999F907880A9E9BF93D1E1862DE5577DBAB998DF5320BEBA77112B908E5E6E9BD919CAE17626D577B73DFAC2743C63ADFECADBB296008057AAA75EA4B60400BC7D8D41E5992E18FFD795279BEAD1DE7802234463E29014177C1E5232A1BE2F6114B705F76EE687E473AA6D132DE7950AA01428278788EB04FB7BFAE8506597C06D2F6E9D565BED60092F9F5A0EE767B05BAD6126B78A8BBD368E2412C65AF0C88893AC7F71E70C7BEF7DD9267723", "5FAF19A1564EA9ED017BA1864E8B105F19E87C7691EA3D897B1D6368674A908A2CFED517786A40DCD051A81BD5BF542955AD1B4CA8D1E7B2B974A5DA094EABF8C8B4928B479292062E21047BA2DC47906F70B60BE2AF51FC47E518E20A101B2ED641850D900BA3A782EFA3BE1067951F3198ECD55C65D3569BD043866CD2BF738D69A0000E80904986FFF7B48AD1BD4497D42F0FB62B9E8C76B867A45F91A28977D10E9F77F23BCE117555F2D6D4270514E0CD188F56BE12053F794C0A12078A32F1B2BEF77C4D028621DC55C5B1A706DDC63EDC0D4E8BB2FBB4F86530BF460DEFA4F635775F429D2AB566F043E03A8F1C59EB89EA6DE955543AE796361F0B5A4726C171D8D2526E0315559BD93B5CA7D9972D93981FA52E2A6CAB6CDCAB29DBCB9334617931CF2109ED4B419947CB44BC02972D9F82FB1FD7678544DB0E4564EBBEF581B731741AFB39AA858A5D4415D8F3AA36B269F20147CD1387AD7164F9B0BB2B923999B03DC07B74D8E3E850CFDA26B73CBD215A71F2B0A1EBDA838D61A19DC11B2B00DC9DD4135F2733328CEDD441678DB7669C7FBF786FCBDEFC90B1D9741310495BACFDD1A3B250311ACA4434F79F43FFDB03B48032DC6A48A160AE385FE7A2DB79947967B2ECAD6E1D5E85DBFDCF6734AFCA4C35FC2ECEE4AD4F41BAD63FC16AD37736F96C8F25CE2C3CFC371DB862F38CC0994AD8F1F0E2887BA7F3591DA41402783ED6F31F991278F3CEBA7001E07B9806E6DE223218497FDF0A52D2ABF9221A17CBCB28F3BBEAB9E7E66EAC51C35E1FA735440E641D2D240B597060A421A498D29393E68DB7F0719D45E349BC66B6357613F97C75EDBD6EB7C5FAC23FFF9E5A91AE829C84F115DCA33B382577AEACBD1B44D80E3361255F3DF4B481ACC24835BEE369ED519A1D8322A2252B0A5574E165300A27AF92AA04C27054C74FEAFD36255279ACF8A81C174D0A76B471D7554B5E5D93F12ED8A4474E22DD6B46A42833A651CCB95C216540BF28947BEFE1377433EE90429D3ADCBEAB5E319DF7BFD3E3851A99A2CB058BD20255FD1934EC2F57D5A6CE31509DC5CE4C6FB36E11E2DB34DD89076761E798488F94A7D3F0B3CDED7E6BB736A24EEFE740C5D068A5B549A4BDE1651BE399C2801402DEF2E7694A6FFDCAFC3040E88CBA4C7068385A818D3664B506846C9E4FA0C3C0FD2840CB03472CE04ED367C0704CDDF434E519F3E6531993A65F7FCEBF3A05D9B29752AED0955496ECA245C8FA94FE8158767D8267C77FD9DE08174CA52CB10908BD4AF434914272562D3B9F7076F184B15347D205E3BD7751887378B589DEF610D57E9F55380F138831F0C1AB8E26847A76519E73E90D186BD1B068EDA1657316603455462BDE01CE52BDCB7B6CACB6276BBDD35E8C1C1E6543365562D03F4236C7891EB4EFCDA9AA569584B08F2FFD68B267CD2DE9254BCB1BCB9D728A72469248B155D6713712CA24DD1A155B92EC5126BC4D2D6DDFAF1038F080473E0DF6BEE316C9B61009E3EFC6365AE51C8F86EA5B38921389C9276BBFCB7E228289C56F18B7703DC19657D1B1EAE748620404BECFCCDCA0495432DF061F1BEC88C7C83F0D88BB34ED3E54528838F42B5785BD09F73BEF9EECADFA1728E4AFE75ED96B4D8FED95302F221D1D61A3BF0AE2FCE9BD5A3E133AB39FA92EB8A22D782C85E1FFF87203297B6AAD8F1BCB89E9D44845BAD0B2BDEF3D4EEE6909EB246791A342491FF607F1CE07FFBBFAA3C6F2EBEF3C1C1339FE02B019B847AC575236EF8B32571617E7F6C6475ADA6CAC830D03E8154027689DBA7A55F5C0A1F60B77F75270B35221C9F9DA917138EDF1F9BF83BA792CC7C082DE9889FD21BD2BCF9BD3845E663BB8192461EABE911B94A160498AC15C2A0EA3CC8085431F8C8D0C18060EF3C077C895180601141E322CEA6CB8FDDE33D05494C2CDFB2E7B0AF58D489D61BC84771E665AB04D5D77C0A63650D42D2E5F5F1A1FEE0B641EC0E0377FAC7CB66F4441ED0F0338569AD9B870659F47A69332CECE691EFD9FA29D471BE6C9C0D764A989D6A025C20C65B151D6E3B126DE59DB888196844AD213FCE7DBBF686E06AE643942F1F310668FC9A6997E8DD8149985ADB4A5260D7C2B2308DDAAFC4F920D0829F77A043F92C3A6A6F283FB90D9AC743C3B2E21337C36C3882CD935BABA1567B623D2338147D7EECC1D2EA2B6C1D9F12B772986FCE18B164396BC38744644A857684BF9A9508B6AE1C63D53706867709C1184327920B8402ACC426921E1F37B3BABF710D0A28BD94F973BC473344206222E0DEAFA8262A5306C103CB77B830A74F5E195D64E6E482C1CEEF23CF2A35B495457B818A079E3F94C3AB895D09D673A1858FB1265B51ADD6765DBAAEDD655428D38340EFAF8D5956C5A278C24E7C7ED37BAD5A7EC4670373EE5BED321EE5DF89A5B0864E8FCA8498FD0295E308A91D6DCA7E217AF1F5BF23FA593152571BA99E60AD56A1BD06500F51C4AEF2E302AEE804591DB9B58867EC27C23236A2D88A088556CFDEE44A6C9B06376FD55B44AF89F7AB66C45828D2D2387CCED77D27B39A2A06919283C671BDAC2296A2E49073A162731FFB0D72077CE3F45E24609B455C04581D052BC3B4A7938061F3E78A4894D2E8424CE4F291B823DE30560D184F18CF0BF18912A61B6B702DD8B99052A248844B010D4C08B7FB4CA71D37BB9179B1510CAA7D85A4F8E8B95AECB88FB415FD0D09BF0A5DAA3A460E832191C6520E8952FB39F8B69E45D623359163ACBC12EEEF8BBD17409DEFE5129BDCCCB6804DCA3E5BCF242B9BA50F9C39338BD40DC5D2596532F80D54F5D75EA5C35A2A6ED7612128E7B6FAD168302B2FEB52527855AE453BC275830A78F1D3E3543C81E3A00FA1D9E498C6426C7A4FC20BBDCB98A5BA8FB1B08256D704F6513E4AA0CE003EDDEF2033AE005684C572CD2D12E43A3263B27CD671199F3E7A5D6A4C713E315E3F298EBF3D035661A6D4801BCA8B8E9278FBEE4448E09D6B0582B77900BBA52952AF75439608EC95649E4E6B2F71FDC52826FC509938A59323CF0A59795DE1DE7E151E3C2F79B43B0F9F73A8D3D1C95F11A807F9273EFF3D8F5BFA66362ED6837FDBD55FC67C3CAE4F7BE495AA89ED27B873AAE23FD5C63C2EE0D5AADBAAA276FB9250C4B9AE45F23544359DC56041B588F2074D4A79CC5907CC715355D61CABEC8911A75C8ED7202FE284E8157971EDB17528D9BB422366AADC3BF7157D6084AB60CFB7EFE93330DA60172569D9BEF016555FD4CECC3A27939DCB6F7759F061C20262F3E58595D6180888A9AB3B6BDCCECF9080B3137476D818698D9EEF81233373E58687A9199A1ABB8BEC7DEEB02040B132A2E383A425657648A9FA9B9C3C7D2E5F3000000000000000000000014203045", }, { "15CA516E5521EF930E337A50E5E99CDB4097B060E6CB617456F4246F0173965479D24FB32380ABB8D7D316EF2AACE4B1C8A94B8D5641F2657D75EE01D9C76624", "E4740CEA7EBA1BD158647426EFF0CB56287CC4CC956089A1F163084DC648D68BAAD88FF1601724E131178F51E39E47E92D51DA5BCD63162827BF6B5D9F40BE6D2EE7182897F031FF2D9E774A459252D86247EFBAAE15F487B30AC913130A405FE05F14D2C94D37E5B0CAA8A77730D94D4A8AF04022DA69996A65191C50B0F07120FF4582F55F5E0660071CFAF0F8FF22E1CB2A8517A9DEC66D40652142752EA6E37BE4A1408BB3AC450C19021BDC443FD0F4E84975185E3F6E63276884D15E5E40D59C66476662BA1B65A9C9DCD6771926D8B1B5698D66D00E688659961701F49348CB6BDD53C8612AF1EEA223DA3F92224E8BD56A2BA07D76A1D8C7BCCF21D28A480A0453BF2E0251B5D7A307008EFEA390E0AA58B3579D5CFAA06F20302E5E8B4F7F6AC0D77E5352740DDADFF454BB6B3947A423F34BFE534BEBC51170EF98E88D49936842CC2C0FD6F4135423056284168274A89B2CC144356B0BABCE1333B9B1975C07F40E15CE8F7B258ABBDBE34CCD98890FA94386CF933CEF065F78540A7D6D20B35622705A8C56DFEAE08B81993EAEAA548CDD2F9AD4F862D68EC9DE119C0927FD3969F1DA8AF116B42AD1685C02ABB6C1505F47F71506D1E5628FB99AC2F783A9A37A507C5B1DA9928F2099AF228B3A8F8EEB7C6F54F0F9FBE23AE1CBDCEF6A5BFE60222B58E6F88F78C2EDEDB1B18CA817F5F1668764F481EAC527782054B9CB72FCC56E973D1A509A2807E3F37B464DB5BDED558E276801B69AA04A7CEDD780F7509BCF410628EB82F96073FDFAE039A1788C71E74EF1AA18FAEA8A1E589B2487FCD67B5CFAFD6F89DBA8CD5D8DED7FA043F44C8D8C38E83D436C3271693FD2D6806A661B3FA3F10B6BEEA3A0B51EEC52B41B75586F3A032F9EAF4AADD7AF2B73F04F0C2B33B4EE3140E39BEB81BA28B988733AEA0C79970B6A18D9626CA506BE490D975802C340F026FAE76E0114B1E8B0593B89E60E16D426171255727E5985A1E583E6943AADFBE9BD598F1AA9C2F16974D1CF9768026AAD4920A7DFBD24A49F3EF9571A396E0C99010D45B6DDE7583EA3C3A4CEC2F80FB3EC682B946651DF62F65DA1BE79C313E9B6F1076A13AD1AA5683122623166384F1CDDA346BDAE4E28BF66F3A6ECF300110404D8898E835C37E03FC876E12BBA32E58C5382AD0D888BAF9EE25F11AA7FCA82415B5896BE4F23540867F86ABFB52FC81BF86BD20B0C8EE236AC96408ADBFF49DEA24B4D9BC1BF6C4A8F7D557A3AD65C7ABD4840314A84B3B5AB0A862464D333D5B5A00F133EB2F09F5A3A6242D30B615C8EB630601F008260190890D739ECCC6360BF94063642CBB72E0189D272FFB98E55218E068D42468A39CC16EC0FD678A9EEA92FB8D987B5CB73A8FBA80C7305B162E9A288E53E2F06510A0B531228B915C465F733CD63FDC0292A29DF55EC4437AF9502085225C819821757EA3BE02DBDF749365A3E1A8EA555D0B15E22A4A38DF79742630A84C11AFEDA484868F1D450A50368126ED41EE7205E6DC9105A90B228DEB03BF227A1233134D7FD871570CDDB5D4935CBA2362B03AF106FB3D7EA37646CE564947AECB7AD0FDE8EE9411355AF183EA14A48B089E806E2949B231156E98C9C2C9DBD919E98D34E00AF3C00D89742BB03DB4A27A8A6E9EB38A33F9EEC95EE99C30D7575980615EF69D141312A2D0B2961B74FE484D84C0CEE876A38AB36DE1B2066661DFEC9B8D41C0D092B1F33806539AF9C999F35D271E93BF62ECCF3803EAA79044F4A50867F187DD2E196D0E5DB99BA143BBD031615B2BAF3659697A4991476A8109948AA7E39419ACA1CAEB93EE65C8D7EBAE7FB52334C4EC5", "E4740CEA7EBA1BD158647426EFF0CB56287CC4CC956089A1F163084DC648D68B6099BE2361FF3F7D47E03336E55390F0F4B9AAA58DED73FEECFFC7C82396B523A05814DF13B91CAA30F098736B7491124AA54147FD1FAF4195881DFD558E462A65ACA2AC7A29256D138E154D4AB61B42DFCC5623FE14FB8422B76F811871EED3CC446A44C26D6234640B368883108C010944120851DC0208C0326219230908A78DDB924C8096889AB2210C077220C50494229101262110C51120B421E4222E4492448236304C1809209249A33624D2C225093624A2A4242133460B444262348D03B76C10840123860D0A448D49220C14242110376282022A18B36D011701A2326D21010CD2C6102137821839218406868094858CB261CB30240CA689DB2231141502D2B421A40082A180651224809CB420DB064C14180E8A0249DC48241AB809908241E148411B09800A0644CB100121426609A39020408DE402445B403280387110842558C44D60421121063298142958161052C8908046262442440033110A1829C8065212328DE128501C007283B680C41889E3B4295A0269D9442808B88D03152002A424D430110C39025C289108331050189089220E08324C60C480A3A62D00126C53B04522A88541444C12114EC8048914A40862941040B430D1340E1AB95058828CE4320650C2508A0091CAC8910C416A10244913409144462A12A921C3188162A0710A422549B6491A8550E4221261C8045CC02023208503368C09C88864406A02228D9BB20D1CC34C61284512299211A0904C845010978022346480422CCA484A134585D9404AD80610CAC88CE0207203238EA1482A43808908B80400195054362210078819048213436019266603C20C14495243108E41B60564A84521004D840220201222D8420214440D11C181C44430D28845E2B225191146181544E0326D9A00501AB24D0408801BB68C5A284884066D0B826123B2288C146813A36494A66C1CC8641A8400100526C2C4648244611A452C5A18326438400AA60021332021290ADC824C09156223060E03B03024B52092186DD9284088228A4932841AA60D44A86CD0386218846448B084609445C81850E284288338029B26451A812551C88524152219C444120601E4004002252DC9C84018990CE110605200302481401B4331999425241824504030C3A424211670C0C65124197204318E59A2841BC54C0C32104B100E63C20C63484019356ED8946D21C8700B046810B2092587A50242132D603AF3E0730A6C9EB4A63ADCC7F48710E0A1A7EBB9ED924F9B1023FABF6C1B725DBB5CB14A0CD6E01E224AD1DDFFA98D811CAD9DC04F36A1911AB22D7A626C1AC2303A982366750C42C4CF31EE20C9C67BF37A8995AEEA3E4D181D8FA30A30B4BEC329E27B07DDE3C856E44264482C492A054C5EC63CF4A46C4DE39E4C7E4CF8570F3F769522BB4400AE3D9CD50FB7EFD179C6D588A80B2312C9D0C55DF866459D37F1C70326930F409852ADE9359C0F826B55C50D1CB254185D67FDCDCB6897D9BE3C81513CE86871814F8F049CA52442BD58E70B7A2F72D26CE9015FB8D25EC1E2B440E4BC3C728667E3E99C826870C8A7B7CC77DB130287574D5390FB8D4AF1171D3F98088D265174E712A388F977E46BE849E4CE8AB87754C9582DEE15613E8893553990AF156F00D383055528F8BEC2E438E5AFEC3C3AD88E3B7C04013DACBEDC1DEBF9A98581FC2297567D6B0FD2082B21659898149E479F8E9D7A3DEC3DE5F3B2AFE7706EFF4A1A11EBF5A9621C35AA8D1DBC3574D75BC6C283A3FF6C7762632DBDE04A2FAE9BEEC15D8F9069EB30C187519F79A73B474DC347079A1CEA2A171BD90F7381C65FD21159351AEC92ADD34E41B596527D719A5DA046EC67180A8B42EC3F3A7BFE7F95ACA5DE7693A94A428A36E6851D8647FA11AC316D037A8443453B04553EB0006C0A96C42484B1C669878AC33D5CB1C87E1D03EF8AFBA26ADA364E20F53273E0144A2351F63A07E219080A0201E81BC9055D1F8BC60116AC2EAE1DE3A7255AE6ED893BAD799327BFD8E9BA985F344146925794F5A6352BC57B6DF440A03829DE65418403A0B5A3EB922423C672BC7FA80880C9921367F7D7654E1E43CDE3A0F1609569C1DCE4511F8313370FC2D34F4FC40DA1CE8F7B9ED83E673DB2F7F6A4E2280A930F12C2F2A6CF5A3FDA2544F66EF8DD34AFC84F618221BD888BB58D30B157429050622174582696F2F6D69147ADAB61A73988BE1657012345EADB1BFE4F9392CFCFDB02EE9B075E0F9387EDDA87152455A297B1DD7035B2C8A279B23BCD7915FCE7CCA491BC4DA26413654AA2460B85D89CA00247F833A927EAE3EB6094A39A9E54F0A8E8297F1703650E5DC003AAE3C39DB580FEC3DD74E156BBE7CD3E8C1880D73B0F22113501424614DFCEE47313B1C742AE684521A2AB5B19716DEE5D2149BB3AF9DBF0187B5665DE1AA7F1EF998F37CB2A22E4DC1463171C77F01E19DF635EC6D71755751D32751D6BAC16ABD31468BF2CB27A1E601675DD8F745BC569872098970D54C57B37634C4BCF394EFE62EFA97ED1DFB7A5D70C48623B612176D0CEB7D7159E397B3D6E07ADB53B469925FF25D412FC135375B4A4A67AC35D3CF653B13D6AF6E6B6927D73250B127E2A18E7FA7D16D47CE29DF63F2011F3BDC382758E7CA455380D553D74CB66812D3BD662785352A17B498179C1B2F02A2D092FB7A13D31DEF016FD3248DCD4A4A27B31C4DE54FE0CB9D728ABD09950E665B1E783025239640FEE0054D564711673D2721758891D65563CB261FE7C055880568DFC0FA31FDD96CA895F86B5E2A34537CF0D9925A7B89B87790B80BC7A2836D83B0A3F5409322322DFFA2A71B96928A958763105AFA843F836C473129E940CCED9EA033AC374D3223C3CBFA58976095FF3798A2FA03FA9E947262997B63DC79862E78EB946BBC291701FF12DC86934207AE4C9C891042862073E31245E8B97B04FD5ABA3C5DD3B7873F242664697E36C192C5EE2795F65D85B5193913DD6A2258A6477EB72D20739229B80B1C987E5B7445425FEFC880B29E398038DC847B6EC664465F1CE494F7ADE127D9F0B9B2B8F44E5F4E4059CA949B048CBCCACD9475FA1E3295838D4E8E7CA74153764B182A3FBEE56E236205B51CDD3E61C3EB7121CC6E1D1420D4FE9762C79E84EAA3AEC4393185FE84F214B1197DF501C1E1B5BD9CBDA5F5E392913A6FD117507153DE168BC8810353189954E19D2AFAC14C6876C9FE4F5999C58131F888B4D4A4C215AAA03B03720A630F616F9D134DE21423104DBA3873EDA3560352722CC8615611A0A4B6812099FC04B3B712253EDE11BACEDC1BDF4E265360D50DAD860770A1025D635D948BCB56303FC0B089DAFC28DE3A4C28D1185AD24698DCE70F179B11178A164B65F7FE72B77619496F173935426E3CA3619EA141BD9DC418E93A15E624ABFB5A4FC3C799D6B561248FF609ABCC990599D0ECFB7B77D49EEF133A07C413CAA89259E809AC254211DE4F7ACF6B02526D4207EF36F68139B6AA31E6E70DB2232804BF88A5ED80415083933407252594A1FDADCA24033FA12D93EE39CFC", "A3F6FC64F4487954F86252E91742971492F2C7A17D5B622F9D58831BB9DA4C763DA01F3C6007A8D3FCA1E1B30E4673E55B4892982AA2619C450794D428FA26EF08F2EEA738E45CC560CAF3279C77E1BDA4E8461E7135E5D2E9420849D1AEF8B15ACEC8317FB5940FA73B84717275D81D7AB8133AFF184479E66724B363657C6A19A6B901C4EED391CB34EA4385987C6C25C0B876556C3852FCA319D5DADD28EA5F8BA6A26BA9361B2FDC6A99A8289F6D30675D123E712A42A970F7A9913C21D80AB4376CB4E633A91C511EE57EAD5742417322EF97C5C78753742C8E7617221684D11917E238913F576EFBBCE8BD89F5A2CA11435AF98058AC619B4F3BCC669FEC0BAAEF77AF66313C4571ECA99245063755859989A79DD4C693DB0D7EAD75CB2EDFA3FDBC251E48336F5CA4723B4E507C5F185B52985A7BAE145027E2EFF61DD5ED173F4C8A6B4F95A6AA66DE81DA8017A3A0BC9FEC9CCEE969AB9C2CB8BA92F70CC5F9FFE33F63E231F7F8F0BFC9D1083A1845C0DF65F423F49EB8B8141D99736317DF331AB609A34AB8B63BDF00B80926CCFB807FC50E91B5DE582184204DD8703A9747E71478759997913932E7A4E1DFE666B29516057BB7327FDB9E12BBCF8EE60E0C506CBE08D798FF8F9DD041EBF3A53DDDD58DFE8934833B23AB1E160A5A91C8C22D9DBB6D0F39A2457484325CC8BBFCE61AF061B3CDCDE2354AA58E09A610846D1A79694631E66F96542989B718FDB5B858585EAAFEBB635FE221C47295258AE7803BF08DCBF6C3548BD7CB35D0F0B9981A07C842C35BB8AE6550EF44F842E8893206589CC4B4E4A8605BE884F97539AF31577CFECE3251DCECE89AC044135E4A7C7F3333889572255FB35B74717FED418F6B1FED1B499BCEBE1C7356A6E2384A1E8E81B7A0CA40E72CC39A508C7FC8C0F41D20DA537C841B00DBF0A3A90C15AD34768C6C7C41C2AE8F1D3BD7B36965870A40DB2B4B7A32A7B7184406FAE41EFB0375776DC5923C94F8974A00D5D000A5DEF6C44BE9E305F128BEF7ED0E401E51898B0DA44754B026C73E3A6DED71DE7566D1949E14B1D155AF121778700929C7173B8AC9D0740D9758D52ABD39F1BE97D97407C37BAD7C48374C694E0A426CE1D8275EF8B1C918B9AA01C929E72D0780DA880B40F0F3F732698A06F710F1A994ADC14427FFB176EE9FB716A9A1968232CD87B7CA1B6EC827122A769208CD32DDCCA418E02F76144E62535A4F1F2A3993EA6C274B48F8AA45445081A611C9B5AFCA412700B17F928624C0FA2C68005E1C736C9297782903B686718F2252F2841DAF92C106193005ABE6CB6FDAAF6A741DD1C385139A312274DAAFF513D4664BFBB3C603D0933535524D102971EEC98D8C7908763B6B66A45B9BAAEA63B56A77BCC7F0CA2628FF5DE82388055565F3E09FA1B8FEC2501B9BAFDAD71A135091BB0D68626D7CF199AFB21A2CDFE789F3A96EB24EF91D08DC74EA5B241D355D3D9E7921AFE65CED25BB4F2BEA1C0F09C22D960DD43906BC84BD372269655A794D03F275CA83E76694B75599B8D1130F3A670C7D5A6A0D405C88858173B07A7DB295A863A5398613B1820413B94817991E4D06E82C93303EE905E05352A8189825250B5C36DA6103BC5D2589F751F62A4E9851AE6259F265CA1F08F9E310B2F7C43AA910646A49BDA33F48C39009F604C5DBCF31A6B619E14856D305FD7BDDC7BD448D216BE3576A2A99AE2C0FA1675D8A19652503C2BB853807AABCAF3738F4FA864D0FFC3A144617453095D1C47B13209AA25A8C2D880E8D9322DC14B3C8A6783C05890D83833F4353DBC56E0B2D8F83222C905381A5B49FFA5DD81190E5E65B2456A2BC1043AA962BD1888E65952F571EDA648311C82E391623A31AFCF40AEEBE893FDF4E5401D681B37717CB17E7D80EE7CA3A2D8797B266C79DD16FF6FFF9A25EC9586F17BAA7569F133400AD35AA77CBAEA987DD2ABA43BDB738F4B3B32DA6A278F82E58FDB67BE32ACCB10F7FFEE35CB86EFD63913E328F5B4C3D880AD667E12230E3981C87BE367823C0DEAF66EDBDA493A63E54CDD8A8EDD47CF78AD8259DC4ED9750DAA2B105418C1BFF79094B443B226251812EC77544B7138A6DD47A068EBA218C45AEC92835AE3AE4D835033A1726F8FBCA65B74D52F4CCD64BBE749B3F39596F2F47F0B4A7172BC0A2EF43430001A176F9956298BFD2459BDDEC8A51E46BB43E208C8795711396564A8A03FC8B49EFB04E1B727063708B5BCEC0F7399C7C5900C3F30ACEF0B14914B3D8E555FD3B54787605F9E973A8439EA1CB7EBBD2B9A2D2AF15A2F712A2C5D271FBF9B61AC22E2CB2F94341E4A11A3FFCAACB1C3B815E27479BF9C5F1B01B9E88E26ADDB347F4C71CB20735750BFE9327E855B29E87253DC7E1337C8564EFB9F8D1F140C03EE0AE77DB5B3E5FDB76888E9B7C9E0A4C922540E3A451F2E2C2578328FA9F075E486976045BA1A591FF33844A0D0E0BDDC4843929472FB8B2A9B65652A794057707EFAE79D80A39EADE6372BD1BB412051E141FB8475DE40275911C915E5B8B607022FAB9BBBFAE1B62512AC7D25DC96AF1F67B9B7264F2E9ADD4796B27F72E43BAD08DFF38091AF359467190B0B0FF7CA17DE2BDCBFAD6BFC3FE896521585F49095F0CFCD2F15571BA7BF500186C3E3A09D4AEDA9AA3272C3B2FE3B45999A2EF89301BB9144FD81882ECB67A19AFB9C7320D90FB7F10C043DDB604C5DEB286DB6EEC40AFDA15C932A6A2AF6D511AB5B67993184994EBED2942B66F5AEB5948CDB60EFC7C99BF5D9376F081F6F2102A8AE0FD6E0D78D78CC216F203F318010538562C7DE328B1DF2678DE975712D423AF415182D594F661F29F3358525C9062BCF2ACEE596A86077099686B710612197677EF869556586628F7113EA0062373A80A5112DB0660E0D41F6DE45D051C48A97C27C722AA22CEBB0C3C8A8F8A8A9F3E2EDC7DA93AFB13FCD7B5A3F6CD9A2434982C4BB5F3303524E219BA53347D5F5938BE87A231A5A179AE0981DBD9EB89DA3C645EEA09068CB4AA45BC28A0E49B4D39F6DB9280EF66D8BA5BFB2D0FE4F3F4C1F31E6786847337630714D49FF738E8DE6F17FA47E628CE75E9151FA4A84860D5F09DE07CCF0043CA0DB39FB1D01F2FE3209870F9A81212B523F64C7EFDD8C0EA02AF45B098C1FAA6EAA07EEEE3FB4D8E9183461E76DD788A456264E7124C1134BBD78E7E8080FAC542899237EEA3A7AE8BC047CBF773B0220EC13957B931F78A7697CD90C1A1FCC8A3C8C9CEB4DF770EB58861E25CD830630020233A42515C6F78B0B2BBEC060D2A3A555F666C757B818C9ACBD815181C28292E4A5C6D7883888FA8C1CFDC094B55667072B0CAD2EA000000000000000000000000000000000000000000000000000D1C2D37", }, { "697661888CB8447AC59F7997A6018D4F19B3F0EFB35CBF3879AD94389343D7D8CCE0CDD3AF57501B15E6CF7C309E91C5FDADCDEBD3F721374911DFDCD45A6095", "3B24A5C19EE5965ECE5FFF30329DFEB9E00CE11350B240CA9AE3F2ECE3E4F32DE448A0436B56A361AE582DCEA821EDE60A3C10079925B8C49E8C4B5E5586CE636432EB0DC034C4ADD71855CF12613C2730E1A444E993AA40DEBA4929FA2CF463EF8235CD29690B810C743622426FBAE0F84356B9C4AC8A10C076AC50CE8ECB00D35D850AC83CF69FA36111E7BB0E4FF0C3B6B8C3BAEB0873736B7F045DD0C84EBEC4EC94B07932725785461AEB962EEC8F5AF777C134010AB8D1D2F835F0A74A9E36A15EB3A20C2DACF6225DC00FE5242706B1070A9AA10F909E823A2F17F451E79EA3D4B501E1BFA06F9CF70772232FDCF53850386D2B7F3AE4C6D52F671C9C7B4C24D2F9878BA76B8ECD1EE786F06602462D0BC58A61850FC0E96D026B7DA063B4E72823FEC0CFD6FADBA6A0D6B02CC5712048BB7580459FE4DB74903E70378A3625A8051316CDE3FCAF24AA90E6EC74B385CED50BE96C8839093036EBA48F89AF028DECE49F2C409692C9B66F07B24DB30FEAF900E94A0CC75FB286752893B52A6EEC1FFEE8A5FC315E35A2E6C6E743E7C7D7E09D7BC64F4DB4F5025AEE5EA2C487351BAB25E921597148E93E7691F614C0B4A51E34E836E34F834906CEAFC50C2F7AD1F3AE6F71C310D6534D47970B7EB24CE3CD0AD940DEA8E314CBA69C91B2F9B28E844F12956C53CB59CC550D4CED51931801418322EBB5C90C938E51ED9913DC41C2DB2C5E98F684251CC6BC21C58166B55160BD55AC4B00240B6451040C25355F1E44987DB034719E2FE04BB30F9FE532DAF89D9C158A50B0B8A0835396F9019D239EA13272FA7FE33328BB1966F45040BB054276D914FD8E17325DBB6F21C49B7F8838308A7C04F513927B464F0FEF508F808123682CE77F275EB3C753F8126E99E6558D15F4F2C59CEAE2CA947A85ABCAF0A470CE559EDFD767580C95A872C779C19186ECF3BB71E8D2D0E389EA8C005B9D6D83013E3520CF8E7C5220D2306BEF0FCE9EBB6C045C7D3A3219B08E89A4CCF0F9ADDD85CCD8F832D4A6948C1EA23309FE469E61CD48AB91433DEE00ACD3B71B6F38DE7531FD1C537E2B0173EEEB3DEE13C48236E742285E0DBAD9825A08A82D574E6EFEFDE83D124D0DCA4E87B48CB4DDB65D57367D0099EDBA896DC035DBE9D37E74AADE06E26DF12E508F8838583846BF3FFA79B5D8695A8C2774501ADF3BC2170AA7152E3793DCF2FCDAD03DFBEB00C26FEBF3E109A57965D2DD4E86C1A617C12677D8D42F5D175A02D69F0BC83E1F2874935EF5241FDEBFFAF9B66282009845FA8D3CBB2CE88434B5CFB928037A7728A23814BDAC5D88D5FE5BC023D6674760DD59487F7AA897A95864137E93BD5D9EB124E94ABAF6536354C6007D07B5C4306E87FDE0268B4EC82B8D6897A87942BEDE3DC732CADC36CE63CCF6D0FF7B55A9179B2FFFE80D2D77D38BD74D3D480AED1BB79163F8BAF2CEB9E65C30DF2DA3096B01B79EEEA48FFBCC39BD659EFBD894638072ACB6977DE6834D4912E0149CFD91666E8591F175071A9C556F6F80B7F6CC7A88E5868B8823475EE2A89FEBF3EC59761342EC0F87B8397BC130EF1832E055AA2A8BFF6BEE97BF4AC47FE58FDD2B3BACBF5D1CE8F5AC9936204BD1AA1BFDC7CD2EA48513687C714C9DF9C80AB62C9E5065DC9468C69E659805273494A8A6E43990B25741B52D540034A36E0C4AA0B9F8802430C00FF7F04E5C7B6AAA7EE4590A02BBD87C6553604743B8C47AD5ABD409C33D1177D0CC15EE0E00A882456FCBBCC514C278E71805CAB485080730399A62CEA706DBEA749327C360A1D955D327BA35A36DE00CE73247DA26C542AC21E7D2CF68689BD1", "3B24A5C19EE5965ECE5FFF30329DFEB9E00CE11350B240CA9AE3F2ECE3E4F32DF3986305BBDE941BFCBBB5089FAFFD3F33951E7E157E93FEA941E127ADB8266794F1CC9949DBBF43A112D196DAD1E72B498AD70AAE8E990953710610184F1225A2AE3E2BEEE6FFBBE9D342449105009EDCA83FD1E6056CF23F1A3325622241DD49A26CC2988C4BA0899C2661A4C6495214660C1521243386A1086DDA322541A89114B87093C8890C892CD9C41003979010C72D1393499A200153B2644AC4698C826D2384718B226451900C0B18224998704A30721AA76CDA36869A02491040311B206CE4400A4A26008C0845A4303009298D042485E3B4644328699BA00C12008992124220B044C1164264C00492120D1C847048B4600B882019374D4A306D503441020710D4263159148C64C8519C92055B0292DAC60D4BA0494230721B295260844092922C5C986C1C95811CB16D1C14850219481BC72513182DCBB02C1C0962C8B44424B82C02362E6322325C2260A1421011446E19352E1B1832D1846541882C19352A49C864111329C144869B28025AC841DB040864A46403074253881100902CE3428652042E10C60DD4C640403052040500DAC24050344E4A3460CBC244920246E1A4101A4442C1888991048523396184102003B48882C490A4984588162001A611041281541885DA128E83862901A14C0B1162428631084124589280D400608108810C0140420860E1C220A04882E096241CA909E1C49064282494C20104088099146C2205418A880461248A09A408182810DB906962184440488A20398001C921DBB82D44288A9022494CA88961262840A608E224651A290089B825D4308441302094205051124004957192C681A1200112B88583164A8314849BB00D8C122E9982819036055A309010136C54286052C88D1985844C440D63B868A3B08402386C608800A19264A020091B390D0884811A35424AA611204144E22829C3120881C62048428561A0046248818CA48D23A26502050D21B6610A842001290E5CA885523800C31672C88041C0284E10418C1C030D04A2911B49408B8220D9864590980D1B3622C3846D93A43040A29111354A5BB06859924951182A424221CBC271D4A4898B380C02853011021184386081124920032C19B63003A74920B28CD4A624A324048338690036088CA065C9B62C04295221C6255218265A186CDC0032A2946894A0296316211A442A1121060AB3051BC40C1BB411D2C80D44B25122BC4828AF674BCEF5BBB5C652F181BA4C0FFFD4B193894D21C340315DA03F329F047C07AF094308A3D3565CE59D02F9A69C5854A80880CFD4C0EA71AD2E6693CD0430E87642A049DC8AB176D77DDA1031F27095BA9E5006638B8062836FCA07946DC758298F2C6BD0059CC3D391E7C8B98214B0843F626F74CD26676EBFAA8A682D120801E8DEFF1D184C6875475E950245FF27C7378E84DDE89DEA3FE7246769474A674E128D8BC8DE84B279BDE4A7FE7F4530C14187436A44314BC161AA402D8D9FF2922962CF7E4B18067CF9AFAFBF589CA8CF91A0C4E31628BA9456A2C1C26E25D8B1A4EBA882E15227D137351E66F655DCB6C7E5EC9B35B993BC8C6004F3AD0AFDE1392C33122B506A4CD8A4CE2631D5DD72F9AEE126BCBBB2930E3B010B325EDE993084BB4F753F8CAFE9B475716F571CCBFA07C99EBC928909D3861DBFD9AA0579D123A1F10C51322534A7B8FB454A56F45F5FCF32D484818D189772A76747972D21EE0861ECA0D0DF5AA8E832C4E7FBA31E102ACD88768F97F0CAE4B512C0F892886FCD34D081E9B27B9C8B9C65D723EF70224ADE1C0A36C9C9CA1A2B7C67F40EF460D5436507BEEA17F35DB3E073E8A39EB88B324DD9C1AD9C02605A2438E198DDFFE4D9E5D4050E59CFA92E8588663ED6E371BE87D01E50EA7678FEAF65DDEDD342CA742C97DB582F466802844565C0E9CCA3A20BA45DEAE11047E9CDFF04B6D2EE7FC34C446FBBD6103560A5E38EBC38C4A9263DCD7DFB5AD7CFF752C2BA936CA4C8B4EB0D014053777195005AF3C89C76271B4FA09F4693912756CFD08666983BF25C336CBB94CC4686B289EFB3B8EC32A0BB0B903695F4872EE81C0AA876EFB86720D90CA1CB90C5D1DCCD1D31306212953004499F0DDB133077C620381B06EB9C36E0D79A3CC909B9E0BE33723ACBF3106EBD1382999417C0DCDFD42E7B2CA325B906128DFC90AD17CBD8057F1B345952DABB8CD008B59A0F4D856F6181E6988C96FB65873915828B3DF9BA2E28712AF34B78744830869220A85EDFD3F8A7A77EF6F3CEC1029BE5F9E8F862E2DE4A8CC9A18475137CCAD3E90351DC715E366764ACD08D90D0E075AC1EE2A904BC2BE60F20F201977F473FBED64F06A2F8BCA9929C80806A6DCE298A18EFD87DA9C4A9303A1BE0B750A9C6B47375F0921D388EAD87DB429AE3BBF4D95899956E2105F9BE16304D77C9B4680CECA755666BF3D5E917679653CF3864F747C0DC6C462ED9B073F1F75850EA13321FEAADDC7FA66CBD8A6735D65C5F58A76B54FDFE29739A9687287364F589C6F4B3BECC02D611051A457B7516965B704146634F32CB4C87617B975563C90765580B85749100B2155FC35EE0DB2F16F4F54D6845C804D0B42D6CB974EAB416CCF62CD35FD65FB1B3F71481FAA93C37BAFE02EDE5E41DDFBCE03F42D44FE5D708B3FC03B0E40A298377E6C247BE5A6DF34D5F6F13F712EF60ACEFB8697F36AC71CF464E1A37E9AB0CF20160D3148DA0CB79D163F8B2A74BC20F06B3082B7F5A707F8873A576DBCE15FF7B6F1E60AA5EEFC7838219B8F9AE5DDCF30B8458E9DF8AC1AE5E5624E2C245422A181B0991FDAB3E59B65D850063328CF54202442F6305C7498673996111B21EC2F83C473A834E1688158D66F9C1F84F11E24361587778EFC9A62B6FB0C8093D9F7A6CA4232C6A944DF9BDAE852253FCBD0D5003FB13B55471C4802AA405B4F7A2811ECF638025E6128D816594798E7B066257021D4C7A34086BD9E628D12B831E7A920E67D35459175AC42AED758AA90F86A2A63557E26254926824ED7B55957186C126001E69BA67D4A65665C09DEC51D368120DAD990061E37D1F9A5BB6D8B3B76EF88A475F1898AF5F8AAF519C54B3FB61C0831CDCFC785C74E7F84AE1BAB49B6BA318952CD74074D17647FE2FDD2CDA3B84D6766DE0FDDB36595F82FF87279EE90858BACAF7C09BE929E1D30ED45D43EAD50D7C9A1380B009798FE403A9647B900776D47E48E7F1B1747E089930BC1FD83051EC8FB513164331C1869E7D4A8751454D9F2EE5BBAA7338328DA30B8284083BC5B7320E3F87AF39416C361800596C14A620AB45AE678108948CC64AB37DCC459FF82765B09DBF2CE2876A6DB89D8363DAF88EBC4FA404307BF16A3927AD29B2B33F3B973E26114F07074BD70D7AA70277CB52FD5ABCBD2C8648149B38734BC3B0AD949ED245A89A2EF8004E22DC1DD895D7E16BD448C88C70E431768E926F31F3486C653F1E09C60762D61A1A2E24BB62F83669ACB699E89641C551E7C83D20278F38C74D39CCF221F59E067A4526DA567AC0F8D3B7DF642CC197103FA715F9184DEDAD", "53161CF32DE96D4FEC39809E46B8E4885BD4898C1E6BC6E72197B2E35B0AD1110A0A53895F8E2D59F5F2B571B84322653AD0C77E45380B2666C57D3BD81453FF386A514288055E105ADE843972934881FC0E320B20C6BCBC67671011425E651DA960397D11F66EF7CDBC821F81B6BC42365085CDF8B5DBAD9C0DF6C07E083C3B3503247A209664A6F086ED4B240BF36B0C3B97210F24A8EE4E1DDE496CC9D4F1561A7B16D3D519F7E563B29A592B954983CA564B1D2F15D5C9EE8DDA8AD5E0BFB4AEE8C8DA267934C3318C07613DE1AE641F1C0CBFE04B4A338B43FF733AD658B44F3095AB4FB174A796784A62A26851E89307B33A6348156EE84E2167F0B32AF71081302C3275E104F4CC02C16083E528CA6F76DFD9BE0E4CD78475D89A01B83FFB3D4FCAA7AEFE88EB7C67788BA0AE98E94A49FFD29719ABBE1CFB8771859209315FCC3EC4B0BB5B3C3402D0CE07ACDC09BE777DEB9CA20340B0F04CB0661C92793168606463945929A8F7A9DD51DD63266EA10E2F57CA2B975B8AADE95D62804A5A88C03CE8D19DB85DDBF992A4729C3A0FB89C0B9A991F03BB0AD2AB04C8E463E4CC6CC2323E33BBF8839910DB4B6E6E5DB27A7B65F40A0DF4A4E819AE6B27DD60C7F70087D09709F24D6C52312FF8C015BC7FA1D57DF15BA9A2F17ACCCECCC64FE8AB4DAAB1C723B078F25C4289B9ECD4F57259CD6F5AE2D616EDFE61708AE5713A31F025AE56C557705F3AC1779F9FCA6F7188D09E4C259EE369A77840739E40102ABD95515EC94F65860EA8B445AAAE3A087D05D78B022BC97E346CFE613DDB5BAF56A1A840B4C4EC67244C4F9B73912429FB1033353CD01D059379E9A4C576A2F2A97ECEDD3C56C2D6EF8473293BDFC1B9BFFE9CC7B38AB5A435B9871B27A4B91A83260E965913379E71DD31417253AA3E0EC9DB73E228821C5B5E5F1B478FF9A5A5A8D6771C42EA2A67ABAB6E8FC89B62F3A0F2E6C906F2ED1FBD706181775FC42E6BEA86F171D58131559857DD6DF64EC2E262103A372D7D1E207C03443A20A36A3D604DCC34E3335977AE8FCD4DF8B4C4032140CF3E6E34B2F4B34AC2BBFE38594AC5C9814C877CE22406352B4E8D08E56C6E3E7C7CBC26092487D4FEE663DA458038BD71E5C3BB86B10E265FA51AD4FD692D206B8E5AF55F07FA4BFD2A5358A99F7701D4DCCF733EFE73D1D2E098161E50492DA6839BF704FBE0DC3E2C23EDFA2AF8BC927EF39710C1673DD914F1E137EFF9855C6A9D408A507F0135B7482542D6E933BA600CA647076B45396DEE523AC5BE64445ACC8F770E20681E2AEA6C34A8307621B97841F136F79E0D9AD923AA4188E2CD9F8905301012156501AF2B6BD2FCCE4E65B86FAB8DEDC5A131EBDFCB262768118437346327F188686F099B4E6F857BF0B6509EDFD4B191F4348C6081A330C666B69536AAB45060EB2F1B93E5C992846D67740CDC4F8FE19601574B671CC16351329FE81B9620601D1209D1E15E7273DDB63CEBA3F87D7F001EFDCF481CEA85685CCB8F42D46BBB3971CB443ED7A4AE96A001D0869A844AF49F50925CBDFAF1189F0074FD02D8AA4B9E7185CCD053B2F980C4EA7E0B292B01967331BC11FFF5D809834CFDE46CD6274C11E76FA08A770D7B8AF0760E0AE693D72C5890B732732A2B3002C628AA2ACB8E777BC6633DD01B5383D96B41A198350D7D4CF25C154411F0AC95B1D206ABEF2DAA12962BAF3B1C3035FD96D196F4E398AFB9D76F59EFC3FE38E4402A552A40EF0D537CC22A9E006EE9DFE69417B536188F6379696B182B13453E1FF0C2934B570743EB39D3FA50264ABFAD011E3C83035AB39BAE041F19EE5F7E460E5554E94908BD668CE16DC9336ED0170A3C3745421DF921BE474495C4C295D931BB7F0016A4188664FB04B4A90FA9CD632BD55CE5DBD84DF3CF68AB6397A4B088B441D2375F9578AAAABE5943BD32ACDCFBC14763CEB277CE77321F147CEEF93666FA0666AD280D1935DE2DC708E4C8CC3D41BC08EF238392F8EBFDE0F9C74E6C01F9022BC874F7B96B02977EB5F38C7DC5D134309FF558CE4431E1B813557886BF57F795180BAC0A6CF6E6D4DA8CB785B9C8C119A27B71245D02755EC4933FF25A0023FB6E50C07FB2C42C24ACF27165B37AC10C46A4685BD855F4D36DC1CA99991DDDEB4D37A48F400B889E48E5E7484CE85010309D2791928928B6273524DCD3035684E0A6A7831C644D6A7C15199A8AB761E65EC1861763AEA5EF201B95A1003C4862D45A473DFB5363FAB3FF036BA02E1F66742617B9C2C9F1A345DA4AEC3BE164C6713E7C764DE6DD5E7C4B2A26678853DCA6CED47AC0B15E4D5DC9859279C8CB35957159F49347C3CC193A58AE40449333821466BA96259455A0211C07D597FCC15DC73981E7560A7C1CF0B8B23AF4A8687A21AF3D924B044B88C0863748036D730826BD50D75DF6EF18ECF260BD4B9DF63DA318CC0ACB52B993D7D0A8123B41F8ABFA9D2F53EC03C0D4FC7D934A7EFFA48FAD58B36D4C7E36CE41067D1A920864D46B8B6856911A4409A1C6C11A9A46B18C3B7F0982C27A9DC92D2E0AC1ABA0E11688E41A7CCE0714D7AB73AC47ACE28CBCB0568C0BE32F7C2BF764FD79640C4B60C1052A9F96AD43C8F37ABEF7379C85F3A58DF46F57301C8C4574989A2C6AA0E9B2B38C3F77FA4EE2A7348DBFABD55E5D82C4C692D926E867E398B451F13DFE62151F9D65B971CFC75193C98E22268FBBA7ED27809E97AF323ECEA37C0189F99B85EF58DFDB91B81400520E3D9D385489726DB944201370019431F20186FCB61FEEFDE1CB89641B8AC4703567D35927712CD7BE8434B16FACDAB47F5893A62B5E47BDC22EF3F6473ADDA1248075BFB1809580AFAACD471A1EF410D134D8B2CFB8EC07A1F32AD092A667217B625E8C75E702B4DE19CA033ED4A6B40BE67A96AFCE92E2FCBB62529BB2EB2AB5D1CFF095ACC0379A5367566AEBE54B07C50F94BC30527C41125BC71D9F2546DDC192C3E5636D60F458096EB52B8A41C87380DDCF4A3D93DBD2FCD847FD4E8A3FFD6558429DE6BAD872E273FCF8C1FFF717F7C9EC84369158A811CF52D6093F0163821B11D6510D36DA268E67A54E1E2B80B15A4535CF280F2BE7A19DB528FE9EE6AA1F9751C98A82730F2A4191CD7B1EFFC43280EF7D549F321B92B3377AF50BE423A3224A45D902E95DD307E041CAAA7EFB71F9FCCD78A651A90EF1AE491FCDFF700A2FD34D8CE26E93C48978E90C37334C9499411FCBE61563837D3C057065AA617835F4B5AFF493A83EFB8D650383CD02050C1D2C435456597778909396B3CDD2D3D5F513141A2E4347565F868AB1B3C6E4E9EBF3FCFE2C35505563656A7B8B92939EBDBFC0C2C5E0EBF7153B4B6C797C999FABC2C5E3EFF4F600000000000014273B4A", }, } func TestSign44(t *testing.T) { var seed [32]byte for _, c := range sigGen44InternalProjectionCases { sk, _ := hex.DecodeString(c.sk) pk, _ := hex.DecodeString(c.pk) sig, _ := hex.DecodeString(c.sig) mu, _ := hex.DecodeString(c.mu) priv, err := NewPrivateKey44(sk) if err != nil { t.Fatalf("NewPrivateKey44 failed: %v", err) } sig2, err := priv.signInternal(seed[:], mu) if err != nil { t.Fatalf("failed to sign: %v", err) } if !bytes.Equal(sig2[:32], sig[:32]) { t.Errorf("signature mismatch(signer's commitment hash): got %x, want %x", sig2[:32], sig[:32]) } if !bytes.Equal(sig2[32:32+encodingSize18*l44], sig[32:32+encodingSize18*l44]) { t.Errorf("signature mismatch(signer's response): got %x, want %x", sig2[32:32+encodingSize18*l44], sig[32:32+encodingSize18*l44]) } if !bytes.Equal(sig2[lambda128/4+encodingSize18*l44:], sig[lambda128/4+encodingSize18*l44:]) { t.Errorf("signature mismatch(hint): got %x, want %x", sig2[lambda128/4+encodingSize18*l44:], sig[lambda128/4+encodingSize18*l44:]) } pub, err := NewPublicKey44(pk) if err != nil { t.Fatalf("NewPublicKey44 failed: %v", err) } if !pub.verifyInternal(sig, mu) { t.Error("signature verification failed") } } } // https://raw.githubusercontent.com/usnistgov/ACVP-Server/refs/heads/master/gen-val/json-files/ML-DSA-sigVer-FIPS204/internalProjection.json var sigVer44InternalProjectionCases = []struct { pk string sk string message string context string sig string passed bool }{ { "96DB9EC00F0FBA0AA5D401A045778736B8310E6FDFB1351DF8342659842732C664D44AE0EFA591A97CEA3F52ECAE0CD058DCE789ED7E8BDB38E85E77880F0AF9C5133D12E9E0CC865068E311C99139553E7730C8A03104950C25220CABD458716B564CD41A7B742831EBD71B1C7EB0404446D7135203EE44D5AF99DF4758DD8EA6EB1997E7D46C8F7374EAB08034522CAEB411566801C65E78239C6580D27791EBEF9029A5A291D64B748E26D0C3E297CD1CA87DD546DAB4BB9E74734D5F506F72401B5490A83891C8CC6377693AD3F9ACAE6A05C65BA4B1FAC5955A36198CB0CDE4C70805C4ED3ECA5AF04CF3E7D01435954FFDBB0780BD1E62EABC675412168F05C81F6926A769293397BC34682F6F13039E6FC7AE0E9E8D97861C4AD0584C2D76F2A8418DCEC0F07DA34F85C0F74F212B8F94C414A04EB1FD1548E9EB94F233F9A0878DFA120F54790304E22E9FE81F6D949985128226538538EB53A32AC647BEDB768C695E6E301D733A525C796C78D5D251B1927FB7397DB29A505776BE942139924BC80435749FF75B3286F013E50F953B0BAFC5160EBAB30EA0A62728A765B9A317662BD59FC8C0618A3C535FB88C4E85F4779970817E8168B1E7DD736D5E00F3698A33737A2C587FE57E057000D16589A5810754E2D8021E6CB54B474DBD74372188E7752C2C0C5B3A293A0E17FDB89B4981FE6439E4F4CC179206AF565BBBEB0C6EC2E516C5EE216F9F769E0331300F636DE07869C13708B2C45EEE8B5DC222C26E234E826A971215D75C88845B435CA40B9132BE5D34A2AAB78FA16EC309B8FBB03B8EDA22C013A4E02046C3534E4CFAAC7DFE93B8AE6F448C27F42ECA0CF7D2B7096E90D9149C95F80ABDE8A113792AA016AE592996AE13FD6951207060D377F435EF13007E5E5544D0D0ABA9BF5C8F0F77C22CB4E0AA309A8703DB9A7A4221478D079A743F381EC70A48CEEC10A8CEE185177F5F75F4B3E40B051F863372CF1B19991195C865A810B8DBB2509CFACAADD3C4C2A77027D225D03DF53CEFABAAB70F459F96B036D9D3E1AD3687B05C513178CE8934B4718217BA984BAD5A78B3C7ED83D8F26A04C4C032D706814DD5D09310CB3B61C5D8BCE6753A58EDDDDCE37574BDEEE8EE430D3E9D4EAB124F359A194A55FBF899C60E0F2A7955320AB3A188972040DA61B8D889496324D52ECE2A13EC06291138ECFDE17D56BDFF8B9C971771D5074FA1300ACEE24E465781D8ADA07BB2AF2732B081125B56C8F37EF26FB435AE58E7722EF957D5D30D6FFA5ACAFEC3B8714DA1541EF59B1EADACE58CB48247268DAE5CA539413F77B38346E484FCEC6F92E57171A83013A245F1CA51BED348903608DD9B57BA37B3EDB5A8B0ED049CC9DFA39A65CFA214CFBBFEB797F824A2AD8CB113290D4DBB7D0FAAE9404F7F0401B2A43BC8B58D84A84D00BE4813BB152142E73E6F27449CE3899115CE5E5194ED0E2B1318139976076EA1022A92A5C12ACEA17543D4D152791B455B50149DF94A11D6CD8545E721433624F635F197E68C97E4CBA37B080F583427B342F87D0F8A9680D7F545C6E6E055D063F6EDA75C650D65858E7C30512AC90ED05C788C260B9CD90D61ED121FAD4867E65DEBBEC5C378294EA2A886055E615E7BED9DDAB758192D38220DB8EC382A903FBD24CA48C8C77D7D9DC4307A016E6D24412ABD90A37F637438D132A7C59C7AF67515AB4CAFAFFC416DA09A929C77F91153EF2FDA1D7A60BBB177F74B80352D4CBE69379A257D835063128ED6A1F7D40041A25BC07B0DC0DF7F84FDB96247D888BD8A4DFD48956DF70FECC3A1FA1E214173F94F30E0F1333A4CD35C6C83", "96DB9EC00F0FBA0AA5D401A045778736B8310E6FDFB1351DF8342659842732C6B9F93080ABC1C364E614C24E94D9DFA1C14EA71ADDE6D85CC47589F61F935F9E32F3BF802AB2A5182B77DAE363424FB4C0388861933EA7EB9CE6856F4BEE9CE37B29DC444B3CBB80AAC0259085E6DA6C49E0FEEB4BB66CB8CC6478560F43AD7B14132A242552DBA084A2A26858480559982818168D12B63020036A0103464A468CD9926990A2485BA0608838859380014342085B24850C438411122D9034404B803094C26409376521002EE4B66110049162166E91328850360613B3209AB8080B3924A0086084B2082228628A402544B661D9A68043188541000D824849E1B03099B68C9202000C0405D29280140449D3980862B048A4C681DBC60812390042124802A864A0886DD420020CB30582285241140A241471A2A251D82042624669CA002462004584B8844426921B483253B09010136A1B1790A2046021829010A430181749109425110770840670E2864859406E010760E29891A0A64DD9420C631222D1B8058228120A961120374E08804C1C8424C1362658144510914451A060222662C8A48C8A96401A8429DA4089213761E2384093C08054400042B881601084CB860018C00D00391292364691A26021C74D18292E54268519473010355259847114A345C0C0601933920AA4309C420441B630089430018565094726A3B46911A5081A003124124D8904318308519A46449A2048511049C1188812818C241031CBC630D8308D54368223078C0B372C23251244948C44004903169023A070202091A0B00588442DE4069100A7814C182A2000248304129A80651CB2715192611C098C1C3489A32872240120C0B651241249CB304613B9001A032803454559425001360012838DE08081924040C8808D50C47098A22513302A20C96C99B40954180C1218824116626384441804201A03661943709B347020268001B00D59866990486E9A022E444049118151D1860544C620039700CCA43163A61192144D52B28CA0948962146C024371D00082A14640E2444482B2081A4571DC820508972508442689807113478598B264E1320153400A21C59154988124A771A338891413884232709A18858020290B8051D2284108299141C66DC1342CE48411231442E01069D9A00809B80952964022A84818246D9B104E0CB14D4C420CDA48489A1281C284450A00848B922482440852449240062414175042288D0A96681B809104893016A01BDFE2897418780C6A3C020D3975ABFA691A2398F2DDD5395404DA4A4AD5B0D77B2CE9AE680FDE18E365FE178805E5C22308553656DD94C2827F8A9891340E1F083B238F1A183505A99E8BBE0F8C3E485AE678BC3E11C972DA388C125026E7B63F903CDBC3C0A2D6F96C17A01B4F78FBBA3919B1F12D54AE80E343F5DE1ABB999A2AF2C86713505DC7E2CE4BEC8A806E3DCC17D8BE1F40C5211F00EA91BC979A9A129330560B858EF5B2D28A444DE9EF47B37CBF5BCD37717A09F32FD7FBB03D8D05B0ED029B70F8FF122A7F8CAC9518DA9EF8C022F42F8FEDFC908BA7B4B26DDF2C3E1266626C17BC58ED4FD52617EF235A8E97BB1221C791425F877FD9B49A5A66402CC294FFC2407B9BD15D2A68A365EF450B839AE1C1AAE056F73F22F8D1F1F2DFB3C8DEE53D6C885CF4309DBC492567C0D14585961E2954C2ADAF214BD69A51DC8087243E259333C3A95D532ED6D5A7F52F69637DF48677DF56A5D2F4108FB40D0FD404277F9F7BF162105F928AB76D52373D9CFBB38FA07B56541A6F0F8430CFC38592EC6B60BB3708D7EA8884477DB3D89DDD6D3B6CCC8B6F43AE1BA04E56E036D7FE10330C1977B865AE24407AFF6444F0ECE082FDAD6449BC3C8A482C62941BE978112108CE9D54CACF3072B1C61676F5A8E633BAAA4B005A354B25795A5DA82C226C4297221FF32A79AF6EBD5AEDA26ADD074B7DACB2871B8F4B4DE2A110585CF35A90E5A08F7495D606437D97DF7FAFD08F2EC161AB1C60F6CB72A4C88CF2A6BBE7479C8A37630F6DD4F44F9B7EACF2D7D73DFBE66CE6F496EB4B69C07AD6E82AF9803716A2561F271B60F2494F4FF5083AFC948A0489CEFE259708D5969AA14B28CFF8D4611865F6B2AAE288EFA886D4B363607C6BD721152F996FCEDA8439BC222941FA567BB3F9A00ADB9A683C53BECA6826DA3EB71364443DDFA4DBE78360812B325A99E72139D54204677F35C1D4AE8F27D40D17C65BB6CED051AB7BCB966CD3F6A233896250912DB569DF8132B2954E5603168FC6535A0E806B4E94A2E4750609B4E9C0DD6E0B8D4460493956F4C231DD0FF8C13965FBC17815AE29A876DCFA082D418CBDA11FDB46DE77A48090D16BAD922F330EDC649194EC07DDBCD9B4F8E11C4BC3A861FC985AC8B58EA296B5B93EADCDEB4A4CA23B31C2E0FC35C4C3221504410B8EEB1F13D8965998F35D29248EDD14D00EF2EFD006C0400D4DEBAB0689064B6023A47E1FEB088AE61E494645A0B9B999EEBF5D6604539C7CC4C0A4C7D47096D85341C08D8ADA8EEB41D193A15826C9F4C768047654AE706AE42497C9B346631E10F245D9C7FE8A7F133EFE897A00569EADEDD9FA3AED6B029CFF2217615A4CD3459959EAD5FEBBB4B558D4EB22119C7C1ED1476AC8FF5FD2AA79A9CCA1D5CD7DBCF05D85A0B553973E5E139C8E143053C3AEAE9763E331EF4AC30F6D585AFFC09CE5AB215C0ED6C0BB4645C5917B002412C31448642E62919E828D669AEC6A34F5672BCDD24CCB7BB574D81760229AC39850D277B49B58994407C38D78AF8148952D591CA7CED490B91D75B0533F365FE6AB77E87D86FF8D8505A4014F4434D5772B08FFED7A037FD09D9C99CAF9D2DC4F884065D5DB6EE85EC85456DBE8002512CB929857CA09CAC5940EC0FCCD728469486601E678D908316E8A1391BC07611D16322F1CEF003A299D33F86896920F09851AC7EA8994E233B80F9D605D3D7AD3141DCD48972828A7F00D73FB1697E73AFFCE08002B569A3811817A405360ED824035E4F6794FF78A82F770E42F19FC9250CA0A4BFF522DAC31D337B41E3386B49BF75143046C768CB91233F9A07A493A5064DF6921886D91B8FAFB19C865993854108656A507EE97812A478D37CCDBFEDE8BC1C4C4E966BB89C4D55743A6C6DB21ADD91468E56A4A63B84129B42C00010D6BC2161A4A488AAEE4D6F56EB9FD55C4A059179DB844B9B526959CE7D0E2401CD12122C905A256843800EC371164C95FA39FBFE0A3144F590BC464F4A65C19CD85529A915E893452AAC3B59DC7EFB119E124E70FBEC085CD5C66B6ACC36FE1B6CD1CF0B576A769B83719898F38267AAF4A7A607A8780784A3403621C7C3CDF9A00E39C05F3CA3F7076377C5B1CE5C2B74F4425FBF7E30B09CEC2B46D83C73737561A21733683224FD86D0BE3B2574A0893B31AEB93183E7D2DAE9C922C9639DD893F6573E7B725EC2699C6CE85ABC6BF71D5218112F81DD35F8AB320E4687C340BC505966320DDBE30C4D781619CE9C97F31231A79C5DE3EF4238FACB330C7D421F8AF03DACAD194DC876B697E9BEE5E6F0581606A17E78827FC849E55EB46C9", "068D4E554D563CC73421A55A4C04DF319F4936F73C7A7626FFE2B65C39AA6B171C4C83B6081B12B2FE07856B7A755210B133C16721D1F1894356705F083ACFB98D1FD09F14916461B057C92E04B97D7042BF970963F837ECEB98486D7CC309C8368925F8E595CF493D256058BEDD218CC4ED2312020643B318B634E4DAA28711B0880C2646415D65D19A0FA7AC4FA2207D230F04D5BA5042B06B3A43FBA1E44DCC0DA861FE9EAFD3F1F8CC5348F31F52F93086BFEF531E58E90AC5F5154F5E9DED589ACCA19C5003E2FE58F412394D75614F93593ED1A567D949FE4FA291D249ECDE8D956980A18D89C49094BBF8A1E7596786E7994B7C7AEE044C432ADAC7739313ECB421A6DDE8372CA4BA4C946B268D28296A04655DD893AE3C4668D8BA2E7FDD28271E2F0F83D18B4CF6240F292B4BB51CE4084750BC3A0AE3312AAF738423C8CA76BFB7DCA90C32B1552198E376E067F5DC5CDDF74953E7DEFAD81CB583E16E8E07850992419279C1FF91A4A41905BC4DE03254F2B2D0507F51F86E22CE3242FAC5B1E9322D4728314F90C799D339D669FBEAE8C5DB3440F0B837D969C4C852C72B77DDF06FB738C8F83027F3C108B72A6133EB20FA6D72A3A258E9650F2061768389A28A64389CE60AE2334DD7E248A29DE989263FD551CD0241280B9D42AA2B7DFED50AAB5414EB592BF54B3B74E4CA6387A8BA4CDF7559934DDE7823F611002D6FC2BCADAC2945A4D505B52FE41BE1B94B02AF43D89A3FBB83B7D499B8C05FE0242F56559E166637EB93E71F31DC4A227830E455F2255DC5175BC313613137BC25E60B2F3E59EA3058A2683560571647CA36CBF07D84C7305E94AF8946BED953C9477647241458432162DABA56BC5AC7E40AD13A8500049B2E2F43969D0B92325DBEF2BB1EFB529B7050F08220F660A22B4D95D9F03712BB02954376B0C99311E4FBB1B75E86147AE4C27198BB073172A6F360311D762D0E7651413375365DE2E8AC89526807968B7EB34F1E45890C44C9B8AC0DAC7CBE6E4D1ABEF512932D34E0B721C84BFB2A52010CADDCE47A28344653C7A26A3E9A0975D54D935997982C8F34996EBD5297905B164B468533439AAD178DAAC0BC687926DE1BE38B86684D53330F2715D64CD3FE875FD3B8C1E890B8D81AC2E5EC5F9F5CAE4509269517BAE904076DC3FB73C7DA72971F5BC5286BE84279A34152515BA0D323889E264695A6BA98E02CD0D2317C5B15364700728037E3306D2BBE7482E4343E962DEF23EFA9DE1FCE455F4F18AFA461B5D43690DE6A5078C115EF74C688DE407CE981D5DE11E96CD8DEDDD0AFA5455C9F84FD6025B1271702CD34D915B6FEAB160FF55E0B43E6B3355B4106815346F6EE052BC534F45071488D19C5C41FC719E55F24F69B3461CA493155752270A51C92F9F8DDD0E40A3A0690936D0E30E58BD064772770D9EFE7E2FBA93E2F5602DBFA28F5AAAA987E5D8694CF8A1C44C6F37085CB254C9F4588A3A3754F4190CFD51BAFB2D52456109C8AC3C6B562928B584BEACFFF2C1D8BACFD1A00BB3408204C4A311DA79C12DE3F84F743D84C43A2A45FAA5762DD190738574EE702959593CD9B13F90537EB02A34CAC193356E2FBE51C9651C8D5BC60433654929FB52AEC9D2B99BA4828BF3AB0722D1E3E5D3E8DE9ED9C2D8233BF66565C21C4719B74D16BEA7671E4CCE982491884873C12BC65FBC62E138695D6149D7D8732AA085335FA6A31FBC23953180123C359485CE4DE8ECCCDC5D16E3B9CE539AB38E5EBA50C71CCE321F14B31C88BFF82C232BC4E48B56D1D4F15C502DE8C2246F401DF1883E5F51596A49A4BAB1CE28AD34CC7BE2C2DAD17FD6E8A01876388BC3CF64DAA16D3CF89F1E97CF5CD6A8CDA174C6566485F3D41ACF6EB536FE6FE129968B637F6F9D738B3101E696F590EE9C2F9E886752225F32E44A4EE0C82990F52EC4FDC544ED4FFD3DB896D526C8650E4F7D509F551FEE9450A86CAF9AB133C7E70D5F5AAF3E19702DDD8740B6AFDB40E9D9920BE177F28E2F9CF35E5D6DDAB4F94D8502094EE7E189421757AE0E314406BA1D65763D156C0F68A9971F92B23535255EE7E3E20B073F0838F6E401F6C92412E11FA30FEA483568E4145626F9B238FB5994D76556F7C9B07550854AC4F38D0FBE1954FB208ECA364D4AD9D4C7A468CE41A8F573D8E22C360AD38EA48E82A3CDE91DCB62708AA44F18B047733DD493F40503CD78B1761D897BC575C4CDD2E694BE17A95BA87DC21F21A6F9F66B980B80A85C87651761D5927973D04299C5F602A6A30B49553C508C68E4EA871896FD4C180F9AC3D58D37C9510E9808FA3AF41C3E028D58E4238043205CE24F3B26A1018CDA8D8DE22405240BEF7CE57F80E94B3415BDB9987A26A59D8CF7EAA133B8CDE40789E3862821EBBC15D30AC92DC018478382E3F4851906BE03B6141FC139EEFA36033F9920DEB709A24EA180D4A9439107ABEB12A303E747230464EF3B9DFAC763EF7261512FE36EA596F87C6039C268954FADCC0142D9B86490B9144D5C90AACB11CAA711D8D0B567EC658CCC5BE7DC28A23BDC38B5E92E86943A31E55B5B0B13B4D84815EB1AC11BE681EA71505CAED29E6FA867B45F9369D0823CA9FCABE9D6E6ED18FABA7A884AA380885942FF18C0D42E813531F1F0CDC30280636574AC7EDB2D70791D83012F94DA59B52D666C50F5921E991AB5045756367DBBAA1D150D45B5BFBF500E62F2C79BFA3649570440CE2A807A81E2248ADCD0877075C8BB9F00A31C21A73A8B861CA07B4F4FE137DDB6F38455BC25B051E766E9EB947FA342DB4A177134BB4442803CA032340BF1C6CC1BF0290B96D9282440DCFB7D1BB2BCD2BF4B31A7F3F9A71C8FFC855DD492B4525707572C75F2268BCF652E5250D27CC1FE16D6C0441DC3631CAF0DBD54F7997F3F5C4F9884BAF9861B85C5B76CC3BB9DA9DA457E11F3AEA69FDBD77F884201852C9B161C60269C3384E8B3E2B4534EF41E85FF567CB60A4568AFBF10EE7E6EDF787A1AABB7DA13A930B2341C3917565EECC5EDF7117A0F3736DDE673DFCCF5B904FD0A0AB22BCA0C7D10D07BFD31135F239EEDE43773CC7284CCD781D690CA013E215D4C6679EDDAAA256AEDFC84040E5FBD1499DE23EA5249608490067421D80ECD00014F631C4838BC0821D605E3196CDDF5F878C8DE3E32ACBF82C21696B24730F3DF9D70DC45B58D62AC621D0EF8F346B69D367918F29CAD722BB8D1C59B687A3ED50ED650236B2C6181CB6ADBA4C8785487B1FF3C860602A5FD944772270F2E174DC1C77157DE789C62FF1EF5429B16633AF8C4C98FB8009C702E2E9C079F6090B0BD76BB2BB35D5C7B8EE496A282D42C304F1197AFEEC4B48CF324A52AE41B4795B17816C746B24C9074A8447C8D8FA4D3598012E7065238C44E01EE0FFDC123C351243227A775B051F89E021799028ED12492EC07EEA8B9E39FCE4CF704453E76CFED7F1C60C9663597F18FB045D8828B08F2452C37F3B0C03092F11DBB4853784E47F02B9D97C369BF240B9F68FA8690DC084F67BD7CCEB0190CB4243325699390E8AACC696E93485A02A906B3C9CCF4C7343324DBF460F914698A20D02D7C582ABF6935EF4DC51F2D1B6C1E75D329A32D8441AF8D84430A2E8A0A3E7DC063C6111ED9DD7CFA7918E3C0B91F0E8F732E9807E133E38D77048CD6205856A8DFD63A6A9DF8F1B1AB1EC8353CF488CFE04EE260D74D969E20BF07DB8F1809414E10B541DEEECE658F7F4587C2044C7ED00BFE29A994C9851809596C5E8120F0969A39897368CBDE788BF5A0C2BEA77A2B665CA0089FDB87AA28AAAACD46F185101846798E77E52CAC06C9752C73BDC2B416B340063108DD03C7F1589577D54201221480815B90DEB662E1117CEF4FAB813012A288F2A73498C7C51F569B8F9D1846546C1F3EF2D6C93C42BD65A1A4D8E747F41504FD88558E23BF84225A1AF91056C321B836E3755527A001583558584BF7796194AFE3DB680C9302B457FE694D9AE2CDF9F0C060B998C4F8D8E062212663DC20C36893F324BD128897AD1E1A2078F1BA568EBC28284CDA289308987A853AAFC2622EE23F45495CB618E8AD83C16801716AF75BD6263E4FA5A7E93C71732B613530DF7231EA5CB1B254E25667F27201DF8A0BA5F67FD091E450CC9C06FBA1987F509FF5D3378B7D00FDCBB6C812A07233E038130BAAC1D536A2B9BD676DAF7E0BAA791864A5F207AD1740C84507449E1E33F9B679BD42F87904ABC54F289451C610BE0CB0BEA63D96A1D04E933AD9D267F8E5FBBF759EC9A739C71AE388B97D55D4032EE9AC87042FB92C0886FA22301F9F4DF8A5FA35C93FA7B937B2D5F6B2BA5738B57AF971B5F19BE5F53ECE71607189E0DA3B63C49E998E186B62889015AE5AD6F85A93B9F069896C6A88CF4758132BC042FB951D814F834934F9EB4F5DF67EB48616848C31CCDC7F48F51421E2B30246B1D6868462E0FD7CD6C586DCE8D2518EBAB20A5A59DD96D98007FE8ECC6A1ECBC6C421AF8529768070DE59C8A65C774773E08BF17ED90AD3861BBDD9716E5B209E2D396029C56F46A3792364A12CE53DE16FFD279AACE900244B74F4601A0994430AF59B9A58B76108269E67D93F1F0B002DF38B029E3B83B8C3C8D136776D31E0FCA3C027F56BD4EAFFC5C620A1D3FD1CBB6BDD5BFA90E6CB1D80F63D9260DDECBF19AD2C3BB66BFB4F75A385069149C9F673974559F10AA9C00BEE61571460A34ACCB1FB9DE38052B1274CF54AB6D70BE25D42031428B971054B1FCC092D228C7AFE3BDD9D2C273876AB6E13620FE4EFC7E78E8990DB91769A5F27B52BF6FE2F3ABF053F969EE360E6E2DEA59F53D03D003BB3074C6D3B702DC26C809D0E1B45510D67424CE51B8AFECAE6DC5BCF4906EFB4B3374C5F3CA1F14224B219E23BCDBF2A74E85ABFF1C372FF66790F2CC242747672D8CBCA6FD5F5C1F23EB89E7A5543F5F91E11CD7D529D8F01BC352273F370DD4094478FC3A83886A5D8128F4284BB9B9B7310332FC50ABA589F72A86CABAA14BDFB1335F0EF7919513192881CF62E845491CE1E083ED863CA386F4CC199C848603F757119102D69912871F838D4F2B7DC343224E40A54337C3C462E491A31C339CB5D1FAE0AC896C6A2286C6244900056A856F35D0203CD4F237BE1B6E41BC984D44CD8D5596033379F26E7D79366E81DFD0254D3C6A7769432691E3E0035FD99F00FC93CBDFD690D2ACA0478A7FFA841A9E1ECD1A5B984AD7986C2B26D5E0193AF9FC74BA891FFD9E40A9D4B54F02B052B8B8C01D9AD29C74B61CEBDD75D07B8155978C2F4C3CD35F3C67EDF80D01F3834AA1F751616FD2852CC1F65C7F3A062DA1E2B64386FAF3AF0A218D6C58C836AC786A187CFE1D630CDA132A40EBDE80C9D446C143AE6CEE621DF56FC47BAC995601E13A0004DB74622565B0745D11A579E50818F11F378EB36A1C57728088718A888751905766D2ED38E07B3C20597E7568EF4CEC3721DE53719266D6C8AC43A0A1D0CEDC870D6832F55013FD8BFF46D1F21F1EC329135B5663D89DC099C83D4BDD063C662A719587B275009277412C0F53009E05F721A6DE37F84D1C941BA8F5E28A3FB70F99D2912416E4CFF1924EB1F532DC42BE1FD61DBE4C00FC03BA9D9645F124C6F321412F435D24CD3E642A37F550D632B1EEE7075132D951C915EE49E422341BC94401CB648D30A5262750979DC912F10381B87A0DEE0AF4EDA6BD73024BF58EFCC7010742DAB46A68F4F55C27C7F78689F195D9B130E3CA4C44A618F8999A1B83775E944F9BE3995B69AAF0B8573994BEB50D9D6778065B5B51A326730FD413E5AEB3605BB53B968EFC51B78B3F1BEF6A1A28CCAC80CA36D8BA4A8B327295AD21362FD446A3AEE681BA1D31AFDE15A5DCD59809BCF54A1583F9040A9CBD50AC2E0195A1E5F8C40324E4C1F6954D30DCC5E648821EC4AEB6D815CD0BA6D2CB43B0B27EDFBADB8C2558B7CD6AAC222A5005ABDD6800015FACE04F7D711D1DBAF14F6D19C09D3587A24F49847D708E065586EA2861C41BB1CA731B14427DDC6EDC353EF9B278B13A2D0CA284B2CBD2C8F591FB4E8CF9EF3049209271D8639345D3FB505039839851D5772251F564D15CE4F478D5C3AF6A2C85787D4AC986B2505D97E88428B7BD6D67BEFEF72675A8C66A5BF88AB3F1DCBC807807F6F1000FD36E49C69E2B3CB8DD7E2BC79F6CEAA58C6E6E4AD85A2099233514C1E0943B992E5E6AE1CC021735B53452AA4D1512D141599C328A2F6D3E4F15C8B561F2EC302879DCB23D2BFE29A1F979469870AFECEB76B3CDC464120B10A80DCA2BB82E2F7AEB1AFC01FE47F42661969D3A7DE65DE0F36E9021671B4376DDB08520248A3796B3C37FCD8FE05A06D535E0A789E8C12D2DEFB5F0C5E33E6AE78CE1584DC95B413D26233F148ACFA95E5504A6862A02BF09D2E980CB75BDD70394575F89B95BDADB67D28BA8CB001770816582BA42FE3FEB6B11A9A337A810B2CB0A14A1402AC3D8BFE8856AED2A1B7C8DB874856FA20DA8F99FB47D3399C4EC3C79D2E67CA428F5EAF15C50A7398A1F8FDD3DFB954D2B9DF19146681FAEC91B382DA37849AA59CAB309D29A40FF394007D32BFDB5FC19E0F11C91D56FDCFEBC8C9C4FE17992F2BADBF2F8AE2D1DBA8266B5441E6B56B8870E1D0A3C6534BCACB800B8FA82A0F64CF196546D8428FEFC59F60A2B88B6BD4597D18270DEE451305F7DD72C19137971E1CDD4289B4F59918DE821B6641C298F2CD10EFC12D819C6BFF0BDDEB98CE47AAD6F48B246E916A6CD9448F8AB10201D5B91B8FE8E27E129801B12B2F62725D6E1CCC785398521E5D09D23F3029AE1D1A3B305DF62C64774F5813868CFE743F0884A928DE1C4D061711BC4D69BD6ABB883E1993917AD207359A84909E693009473BFC9AD5265B23DED1D8D8339A11D3E8B1EFBCF7BB7AF51F8E4F29401BD7EFF9EFE78B91436D67EB015F1C7FF19584C3D4BC765929F92EB78DEE429E46352DEE58D9C92EE5B8A52848D6F0EA3282FDC0DD7F8549C638C3B9066149E895A0C202395F02FF56623359F63C91EDB23528C7D6D83F0837673D5BC92F812902AB64DAB4A31F6B5AC4991C77CCA0F3948CD8978A5C840A8B86A548BA5DC3FF8EBB16A730267A9ACCB3146AD2CA8EECBFE7A98D1F1FD42952A4F13F3DEC1E6F3F7BE706A960EB3E19E7A76E75D6AF7CB5E334C8BCF36B65C1C0182B54847274119A41724744CFE4A066707A75A5E96AC055C3B060200970FE2E4B79459B948A622D046F416FD2799394E8C66459840D396DB6F91EE491260982E219BE6389992CD4D3F9A322C8775ED294F15602F3D03809DCCF34C16F3616B79209E7215C38964ED95839CC07163CEBCA8E2AB7DD9B9CD94B0AAC1FE8063D0DC5BA48F5631960CFB923AE80A9831478EF1CC7AC43EC61DB0F5A3ABCF84F7287E8E34F2B9F1BF8922A6E944F769C2385C7A46F5A8E15F114D5D8016BAB8B3E5D73251CCD08DC1D4E6755C234F147B300B5E64836ACE5ACF5B057F7BC5A6FE7ECA39587399CD96C0FDB0C403B1BA16CDD946BDB9377E1E30A5EB9A674DBF85AA780DDE65E15477C8179B0189FF00BAF56CCD3A4B51778CA99F3AC71196AE5CFE39C3036CB0829A13920E30C327BD6A6DFC3015A9BDBF6E7B798FE87B6809D6485F28476A6DB7268276F80ABFF3053887B6301A6DF7BB27812D7023D705110C9CCD24C96045219D179D0D65E5409BEC9D66ED8C74A6A46D29898C8B0ACFC490DCDD4A5BDFA29F7542A4C11164E4B10DB97BF39C95EDE9E729046CFFBB6342D8AF724A964E54679002837A5E8DCD71958947EF4DA87402267499B04733A2F8BD034EDFD67A3A55A8C89B1097145E80D94BA0A2B32145278F49C4D0A3FD302C131B8EBC0EA7BD352BFB1092CF034BEB443CAD7760B5134CBF5D8693AF6551B85B6B14E3FFA3BD86C30057C76D058416DD7436F4B58B9827FE8E5FCB2D803682C37D98541A285F7B316202F8DC12DA1F28B414E5E81435F3C02E0C5F1EEFE9C5F933DA4724ADCBF1591E09EB7E58550BED7DBA17462FB69DC5BC02E51AB9993A4E8151321DC89DE3CC5B149EB1FBB0C3142718B72938474B66F810C2", "C888E70AFA79ABB9FE4BC32124F5EE0AE2BA7542A8DA1AFCC87348125496761782B26AD8E7078B71C9931FD51802B056B0E799944EF1ED3261CF1286EB744C1D20DC23D54C9FF27C4FC433950C7BCC", "D4EED978EC079FBCFE2D0703EBD24EF5849DD30E7B403BC9F04CFCBAFC71C5E3ECF0E4E66C263A49AECB503DBDE395A3A2482286C3799C7D427BC3D21FE965D3E16D231330C773A62E72D33161069634B2C4BD2F1DBCD77E004F56F4E2ADD1ED394A96D97A021440A7675A3FB5D7987EA0AF7797B2C1B149B17C9B0B5FA368F3E050139D0068EF3C68BF39FA0D4EC26D4E5141791141A71C4DAE59CDD1098452B0F1E6668E73B1EE6ADCA834E3A003FA03224408AF34CB455B9F322737DF9FD62E8CEB62D18A95147B32DD6E1C5ACCC3FA8CCF138880562A1272DD37F1D972797F98F5039E4795FBB3064E336DF26E48A73E123CE5A4B28B97841ABEDA88183F6E225A3E5BCBAC7C4A6683BE88D22BE874DD0C0D4BEBA338AC938A1A33AF4D992FEB85A374C758490B1E6778B367E946BF04DD76E31D9E99E73D795E70B61109E846DC2D7F61B298756D361F3C92ADF14DC4876022B9845D982A1BDFF067EA2AA2C9F42EEB22FB3B56906BD171B20DD16BE346605C5FBFE703823A259AED2B2E5C51F014F2912A7B5998429BDDA4F650DAB1981C15E05325E36A47C8E6B83ACB3C16122704F10BA118C9B69382C1297B63746E76D603DF80CD17ED2D3B5E7935035D85DAF0EA1D1F6E9D565FAC4A0C84E0401F7C9170F01EEB5121978E5DBBBAAC5B6042FFB689158A91D38C02886391C45A6849219780C78144E443974FF159C56C51ABDC2E11855D95C71B9C331E77384AAD25078F8CF363708067C87949D9CA91295AA0DA7146C2654F54224F1429201FCD5922F6C76F7E323B70D15F724D3F219197CFE6682259E41A1AC8EA5C5DB00FAF78A3016469C134B3A19DEFCBB0FAC3980293F10083FB1952BE10BCB93252A4AFC5AF0F20E7C31314650B52D3A6BB6BBB56755A9352AD141CE2F53E0885626A5ABD5ABEE822CEAD80C86662CFC31F18E4F769E3C543354D24BE42C360E5236F92885C6780C246065A0A3DCB2727CE27B4CEFB63A405CB1C0736087C6C8CDE4AA8C61DB5BD26917B77799E06F061806890D029AA9FA159C91FC635A84AC218A4B0EA84368D7574956F7AB34688ACCB40FAD365A2807C55263D8BCEC0ED3900CB66755D5AB346019F9334659A074098F6C76CD607A43A80CF1D0F014A4C1E7315272D50DCBC117A770D48A17829DD3F4316B46E1A5283AEDFC4202E17C50A28AEC3DF5E8C1509D5D618BF6E44E6BE9022E97B63C67500454F616EC4034AF26DC8A59DB2C798C60E0C09ED5A0FD9534CD68FEA3CB0014F19142A59FA8E116C047F3E5B9AD693F1F777403EBBF20FF0A7413463DDFA252D355B96C1B540CFB2833CD82F640ED72A1A9E86725F5B3A0F94DC7FC8CB1052BCF8A57D1D1CD1313B2784FCB922C3E4DA304498B93E1973347F5317C07E6A529C6492EDF2FE52F42573A9F9CD9A9A436B860667A7B0247EE98B35067998DCA625405F81B936E6998EA889476691ECE165939B5326AC7BCCA4CD9640B84697EC899C2938A52375DAD170A7331108C865693D945615594372982FFA073BB65249140771B34EF711BE4B6BFCD25442A94D3689E7258DF11F81AC3B0C3D8CC3E406B9BBB7431F11455429A97591946BF6BFF1B74AF5F90F3AE2C8A53ED71A1CC47D8CE4716E0E068BCFA8A68159A6FE48BCF0B8ABD2D23B4DDB412C1C3563C803A27C6F8CC774C85620F25B3F8CFED86FE702A9762179A868FCB1D5FAA1DF01AC052D5256BC2A5001BFA4BD69B66AB47A082ABE3ECA932EBFCF6BC3DA31CDCFD88A31B2EB8584AA9D4761108C287584B6A06EBADB43A5F801D70FD2936B74A94B545AF3F8741E42B5D94EA5D2339A35755489635F32148AEA1766191664C8FA968FC6F737EBE3B40B9B1E524FD3E9A85D127FD0BEC85F5C26BF2A0420FC836219E7A3DA1D6179362CC2DBF4CF1F28107B1B27A16CEEE86123E23966C747A936B789FBA3D08DFA0F42B355F37DB02C8858D5E3F4C8EDD2AFB2E9B3ECAE5B157CC72021040459D0F483A13F90ADE7C06E67082DFAC6EF51521D5DB6EB15EB9A7833EE6182B7454B6760EDD1ED4F002D219E884E75113386433EC7B4937AE970465709747CD29B39FB7ACE6C8CC7AF528192621AE9D4C39A6E8C6AADF87D5AA28C1F21359C20AE01023C88D82F0FE9B274951B83792F30FE472FAC1D258ED608FD2260C39EF74331899070982C26BE6C4096D901154D7995D5AE8170E5E6755F01842B0C28160B625BCB6EF8DAD5E4E75B9A2D513FD4D2A71F60B37442764818FDA344281BA33A59BC1F65ACBDF28D4D01CF9E4768AA831D325892FF12AF79E99C10862CDF6E6CAF7B8AA44429EF4E3648475C2FC096070E7D383A63D673B31791B746EBC41D79F64297DE9FBF846CA71B0758FAEAF61F269CA8D50C965C526CFC60DB13A0BE0FEFADB09AE835388360D5226B46E08AA6AA49E6B5B52653CF62AE78F364A97E5523B0E643068B3BA7489DC014D18900573644E610C11CE60E3C40C63E9E0FFC200B1A91177BDAE345F8A0424D904F9CC32EBDF6438DA5032A2F515A39D70D5A971AE3FF1868CDE580749136F120C1BB610EC49077417CAE92C0D830FBA3169C6DEFCFBD6B77FDD3FD0E39F42446028A29314FCA35029CC01183F5EA262582E10206D54117FC4545D90EFA1F5C121FC773AB1CBE64C31675D4CA12E47975BA7348C8388A0CE1D91DCD59BDCD83426C425243DB8AA57983C18F93DBDCA3F7C96C32132D18E3CA73E1EBBF267ABA5A228E64BCBCD47500DE9A249ECE3AA890E38BADDE673E8FBD68DF49E1C983A67CDCCED70F7D11E7DED5D1FC28FDE58CD52CD04BC80E26B611AD4AA251AB1547704DC84273E20F8C8CA72D2398FBA90AAF749EB4342AB088FAB4E476B2B1901BD06C0B8962BE122ED63C12EDB6097CBF5D6262804CD6143E9D5371824FD507092F05A86F6A035C9BBEFC283627CF4D26FA6547BA12739F85353E575FC7CB06A2B0D7BFCF09801F517D1CE71462E3D9725E142338FE324D493362D1B6B9CBC5391D3B31715DAC2395FB9F0D9C6B8996A68178F730F9C7847B306E8E90B9DCF22AFC5E54257F8B58EC583E68ECEEF5522555981EC5A355B819BDD45510E338A79E94D46FB8454BFFEF4C2A8AD8BED8FDACC14BBF869DFB3B5BD4D4153648B01D5F91B9E606663A7B6C7BE643EB13C416DEB4D86A7ABF3929125F81AEC230F56B102D26F1419B33B217BB8DFC9E2D27AB7F92B51D34D2D5538AB4F66DD51EC7E406B1CB276FA2EAD6BA40774DC63CF2B955891EEB2FFB9E87A573E708E761D546674F62E91EFF10A918820325303B7DB0B4C0E4F10923343F445A848D93959B9EB1B3BACDD8ECF12435456E869397C7CAD6D7F10F1A2D50555968698A8CD2D7ECF2F60000000000000000000000000000000000000000000000000A1D2938", true, }, { "E18AB85EAAEAFDBCBDCB3EA341FBF259727266C8BC4D0F11FB40F29798BFEF76577A44C895E622A75F6D28FEA7E90985600BFCC1D6BF914B32262E9884BB54836CAC5CAF9469DA5F4870B8901AA0B437D90CCBF38F31D5BF4FA68F30A594B077438DF7B2B8EB440C4C897B76B21712C350E8D48EB066EFC0AA5ADB2967AD41EC73E3055A26EC6A6CF5EF682B0B74750EDFD78AFEFBDFD67E2CEA6A0D69ECC05659CAF464D94156CF00E311F69830AE112C43C9B9F09DB5D14D1675A1F173B1778AA3DDF95AC398BC24F9737E06B6AFC05BE7A058D31E924F332E2B203F5C6D97A5ECEF58B678F151BDFC23B3546749E9718C225642AEBAB40BD51446C69B90AE17FA5E0FFF8B58C9502C620798FAC1F6F40CFE30A83D3BB02A5380FB293806D79A0C78B7549C6E9F4C5CA1787247D4D6F29BF144B66338675436C04B349817820831952683827D9CA9106463AFEB7F20D55E0AEFD44180FF15A891E392DA9F68A265D5DA8C2C8DB1244179CADAFECC820D55D8E0D79C5E5A2D2C88A25EBC1F5D05E58A4615C58DD06E30EC9CE4061E61992ACB2E12C7590E376B5DC5177CCA5C9ED1310C5EA8A67B35F4A39539DF3A702D3ECBC63EAC6747586B82147AB321F7FFFC10739F8E58B623CF450218C19E8EDA06E6D309867CBE18CD5F671BBB25488ADEE2CB6A72BC3D0F81910E1A45DAA3B004835202BFB5BA6DB617A59FA48DAD83362699C7DE4C4D2B2D7ED20BA9059D7F5981A463068D2057C413EAFAF3573DC16C4207B905FA125AE5644D7E4EB5FF72E28573FEECBBE9BABC235A18232BC1944262CC16827D8A2C329EC51BCC260C57E3FBC0032AC125DFD4C2A24193EEF0E78771CDC71BA1448352F10EC7ECC9F597F2934F3BF9D41E7D800239C44079778DF020F51EFFD196F53B2491F5AD85CC43E041F58BFA3D24440DCA3D5703A66129ACEDF31BFAA975D7D4EE565E8718E61F98FAC08B8C78E832C059CD52676DF96597A603D0768FC3809E2F247B99ACD53BBC37605D03FC937D415F779F0D7DEDBD477CF3CE1D022D04F4A32700AC3ABD07F74B9BA216DDB01DE3D59D8CB1F90B2EAA0CC8A8D3FAC3226F419E7B73D847C70074659631F2685604CE3D994B612661F06C3C39EB84FF0FB52882F7EDC73C5A68D7F65D85F89BF98E95E6238099C960FAB3EA753FD33036971687F5BB6E907B0D3BDC524797BDB24D83EBA3DFC008BA9BA07B991DA2BE9EFDA8B40F1E97B5B25754E7FC7769C12EFA4F9079F8BE6EAB388486AAFBC45AEC554DA05A230357AD4176F12675FF030E0168B0F130DD0C32BEBE9A2BDCC7C00AD075B29BAA570348AE857A8E7CAE49FF2ACAC887C31A093B83450557704AE71A74F8A273FD9D6A75D15F001A9F283CD91438B7D045954DAFB9620CCB48F2E18A75A278D478CABC2DF94A3E784B4EEE0A11ABF86B975A6070FF68E73265ACEF4B1E6E2A2BB58DE268E8F9D2893F71543CE7A0980E7B87A107BFDCFB70AE6F3E266168A90F379FA40450452A4603B6FC7A6604A6EC940A8249402A87558C9CC80D719648D9EE4419DD054D928AB8BD0F32B35766DE3497BE23721FD2B53F0AC5502FC5381E1FEA43EC6BCAE24E1CF9B0A76FC0129F8A27C814A664F4153D9B7732916430BF497C70D213E90608E4ED00AD9DC09CC5A1528CAB8251367C9C7617B203979D77B118E506D644E6ACD7035F2FF6172BFC1C72C904A2E103B9B4983EC38F81E726F67C7D4B1B6FF2D01FCC3B682DA9FEAD651565F78A0D98439B162A4166FB0FE034C2AA9E85222F3532F7F8D7928810B58FFBE841E93E3CA1AEA1A197200FFA153D86AF019EF79E4004C42B04E3FE7A94A379DA", "E18AB85EAAEAFDBCBDCB3EA341FBF259727266C8BC4D0F11FB40F29798BFEF7697832309654C93DDF3D4F31661C1CA7E90E087187C43851F4A653C5B99F923B059E9334EB8857FA6031A59BB55DF85B5E5BA27A510194898A840039D49E66CEB7DDCA4421447F04919671060C831500CA4756A711C27514856D594FA69E0BDD00B860510B30C22B4649048828430261AC580894800A3482053C470C3308420057290322058282411B288CB30209C008C224589C0144100C58423822D22444120C9100B286C0C253102176E842442110085CA28669322494BA02D810469D426061A9729D4023221164EA2424C809470A336714C0281231932DB349013490811C1891900090A118C83C00001282DA0086184B48C49C2000C248E0B200C4A084C043172DA0620C4188A2113668C3831E2804493C24418112D1BB990088821A028120B808D80924940146E5892205BC6302409889B02300223295C408163002E010348010181A3068E21158D992466DBA00088864D1B813013276C9CB449C4A84881366C9330069C0802641822889661D124249C884D08212220096EC9084C0315855B2681D4326251084510229211A58D92289113B9914126119238710424420013500B08015C147181920D11412A9AA20DC8288D8AB80DC8126621886913064820A56523362AD816860A10718C30055AA8849B208298240E4B086594328C8200701224211A299251A4894C36800C27512403651B0469CB24861AB33099B444A4366AC9B2891B267044960920444D213885C3C60183B25103460008270DD9040A8BB8059B14261918660093316296481A19301B494212C560E3124019B92CE3A6701A350821410EC4B0908280651A2904D89609084671E2442D2396090B2910CA30910BA884C410285218862316704B384621A5102336229226308C9040E2B609E39240E0A22804C728DBB80D98B6481B250848308E004540D0A0011BC48C23458521C18551986004172284C4688A326440283192263244148489325023B34194368C202046903480C1B430110845520486102924042426D8220E89802DD9A870048050988400CC122008B1644C0801E1348250802054026610040E83145112494C9BB02CE048651816100B874C02032218982099320DD0140804212219A18C02B26961A05050C4041B428810221214B844A4162A18955020268A02084A5182085000685890289AA86CA0C28D09023012C491241504113468C2A648D38825523685CEF9FB7779B2FDDAE8A452E9754D22D24CEFC11D7F23A803F054ABBDCB3E55D4D2F07BF72FBAB7EE7967E06D1051121F77C1661B9F996EBB6A0C8DFBCE9BCB406D9F0D57DA088AF6628E2F008FBF38F027D081EE2A25826FD82C310118E0C63CF0AC0126BAEA18322E562EE2BE35DA1570AD9C099239C5886E3281465C922B3CA745232331A4121B21A1FC0370F3D98539A5F4D1C05932D1A0C08F897134C5486DBB1EDE02CCB47D8F9E9C6C7150297770C9FA91DC692D49AB3D925AFAE5EBA28C6F29F1DF9815E0ECA3F66CA2F9F64E74B2112F63B35090D5E6F5319815F3B0A2DE8810F21D5D1E5AD2F48B44DB844325BDDE9D8CF69C517D58B760864F9755D040689B7EAF212360A11B51091C5ED2554C867B59E4DC547CAE62D5F0D0424E4DB40DF27FCE399005A20E0C8755B7498A316D8563AB38649E9B94DD2E06EDF8B9DA8BD04118DF8F7FA99BA5F09FA18F564732786DF785E7401ABAFD9B4B128F96DA5D498F989F0659470DD12AA3C986079103CD08BD41298166CA85691FC8FEBEFFF35CACD212D3B7AB2AEFA2ACC51A7936D576D9F8E9909D3A785B301F09D03FC89985FD2922F539ED1F7FCDC8C9BC78655E1B0D68F4448FC30DDF710AEAD86E4452BD5D9F17DA3A83A664B892B9004729CF3717BB28C88F44F0BBE1B68C483D93AA7875057B3942440EEA9FD259AA38AF10809CCA86EBA9F5D3F575915A2D27907ACB90AF89F7CDB06F87314E1B80C34182AF2FD1CC6B3E1B4CF970DDB2F4DCE3CC15F41D0A1C1E50CA48AA96978A04CC8389398E2FF4C73B59136743E30FC94FA3FE47F568EEAF4EA51ACE06B91386E6283A2BC57881FC59CB475EDC05AC9DC0B37C074846B665D58F950BDE5A7A81D778EBAEE315FBE293A7577952FEE3B32B3E5AF711685E535540B0B98D64A8C8AF52AB492A5C14546BA52D4157C4FA87C3419868531481E85F54E3270A53D9DC8CBFBD35D569CCE90E86A23C705CCE9400194806302FA3F4C609C813DD50EDB8B497B2361DDEB3B255589D98732A943A4C07C089D844968597375A7CF684BDE4A8C2D86FF092EA8635EE387AF0FB6BA7F9609B1F28C9BC88775888BCD0E79303576EFAF0F473CCB7DB6A6F0C44FF92CABDF316F5E0887A4AFF43133F40685D6C88F0710BC3E6F98C4DCD944EFF9F80D4B2ACB68D705EC39D3F4388508EA2BEA6782CA615628A46746F9F7D47D67C20386F854F165C0BEA56391FE26EA2CB7BE46363D8D404F4A36C9C912A7C81CC9A76A2BC0A2FC5B5D174B81BE203305BED071931064A7A9ADFCC5BB42A148599ABB8AF61863EC4DF3041D4ECB1340AB5F85C6C8EBB97398358594C2FF78116C25E8EAED93B601FE8E4C3A3EACCFB21C1DD87C06B3ED1B000EFEDB77A7495CC69A2E8D683267B8F3A0EE71666D137E23421AEEF4D660C1EFA12B02907C386D0CD9DEC70F121FF31414652FA3BF30031A11E51048B4E3C2F0B9ECC8B4EC83A7073A4DECEAAFB2756B5E105DCDE3FCF60971224F1C24137A06E8ED12904ABF2E9A53EB68C8B73BEF2D0A57162E83129593AFB9B7439B3789A11909F064161B443982ABB1E1988E2B2756AA1FA1531B99C3447D6A55F3F17E64026AD2E5B32A8135BBA71A4CF2E5756EF7ADEF23B15F06DD0FDA4C351BCAFB81EB3B5A62501A3F387E2EE82E10A072B9494452D8FA254254256101FC8E18FF0982C48D6675F08B50A953A11E052AA0A2FEDD93C0006CD6A67824D2E01CA95B845A4273CE12AF922F05C6C81803549FD24AEFFD4B0D547E6E00DEAB50CFA8A375668921F020F5DD95B2948A83F02B689E8E004355A8917833B2167DD5B6F1B660EA2EA64F4CFC7656D1C777CA853858D59795BF625182F2B7CF0B910436DB97CAA9A2F6A4D5E343CCD4C05A5986B376E161F300AD8183E5914A12B34042A15512F4C68953D53E53E7E6202797D96DFF94B703E33C0D036C27A6D5818DF473E27CE543D463281EA3D7FC562FE5057BC42CA4FA349A8E7C5A1EF92BBF493CF7BAC500CC5817E8B4DD461C0BACCA94A4607FFE7ECF38F0848758CECA08359CF4632D1FD7A702CF799122AC86E23A26F88680EE962D5DBC17455C5E9D3720EF408B9293B6EAD7DC11274569A354FFBFB143C023EA55387FF68A4E529083D0D164671EAC91CAEBEC1C115128407D51B7F1D25AEC56332593C01018664AC54FD28CEB494BE5DE5880630DC70B700B21C8341451860110894BF2921B1DFB130F8CCD110844E0C98D04CEDD0D4D268ECEF1716CAC7F689AAF3057113CF82CF4B8CC6D8EDBF209A523BEB0D2C12DF1418C108C72B0C870BD8A71076E44373CE52D00E09EDE8E66B2AB338E605C1C5", "A3BD89BFAD0E748FD562D1849C47D72AFDACF440BA17BF2E965B9DA0F9B0EA4CB7107614E122EDC7E582EBB609B086698A2B0C39B9BDDF1AD16AE19BD65A12C118DA3422B1615609E6ADFE9932919977F773FA0C710326EC332775372BD375E31C1D47A2287DDD84387D3CE0A9124247A20C6F4B3E2EDF607C5DA08EE68E86228DA7AC74D83B8466BF383B5063A349D4B65CC5B2F6038BC89220DEACE39CBD73CDA083F2E6F9A368BF654EC9F771805B0A842AA30154C3119A936D7CA343CB0D0232C2E4FE5358E1FFC706BA14265B009D82F0AFAABFA58F8582463FDAA32FC51F63F053721EDDFA34D562A7E34993E1D2481FD309EB71F2853502DC4E8DB6626EEA03A8072E49BD55F99B1BB12BC4885E94CD91059DAF230BF781BCDB33F4CFF014D3A8D1F275A0D92570B90E7DEA07F1DE0F425CA7774193D49A7DCE22E2C6B2A9999C33B5666DD729387CDF42F8A67550DEBDF9A77989B1075E38604DC911A24FFC06235F58CF9C08EAD6312848F10DFACA98348515AFB0BCFC8C850276C10069A4273405A140E913430F562946AD93E33BD60EC97B4777300CC49F41E2DF17400077D5DCD548D1D962B0CC8DDFBC819CCE68E28E0100E17904094E72194BC30F9C35E6C749614B1D6510CA5DC17B3A5A37B98DA6EEB476E63F1E3D206636EA2C0D8D091917B8555B0ED04278E62198412AB4A80478D19DA64FFD809EBD5AEEA788B07F59BD640FE0BD05778B5AC5E4C0BDFB7A55DE72DD8DE7C77E26981361855C9D3DCBE1553DA5098776555E846DCD2418B21FDF4B44C67C61AEFB091967345BD50FC79308D96F1A5AA0233959EE95C2873FFF48BD5B6C64D1D3BBC458FFAAAAB0AE4D1A2F556418FADC3BB7A9974F1C735309C311E50A2229F7E86CF269F79558CCD1A90B09169103112DC77E965CBA40AD2E509502768158582346E7672A27A4B94E065190C9A2A39FC58866627B4D3ECFD41C919C4FA6D32339D4ABBA30C999942AF9E39A8A15C9C0ECE4A84AA4912CCF001730C3BCCFB332A1DBA5936290846ED20BF4A81C3EE705DF4D6B02D874FFDF670E4AB5376BA01FA100D9711AA80E57E781BEA47194DD4ACC682F5CEE55327A4DC03B70E76BF091AF663CF989B46E0EA959570BEF4C9FA37E322028FD4F85DEFA622688B7B8B13F8DAEF011385C7DED912CAB73332DDD7449F32898AB7D3FA077755606A2FF3B55CD8B39CCC1E897A7CBCBA53CF0FC535069C888F30D7ECAC67AB2FACF0448B937699C70877E463DD1E636177544BA5271455A4E5B36A5F23D12B713FEBA7DDEE241EAF7436D98ABB824BF9800BBDD7E8DB0B44DE22AFA2160DFDD2029FE61917F37D252C2480326923D79565706D21A33E111604CFD15B493AC3F46932BE8317B179ED2D6105F9F10004AF8DF8ECDA026714B1230DDA81D09A86321E71426DD3559E525A6F98C7FF4413DF41A1F5DF7CD275BBA081E8A613C45CB628F53E14EF565173D869BC8812B5431BA3EE463D50BF375C9621C424D966BC06E7BB8D325FC7CD97EF468EA43F0BDD64A6C20CCFDB4461A6379DDCACEE30BA670DEB83F029F9EDB0AE2171B2556EFA72DEA25593CDB9F27BABA73C3D887BB95108E413297EAC170C55DA89CDB01D5D73DB5518A781C34B111502AC3106338B37FF31DFA2D2C5C7E749E75718DB178E57E8327103A3A882D896E5FF469360F3BCE354E54E6535A65C68CC40149BD20714594FA209F07E9CD47044E8892230A39A0BF2EAD22BE7978A3C7182307D031D7F7F2187470B0FAFDE3711260CCFE2CDFB0CCD27B9517635E086AD09A04CC3E5A641A87BF02BA06723AC4C5861C82E374611DF0462A96F27EB11B2F762235C1A8F72FE2AF728EFCA013FC118796157A38E1F3CFC675368946C9FA4DFF5B196F4B4B5B9B96BAC46730E3667CB4DDBB78FF1A8B9092800D0493C69C73DABFDF068FB1EE430E1494C371854FD379C950E33DD40DDE62A920398E6AB02B7D35ED80B6E04604C0F84D0CF9ED39B2BA9B6E44F11AA8C84096E6D5B5AF3B5C218EB0AB380A6FE80D42FEE59C4D74497ED6E9CAC6D2BA2EE0258B25C85446BFDEEA5A6E37B889A3663516AC4889EECBBBAF29FC6E1A467CFCE863C2ADD51E24EE476F8A1930F8A8D357E50D4FB61644E839FBE67834064E75739E30615CFA4B4365625FCED604B695A2317469BCF09B18C41EA821618A50A63D611DE78E4A04CB4EC93F522E0906E11C470385AC8CD69186BEAB60C69A0DA5B58ED7DCE6D3DDA5B621F5928221D7707F6FBB6E300534143E03BA6CF0BAED435CC17405798651D8B6338BE1A11495412B9C1BB3DE69672993506337AB93D9420296A61762020D9A2399D8972FC865A13B6600C9FCEFDA03D9D608872174718ECABAA907B5D0A72B6618A3B86C40009CD884AB1D22A3FCAC9D5CE80A2E73B3C65245D82F643D25E684226DF99B785FC1E136FAD43AC4D3A3E90E45DAB72C4ED3113E30CC01E1D2D258E6E1F546E6BAE2379F377C46C4058311DA1137107DCC6617B4DF565B976018B241983F47E57DFB45555884926687F1958C6462FA8513F12629DAC4E100389023C9E2CEB69A0F753C0CBC236EF28FF278C157932784E2950F4FDA565BB9070179C777225800B3EC1F8BE6DD1A23400080357DE802B1579AEC3ACF69872F0123E9D647AFF30F27F6AA59457E1ECFCFDFB862855CDDF0D8C0766A3280F65D46650A05ACE902F96306915BD9DA71CE051EBAC6C6CE940B2996C049A85615B9528334B64D24ED8AA57F301A68078798091FC1473948E07B1B572A9A74A7789320FA6361737BEDC666F40FA749B063533134F121EA36B3B5E4A8313AEB537FB4277ACACB5BB8CDFA40AB7EEDFEC5234D9215EEF35B9F0EEAC5BE1940752D72E4E20D6D6DFEF6691F284DC0F8207973FEE8A7685D3861C194E7C8C2C4D7F54701A49E6771C30CF5FB7326541D34F6B38883F136BD2E1783497E3179F3F1DC457D6AF4EED401F6EF1E659775BBAA40C561BCB4A11D72B2F693736968B32A5B93E8E2FF5DF9576F3C240FA87025AAF6B2E7E4A44F85C5287CC7EE46433E1BFFC7D5BC1FB25C27AA050B396746EF7AE4D9B6A784B3F2314F08945C84A35D7A758C5598EA0983AD596B989780D5CDBCD94C92A3BEB4A85460BFC6A35FB693429C8C0E3503C8C6767D755B2C0852F116ABF41318E6FA0783C15861B0800122B598A0E971EB79B1EC64789EC53769ADC27047A4826C2BE286FDF9AFB4B52BEF1B3A9395B514615D50767F43C881047D700C16DC6F1C5D482E56FED348CA276BA8411FCAB5DABAD84CB7C1DFB5593885D14279DB20D3303B05486F70EDAE141256349D0106D6C0EAE837B0A05863919EC6EC825DDD7DA0454326A175C4A210FD57194347F7FF72549F5759C1197361A7BE3413FEAC6C2C997B9501782B604242F9C914B90A50D2D9EB2EC90A171BDA449FCCD506E509C66CD34D97CAD85D83696171DCF4B70173933BF80873D800E6125FD9D6AEC9A3B3D5BECCBA7EE30ED2F3A2A10AFE2E3A1E757B9FAA98DF85388ECB7BD8AB51250B6C6F0B2ED576EF32E591E8F8108FB28E388527D4D51023E1ECA2316D16F363DC9AB29AB1BC72A39D5074BBBCC172DAC03992CC0E2DBFBE0620C8A179143FA7A14DA96AEB4FEB2004945494931744AA8E1B46ADBE94B186049DEA9CDD7637F2E407D2006B00F506E65061C0B3C45BF0BDA518B00624AF734E156AE156D27165540858EF07014FA6CB4CD26D08FF9B6F7E406F4EDC8BFA3DF7D902BBA6C153B9BE69C04E33DA312CF3F53B0162A64D50D011A2AA8B2FCF14578CCA392E439B074D341355506B8021EAFA7DACA052C9C11331FE42C9A1EDD2BE11BAB4FC1C2771A1DC532C676082CF546C4B79018E251240C65555B53DE3A0617BB5D23BD58D36737E3AC6640A876887B37FAD424E4D74E4F6898A529BF0DCA2B737EFC90983D4198DC84E030908CA50A8F1A5198658986A7FDCBEA9A6C33BCD3DCF6CD4D811785999339AE7B8F3C0B5323015D7BD1A72230BC7DA81DC6D4C27AF07F6CABDFC81BEC86333F87CA432595D9B16F3EBEBD4349A29D159CF40BCCD2B168BEA4D1E50492401C2924E0C4DDD21A9C2983A773E3AF144E80E45A5BF8AF58204C98153032034516B2925C579823817FF8ECBB14F2FE00C3D513E859A8F2AE758C78F85F420388D4A8AA71E472E952693E034E9724E4A934F76733CAE7EDC12476CF40EA9CBF833783DFF9AC32F83B08DEC0477A171544CD63851EC53B0CB4A256B4DCADF23139757D65AC69B21CCA163C6ED79C9017E9436D331BD634F09D2049BBB90D0E6777A66CD7820058A2008F6B43C5D83D0E5E0FB1EB0569D7965D0F66051BB29C255A024714AAFE27AB2E72ACF37C82000335656E45326879BEBB07C5A9AB8724AD72D7D5D5DB7263CC54E4437F1892AE22B9019C40601F0D3FD812871EBA7C9F71F1C5961AA4C914D1A5CE543F9841D1421680263B09266318F28A9EE044199AB923EBC0F9E4C4A2EF4CA566D327FFBA7702DB284535B36DC2BF7AEF57A851771CA18C2F42C8D41D4ED56BEE66E92293D1D24741CB263C35433E99CE0213884B3B1C5FF5BBC18CBE54965E817AF69C5C7D8CF2DFF39C836C9737E0DF8728B3AD56D6E503459010D4B23AEE5E82C37D341E10F6B5B0EF12201F9585CC964EF932E4E144E83ABA7D7442B3CF05BCA2F22D04871E706BA89EABBF2FBDC314538871409AF184E071BB3C91526E4F8AD14FDD58AA202EB039DDE6763569F5E71ED6A10349E70C805AC734A5DEAA398F04E12915A4D1EB049BCB27A771DFB7B6610B4B9BED546C0A65723A9524BA7B51756855ED1056F25A629E57B5E16202855C59605A0BAEE75ACE397C972C5D92E37119097465040FC165473AD4AF3A43D20966E2C7ADFC7A8EECBAF120285791AD62F6F025440BEC4F210E56763DD405CF6994EECDFB05EA714E5D80515320CFBBBD78A8A4F9AD66F824EDCD986DB8DC7D0C4450E8135F161BABE9D2BB04012CEE96C42F0A411203BA8CF21D1121965B11089462701F667FEC72F9C6FD67E3FA31FEFF2EC8C9E5017EC4705E833B990572E73AAF0E431BDDC58CF8FF5280C82ADB8558AA3709425BA7A2B59BFD2C0CD5624C57C582CF8F9A9926380B159CB424506D8A90110B51CABCCD6E9DEDB503FD981E8C06B51898562569A588D3FF1916309340F12994F3FE430CEE2B15A5044EAF0BFA3EA2E4B7916EA42504F994D79AE88432E1F3A2F9824D2EEB7CB9F6FA4A7E9F1DAB89F19A737534A41327311D3E7998221FFF72DDCCA784204D583CD612B74C4616C341330A943264D17FA1066D7C43A99019B196B4A5E0FCBD0C3EA5EA1613C42DAE897223383BC1863783BDA4412C8C0E16FC267B79E49045746B3665C8AC652D454799F841C08C403D00A94636612842A46E867B3109754881C3E3B47BFE96D0D9E405696F206CAD676784FF2D2219581FB2645F7D3F015AB10928BE6DF3A7B20FC6784FC937F518CE03BA42643641AA8251A823B0A6A74233DEA164393AA121B9E9257ECC9BB9C7D614F624813529527D61F90F1561AB354544EB730FDB2DC4284B879D88CF0C7B50CD855BDBFC871F51A13F66FED96D3176BE3DD9170A856B70D21118548AF3BCC8E7D8829321E3831DF28D8546AE964953DC187C7BD5633940287DBF7FA511DF2686159512C11D9F2AB9BE7A43D593FE8190BD666A2A32DE7CFB43B0B11E3CDC7CD15ADA9D27DA114272A6AEB3E03483E92EDDAC818EB08150A2BCFCD25001C158725A78597D2D5F3D4EF51AAB838139E81600B2EF855ED759B457BA871750378D4232451A1CA9E9E1BD31D0560A35B85D340432879F139AB7649503670F1C7F2F4B24E13BEE6DFC489841F320164BFEB7BEB993867F72A2337E238818F27233B051E691F8FD6716D79AB20A314708EAFCBDF5E932CCD105ED1DEEA30545870A92834A28F138ACBD97FC6067856FC0121128CDAFFD14B70A8AE7CA95AB0F1337F2376A01692A13BA5DE2FDF9C75BFDA7B389A2187D89420C84B35304E2FAA095E627B38317839BC3414B293F214BBDDDECBD904B95096FB5CA718504FD54F577221F357529EA6543D54711DD3F0C8E19B84059D861C2B52BACED6D7CD7711A5318583BAF55661E4696021E5A250C9327EE5C7607A81DDF6DCE8ADB4820FB55F39136D9D2246C662E4801F6412073B678358E682D64AB99F23A501BCB9456588C434ECDDB84C8B65679EAB3420009BDDA566FAE797799326F026E9ADAC2E018FB44064AEE4E0CE7D407DFB6971AAC50D53ADEBBAD51AC829E2D1BD87CACBE263081CDEE60DEF8A9021CF025FA275F8AEADB4798E9209AB9326729D6E70F04D42DD9DDF695872C1CC3C7DC481ADEE9B80402E77170EBF01E7863759CFBBC60DE550AF4E3EF538DD24CB874E93F132CA804159357ED59DF22BDCD5A235978D548A11B5B3776FDDD975AD4CB500EBDDBD296DF05C0F501F9A0427BD1BCFAE8A7180883971AE5B37709E68869D70A119E9F7A451C0080EDCC482640EAFE07B41FC4BBD5719D4D5617A2DF96AEC14A1FE12D69D9710AAD52ED8A20E4610D6656A08559B3F6FB4EF878FB5FC9537E67FD2C974E4144A8397978A2C0B095B641776C331506BE76A73F7EBE81BA8415F5BE4AC69AB284C289B58C182A9E2ACDA6FAA5D3EF593CA2B3B749C313DE6DC5819330FB8E4CB0F75B4B9C41A9723DF102929CEF7005B936B9C9034BB9D01E25F7358A588F3D6043EA25D9989FE66BC702F3A33204550B0BEBC028EE809B2D24E42C28154930E4A5D491448B01A506D2B793E6D70502422F5AD39973D334D52EA0EB3D96B9236AF9CAA834467455DF85440C2365C9CE1021B2E148A42ABF4E08D7C8D0E12A4AEEDAF9A095152405009377B433214DBCF781DC67E1980E649A6FBD685B84E95739872D6112C14FEC89A4894718C52F0B71334DBA4863D20C4C1C61E4F1BDA989DA9089622CBEE0453C14CBB3A44A710C54BF25F50EC3E7C2E95A2FF3068BF155582D8199D173BA97284C7E3026BB666C0F7870F30301A76C2A6AE5E7561891BA44F27F1AA68074C5B22906B620022DCF41860B98464647D738381A56496CC03F02AE42548AA7E21B00B7395AE8EFA434B12F54264794688746F9C298AB858CEB73EFA5C446EEFEA5AC532CAECD9ED10AC0C5DBD658442EA8728933795D9E7E3D6606E9B9FA650A9CF5BC6A763CDB108A73102729B2E2F26DA99039517BE45216C96979EE19441AF7EF9EB95AA1C838ABDABF6DAFA54796EFE4F2FE056CEA3BBF071C4E6586FB39D0CFCC6159D2E760A795963BA7A3692317CEF0D94314DAC440E89C32027FCE4216570118D85F65E0CE4612D0213B144B492EBE33C90190D1D894C0BFB3A5A6CA75C766CBFEA241C602C9EAE3F6A35901A84FD7B93A34098D22FFCB1A2568AAA92A19838A4CCC9B10D7E877C29EB3D193BEE6286E4ED0D3F941B39889C329BE8A9C79A7D84717F7C0BE168A1E3D4B30BB898E43D3E34722C1F1CAA2348D49375206B51DDF7F5B2202CA1BA56192C5C3E3E815D2FA8BB53FBA491733691AB1DC53882CE4013F28D15C88CF9922F16BE92533BCF669ACBF8EEAB64CF850B7AAC2533E96DD8BEB07A0DE8F8FBA0A9FE5F74177EB03ED151AFA55A8DF08DFF760DC32DA3918E8AD510037AA0B84971537B9CF2CFFB193DD9C8C478F8AECFB3F4ADA0416CF3259A51431398EE179916279E085CA481AD174F2F21C82CE0CEE9A8F29139CE710F5CD840737D13696DFA91F059C69778A586E76FB27C50FDDBC5C026015B122A078064A0D54A08958602AC71C507A68E0FAA4DA464D5F174FCAD8A7C129A6B196B56F8FF55A622F32A4C45A4F04CAA6642D3C06D747D81FF80BA47F73D32E2CBA79CBD706DE861D017C222E6D4722E43A5C8AFF56612B529C766E8B6773AB54C331A171E90502EF1C826802AA749656970BE31F37F16E6BEBB4DC09CDA2AF797EDC9303ADB9F01D7BC2E0B4CD171778803C3E06ED1A3166354F3BE9227EB20D373519C1ED2682C512D039695793AB179E0E788FAFE6AE989E802A308F12FDA53C4858683EA57708BBEDED9BA2CFE66F7FBAFC1013EE459F9D4867642F3EA3006BDC393E032AD28A1E9C6DF5764BD105E4597F3213598165865B93013F859529D363D783D5CAB8FEFD0F799553DBEB305996F9C468867443600F08CC19CF998831C1C1617C2AACDE2DD7B887ACE1749F17ACC0C91DD6EBA4C553BE72A8D6C6A5971686D86B02ED1A60079B442B39A71E71B192D07530AEB8AA3C6459450CE5B92BE3C1440FF640BA8D45F9BC9F85D129BCF37F9E9FE289586A86DEBBCD6A6059C42ADA0C535411F15032C30E99094F78E821C3A566B9E405E024A811F790FD504482C5DF0EC95B80A8E64883E8797D0298C65CBABAA4EC9A09D8D5BEE4BAE7A8C6BB88161BE83F44DC8E4A5343FDEEC5D38CCCDF39B40BCC98E1B73E0E281EF3399C71C73F509F65A5966EC661857BB116D3D6F3AE11353872B766BB4DD4DB3B44BBD8CFAEF599AA807AF07EEC8E83FF9CF512E96353AF025C20CCD90B2FD096055B44E57518B639CD4A575D2391694F9061DB2E7AE08689A15DD8652F66F4D7D8140055CE145178139DC9F9ED50502485FC3FF007B8AA15A10309D680D9C7873434BD73C5EF3BD051D2D72506379CAB24593EF6FE391C8587C64509F4B35AFAB2D02179FB848DC4E33E29144E31EBE60CFE99DBC47A6765BEA90843B42F0E7AF71556F21DA9A9BE350371559EDB3E9019F939033E421019C24F13A542C2C86483B7EF7CC205DF4601C82DE49429B4D25E4B067C839232E69228F7FCEFAB8652E8057F43AD8CDB2065CC957128A232BA4C0350C925A069F30B9CF9AD26450297395686D6D3F0D5AF142C2CFD854E738BD62E41E242BFB97EDC5344832BFF5C82BA2ABFAC3E18D89DE59388DF1F36464010259C72D7BCB1E8F2B4EFBC8ECB32ACFB3C33DB8E93B172A129AEF4A8AC23BC0FC34E6E9C57CEEDF63E3FEF8B89B78498317B42F256135E8438DAA6AAA82722A47B36464FCADE768F262191E235BB7BC049ACDFCED82746198E397ACE5E1427D0221536F577CE45014A1B299C2CECBDB398F4CED00744C9A23BBE1E0FEFB0AA5FCDCEDEF36F14B5087CD71391D971C7AC496A8EF863E5AEF108A60A2CD6C1E85DBD031DE488F71E27FD32B5A645D25835EAF4D1D81E5752DBB367EA8D3CA23B328D596431B7A2911B429D5FC6C15268F32346DF11F475B72134C5972A0260C54CF986F8AEC58B8CBA06C64DC58897A14A81ECEDF1FF34B9860839BD345C97D18062D86E629CFAE01138CE46BDFBBF5AE209E3B1E3E1282557E99599B59CC5784D843984D379AB3E43D0DF2A249CA31BA1EF49F9D4E565C9E7BBD80DCB3EB0E052E2D35117614A2C03C89749BB1FE13FF760D8667D286B20E540E61DA5AF06EB1A8A3A05DC9A8C7A55C72240164B1ADDD98DBCC219DB6A9CE8AFFB93DB9FF32618BD94C5FDBACDA432F241E7B553D0D0E4C1BD98D51F98BF4027B09A4EBF6C97BED793E71BFFAF872681E1A28ABAB4A94A3A434837A20DAC94A0B59D31E43614A4DCA279FD1B0B2819E54AD2BC3D5005B4F27E74D40174514191022727B97C6164ADEFEAB0799BB8BF2759AC034F4DA6D7DD56AE559AB284B762E398D3BA5F63915E2209D437D31BA0C41F86862BC43529E5E1772D0DCF86A7C41293854C8CCEADEFD7D784679CB94473BC15215A48DA0678D560890D536925A66160E1278F5CE940E0DF05CABDFF466A747066E53D192503CB1499760F9EBEED924266D323C8F412FA5E637DEDC19D6ED6989C1246B7F8D84404F0837FE39F544CF39C4B6E1D030092BDAD25E17918BBA81959AEE30BD13E9DD4F026D986D0A77454E6F68D358830478F1E27E686BD443BCA1A508B03A933EA1980F65D4A8FA0D593ACAEBD4485B269E4B29C3FBB481ECB4D716937B63B1103A43B02F7E214FA1B5DD33E958881AD234206C624ACD8252C78D86234AAFEB8D232274EE1A90460AAE74917E07497A3BFB604366F0D532AE32CBC0C52CFD16465B3B32D2C3153377875C387D7CB41D8752B22161F547C856F538044D08CD67E6F20D3225D0CCEE1CC238AEB82C28E63618C89293E408548E60039FB131F5B0351564A663EB3650E546056A4AD6285A95EA3542B9027D4B99711E5B21B234212C8384E186BED16C5B8295112FA2C5ACBB2551E6532133B9F7EB64345891D27A58340C0F82E47FE7D08964EDBC7537FDA576EDF42C8D56389207C606A5A2F6BF705186669F6B23A8197E73AA59C6C0BDF209D64E5142CCDE9BAB7AA68D98654434BDB47C3229077CC43E37F86BF2E40CAD539F0AE62A7D24CEB990A7E7E7E75077DF9C3DD36D119114BD78CF669A972B53618D74E9DC24D0FB87EA44BB1C393D0D9E93031D376E3B", "42", "F79808353913CE2560933A211B55589D497DFDE6D18B707059CE924F29D5BCA634829442CC9DD68E645A6079329CF1B9721E372D914B10D19B31F347BD087E2644173FC856FC9EBDF239F00EEBAFF4A2D2EA41A63CF0DF81AB0DE7AEF539CE852413F157805C40773E237FCE5842DB25267494D4CA5E09A5529951E97F99DD6447118C65B386088C10D95E41321262BDAA705953D96BA4AD868D7F7CC9E1E2950E6B441398C666108EB47A385CFC0A8F62DD10F524AB855E797BDF8EB0701B409B0118EC3CBB7A19762EFA5F3C73AFBDF108EC826CAE7BC1026571BC19F2DA31A4C918E82130ED6E6A76A5C119E4A3CAB07526F449BD95C128D5F8CE360D0DE3897E30328408F9F73F6E9881D3EEFE6A8CC64F66C161D9BEB18C871A60B2731C398CC9946023A9EC776219BEE827CD4F8B3E7245AF99FA5D55E069E4882F700A3B636266837DE9D4C352951F0E916C267F224FF0C65ADF3C18F63208B71FC2D94248A016D8ECEF7863A7B634CF49311F4D5A5CCBCEC4EC2DACFE7AB0F6154D3B1DABF5B87F66E4FE9EF3EFFA97245900AD75E6A3B75811CA38E36EFD290FB3148849408CCEAF81EC354BD808AE0B68B71BEF90B76BFB7CC3D553BD26F268AFAE9AD54B36D8C13B86B4714FE3617F1BD03E9772D8E96DFE3985E40BBA42AAC4CEB43D577D7B839BAD48D3FC1850C5A60E1E8083B48D4459D7043D81CA8364B58EA2F7B87A58CBE882D4880A1595EE9C8A3722F08A02FB2D3F82E3E520CACFCA1044AD45D1B489896913DD2D6E5012BBFF2543E893D3B5B336B76381ED79416B0126D77EDFF5EBE207AD329D9B55126DEEFE0B8E1EB70AA67AC0095F49FF4422B1060ECA24E4360D37FBB190C3662BBA818CD473D8D5A546CF78A7985F80CFA8C69B0EC2927EC90147BDFD45A415B02B6DB393A56D9EE58E79686B6FA9A03CE3BC27AA989F042EF7A1C5C063D636EF0E91CD692A9CAE41F89AF49121CBC8E90CCFF3277D7D5E48DFD27ED33370221F1EBB1983975E94B7A3DA27104B8E951D4D8E9216758B8E981B6A34887AE4690B117037EC451DA7984EFEB42F739063FC05B1A85088C8398238BC3309A30B87CCEE2C3133D790ADFAEB5C036C77AA11C5B749E94892F582F84D66E2F060CF7BD4082F889E2DB21C4504704AE2961447E110B9B14BBEC1F33EE175F506019241D0BE404FA170295A5D2C2B686F892DDDE495148E1A120F805A39A40533C72172AE7F1BE7B59A8A61CD175BA5D96B18D5BE7859E0ABE25346E73A711201C397860850C2C597982F61D076EE168B9F3C198DFE433BCD40FD00CAC9082000B5D6EDA57A07CF8712830A4918C9D71F9CA3035FEEA1F003FB8F69F22EA7761751E78D0771CA2236A5C2E9FF6EE0E91BDC2F253667C1DA5981B5F055E6BAC4D7F75EB4F88D1DD8055AD04AE54099D91A744CE6CA2B401213BEF6D9F7A0DA712B66D930CED0C5E0872B97EEB33BD9FDDFCAF83440D43B82EDB6027A96B2CE343CC43696C6424C9FA704B831F024CB571F3C82F6304C884920F20E7432F170C3D9288E6FD9AEC2F810B0159DFB579DDB28124BB41043BC62AB4ED76DB9457FACC431C5EA973EEEC2C302A1BC08A1FFFCD4A2B709AAFE02BC470355BDB00AF5522A17C2077B025C737B486253379F7A7B9DF355D2C9F1A20F3DA637418BC5A739846E2312B63A40F7D2A6B7B4CDD39EA11BBFB7D6E982CC538E4DACC5E03E0CEF1D0A5789A46BA08E6F75A6580A4BC4A861923C372D1CF519B4D4AE42AD957F51992778599F08A15AA2D8B5E6314E4418583B5CF05041BB6139BFE8040CAD9612B595334AAC02450411D5800EF35F4C8284CB5859598D4C92F231E2B44C5A3914C6D747FA84FBE215289AC799211C90137A7018FCE5EE19F2937318627B02B5DE2A6CBB242F79984321E1E51C58DB1C49932A96C69523341B44D37365035E255E12ADE889892BFCF859985B2220F9947F4298C729F57015C6BA53EC0909A5AF135816519A42E5ABE0F0DC5F10C7E1C54510B152E860EBCA8B8EE62F652DFEA40F770EE8AC17060DDD8BF7D0DD345781EE44E6A952339F5816AC1F49FA4A5460257D6C1A7F4395EAE5004F666A8658713250939E0C4A84E815F035BFD022C1D64D22C81CBEDBBDB6BAA48857D3F815874BEA8EE88B9CDA0EE146FBDD2DF2F8601B63A4DA67248E5547D7C8E16EB8D9FCA4B10306E36DDC284ABF05E6BBED69AE6DC86D41340E6D741E0FE2905762F74AA2CB83DBD1789E48482F4C19A045EC70B1587530F11E6637E1C9556A2EB763B1600BB5DD01337448A979ADA6296CA6415B07C2F1EC3443408FD068C2B7BC664F1D71FE8032C2B40FCE9DC0BA8175AD65608C8BBDAE3F97B73D4DA8A3C8BDE5B09CA5628885735C2A7517E7FFD4DEC916FA3F257DF302EAE37B87A5B90CCBC0358169BB7A32CF3A2FED5B728AA9B8BA6E21ABD09B34AAACD1DFFC7423E733B6E896EFEC9ABC1D7818C34F482A690B2737F379C3BF29C95B6AD5791FD2327011D6F5A921413745E6E956E83A7F2B5BCF1F092A3B8FDAD558A51156C0B44756A42E139F09BD2400196DF1563070D62FD48B5C2A1258BB3A961AB0E8101DB32D23816477D2D6AD9802F6467711103B87FE15770992C4B3F26CFAFB1E376BC75989E540DD8C6F2FFB36BAE1AE820C18FF630007EC58E42CE78948BFFFDAA34CC37F81DB4B7D0DA0AD8523AC923634348A506049208A2799DA1A27DEBC6CEFF01023010F4C1C15C1A0DC9F66C4F6040ACC6C775FABB537D6690B069A136E1E7290CD5E8FB68FA4148A19F8CE4EF350E98AB0B8781207BF8FC3D05F6DC647E9CE0671927BC6D3E55A77A875823C0922AE9AC3F7DC85CBE102290DE8DE8B84912CA82A5F022345B8A86038F83ACC21594F4E25936308779A22D6E42D7D1C07DEFDC3A536FBB2127D2B05ABDC37B0CFCDE896E9797562DBF6A4FD3A870CD2876C8C3AB4F5B550A0AF0B58354C98B8D9376B4F9850B80B1678947AD09B053AD33C3ED9DD7C94D302BB05786624FC77F5B9EAD5F223B7954FB32F5E0EF9786655718978799C3259A2E2DD6955297C1B0516F3361E76A88670D567D00BE4A0F2C93CA28E2F8B0FC6970DE72CEB1058CBBDCD47AFDA3C905C5AE9493C982542DAEB5BA431EE67BE071AB6B4AAFC040886BC889A14F0078225B7132A71B3B63EFBE466F7AC7DF81DF2031AF5FDAE9BAD4E31539F070295AB77849DB16BEE47A1FC409EAC6347AEEEF16D5150B266C63D8AC53B21D53BBCC70C0AE204CB4BDA03290152A40C7C9F16D0BBEAE18321DE0B0F18202C4A54576776797D7E8094979BA8C9CDD7E7E8F6FAFB040D394D5185919AA9B1B9F0F11C34354C6169A8D90F27294B4D5D707D8397A1E90000000000000000000000000000000000000000001A272F3B", false, }, } func TestVerify44(t *testing.T) { for _, c := range sigVer44InternalProjectionCases { //sk, _ := hex.DecodeString(c.sk) pk, _ := hex.DecodeString(c.pk) sig, _ := hex.DecodeString(c.sig) msg, _ := hex.DecodeString(c.message) ctx, _ := hex.DecodeString(c.context) pub, err := NewPublicKey44(pk) if err != nil { t.Fatalf("NewPublicKey44 failed: %v", err) } if pub.Verify(sig, msg, ctx) != c.passed { t.Errorf("Verify failed") } } }