2025-05-07 10:05:13 +08:00
|
|
|
// 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"
|
2025-05-07 15:08:36 +08:00
|
|
|
"encoding/asn1"
|
2025-05-07 10:05:13 +08:00
|
|
|
"encoding/hex"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
// https://github.com/usnistgov/ACVP-Server/blob/master/gen-val/json-files/ML-DSA-keyGen-FIPS204/internalProjection.json
|
|
|
|
var kenGen87InternalProjectionCases = []struct {
|
|
|
|
seed string
|
|
|
|
pk string
|
|
|
|
sk string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
"631AFC2A36A57E1D090DADC2791D486D72C69A9AABF97990C573214846FE5B64",
|
|
|
|
"573449AE1772430DB958DD78747F0AEFC03F6DDEDCE592D5F4B517B38BCFCB90E6C1DF44CE2CE4D3C6A5682D057DBDCFCED3EA58EA125437F6B896A473CE4880FFBB97C2C0750D41D1B7C00E2106137DAE49609DD630A23D5D498D546625F80E29A6B18B01DE399FAFC911EEAC4A97761EC0197359A1E4B3930DB17A6144BD7B2B3C93DD1F21A0562CE6C6D1128F6589498E6133F98164D544C888A1DA5A5E266E7D1864FAB25708CE6B607C11D52B0F582F6368BFD733259275B099BCB500FA62B5E366CE2093E89CD3EFFE8DD3CF2CD01AC8176BA2352333FBE044CF5FE09553A318F05F055B83C7239DAF268C27FC85F6A41EB580570BA6C598A64C3F0956AC91EE58814E3EE09F69718CAECFE8C0BFA6CDECE733B656D5EED9F39FD7AB9F0790964D7FC0E6FBF2A9781539875179ADA3A8771288C957D478AA47E800768743B2CEE8BD228DAB02E049EC6432B9A2D21AB77FA313213EBD9C59E8591A480E7EB51B2237EB717F7B1DE684E6FBB8AD78AF5F032D752CC28B4B03A537156CAD9D073B4F50AD8C869DB0BADC7DBAFDEC5D92EBFB00E2BA9C85327988D09CA90C2FDBB219E5A75F8578D7D4A2AD53A0E04B7D904F4C6939AA16435D14D61396D47CDB5F278FB87839B1EC857C9D818B917ACE3D3450BEE9D0E51DEBDC64DE38DE70429BF7DFC0880817BA202840A3CB838D45373F553C5CD30CD136C2D3F3837FF9114022A2DA73048CA53799594F353CE5320F2E921B927627D7F6741BC95B03657753B64A9513328FE949CF19A0986A89BBEEF409E9ACDB73DE81FEA6482D31C05EEDE5011463F48B177534E035089FC98AFB928989250C5521BD9BD877EE80F1E8A70776F951DDD29ED96851F14F873A54619958DCC35742F8BC27DA8FCE7F2BA4FCF2C1B7BDE01DAAFDE20B91C9C255D2AFDC5D4E692CA92549C597E76D4407B2A02BCC9683F7E0A3EDECBDFE4AA400CDAA92FCB10937AC4441116E67D0C7D734BACCED4DF8F499935D84BD57F940FBE69229B0E169B50E30B40792645AD9A1A7B0E32AE4D295C7C6037E9ABCD0D34942EE116BE75ACA4D1E34AC92896F3F34BD9E7400787EAE0DA690B670E05AA33568CD9C348083FFFEBA872D855028E20E2B0877DF4C8311B1667F340E67580A680489D4A064D818D386F113BF515F0A9C953D3708D90BD35930FC6D869FFBC43CC0F2EF8ED4EFFBA778DB0E926060CBB23ED4A37A1A253065A2DC3D06EA53AE2AB42288C272ABED849419CF1845DC3A5410DA5F624E722976610E3F8F483920C46A41F1FE6483A6EA280C7CFBE41ACF1612039CF148EFC821C43D0D34753B8B5EC50FDD184B07C4BC9F49D1FAC197855558D345172AF54C382D219F368E46EBFA8E3AB18162E708F186635EC445BBCF1F4F6C83EF6511F940BC2150651C5FA95AC1F5DA4AB96D331001BD9E0A1F41D47916A7E206AE8C140650DA2A91BB7043EDF2942923946352AF35DD7267550F4CC78EB6EBFD79DA1426326ABC102557DBC40C004BD8EEDEB543FA9783E0204868166331859AA9508C1F4E83FAE9D7E02B305AC9C529217DE124E59CF9D007E5A459A17A6F1E19B215560D49B26A171A2EC082C220BF407BDB75CA962321B7865D73E8EA7070B73F93ED69A14D3CF35B111510EF6098A08A9745EA7980D99A44B4CBE10B126CA5C61F1CD0B4DD2CD3D51CB72A9CC34BC61D318E3CCC7D1C04511DFE865C590CD952E07D26BD9162795AB5D5D44F59A388F9CF71ABA85AC24CB6EBE570BD7DEE2F1621DC509C4A269E6B4A9E66068D45E95A7EF9A394CCEE13ACF893A5ADCF8112DA077E3DEADABC6B8ACFBF598DB0496D2A3D6C58723AEA49B8267D1656D94437A0830E22E509B8159B1116C5ADE2D1EB2601CB1399B3C6AE97A15F932F7538A74E0050ECC615B0F4BABB82F5834AE643A5F4834679C65E0C9674EE568553625EC79BCED33065C11D33D34928A604C061677D07BBF68457D07892C46C885AB7CCD2E52B8C5189C73F5567D2126A1B910EC93B4F1599CA1A4ADAE3C7846738106E2BBEE5FA94FF46DE342F8F029B4EFFD4065D522DCC2CF6205C053B33BD6F4F9A7864FB7FDF5284335F5E4299DFB181F9E572575F459BD1B28FE4E355580DD8D555A4511C5C35F96025BC935195EC7F6A5E0339F82B325098A244B93FDE10CCC78A6DD1023416715081941999D613A5C9F9297CE8CC9ABBFA2DF69F353AD3E43BA5241877BE25CD32824A121C504E8607C7897E5CCCA0D9AEFE682729CF4CAA7907869CBAF240CBE28B3895608AF01776B6DF1C3FA28FDC54F8E0E631766F6A13274FCF167EA1A50811BB1485D8D0FD7316EC2A02D525CA6CB93889439B9A19B977B310054A872E0AE6ED0C4557A4BA2DAFB6D68CC8057A447C38F88ECCC53B81DAE5E3D916242336AF7BD3FF7450CA3D1937E1E7D2247467EBD530CC424FFDBA445693781495BCD8994750542B940E3F2BFEFBD3E5FD634BE14F9017861384BD96B9D0F9BAAC99F6A611FB35167AE4F64B4E4C133F02AF3A121023D6305A95475A04F102B057EBD7ADDCF8D06D0AFC452AF20D808533F41AE4BB0F05FF7D7132972238F071BB69F6E6AF2C9935B88FEDDE5D53D7C74D7BC17B756F65964F647ECB4A3BC7E8BBDB60B12789E93847E54D433170E2CCA3251946A570A62CD0358E53EF51DB256E1E2C997E0CD67B5EB68A1B6285CC1E23388D62C67D4149B5C1AD485F4CB0DF4704A65A04E2B2F6CD494013CD27F0AAD410A0211D465C22392F39C4FD38B620B4B40FF23234084AFB9A54F85097A51E447336A57A29F216D15D61F34B7EC14108949CDE4249E3C0C39DE8A2C64841F8C450A9133A7AC73FC72C7863D25186699C1AB63103848722C258200398EAE468522C3B
|
|
|
|
"573449AE1772430DB958DD78747F0AEFC03F6DDEDCE592D5F4B517B38BCFCB90DDFA07172427FFD257AD7EB9DB575368266E6E511EF45AFC232549F76D699E8CDA8503613B6F964F264E5F27BFC0ECDE340E0910D4F9130E4A86E7D1E0C5EE04141781DD4E030B91A9775DB1007EC1DC68A1DD7F57DF26D14D2A22FD17F8E182D0402618C0314820411C05265914248C422AC8182C1BA1315B144E082042182850A3045250C811122591C10402132810D2422E244065E13684844064D4082AC03665881008CB444603244DC4A20DA21250A4C6919C446292C684844085594049E3960809106023B98D92A400634205993210998248821024CC3001DA242E1B40099C3402C3804014871162C04C20B589D8B684DA002601277203B20D23C361CA281223B84C18918D23B24463C22418498521B985513821238905C2186501490E04C10024028A2496309CC0209A326043286961146CC016669C1000E014420BA5695BB62C18264442284DC04424DA22114B245009C86983484002B67110838408B36841866523438C484280033750DB364189960892B86C1A138A09383019324A4B084920C70C0B4384008465E30849519011039140DC4611D434411A164613436260944DD4866D52888C231664DC82450C488893B620C31204CA3684593626612229E1028EC8B02D51144C1CA609413829D4068983C8809C82844AA04D0CB288A2B245000405C2324689C84510107010360CD4868D0102308B220C90822110C2501C112EC31611821649431291D08241604260189971224325A1948118C101A2800D5208915132640886110B02925B14884380806124525204000A2185D444060C90480B132614B16813998C02C40110C1684A02910A036C00458914C74D80A82008802922282A0480049AB00181124020296E93B0291B916023C4849A8064C01462D4046020472D98C240DBB808A324110A16500B90518498852118081C1349E3982940286CDA102808957011C124001231A4B885C1480E02B36852064151346E149890820429001505DAB470A428284934708A2201A3922501253000070582366E814260224512C02809DA1008D0408164B690D312100004014CC848DB8400621001DCC850D424691AC2290C473144180EE2B620A2920D10A501000644C302484CA851C302421CA78903488ADB2642583425C3460AC8084CC9804D9192800425851228024C4420D0224424824CC0C4901C246141A64089944549020E64284E20B044DB2232D31211CAA450833488A4407251A88C5886110C484AA38404A21862E3369299124680249144C24501426D64220284186A231826E2024913001183324D2447422489008B42605A082E02B0291C490248C28D524851183221CA926190A66D09096148B42C01406E84089188024019830904158EDA346262A84802469010480401A365C94288221010D0422E84C868643429DAC68160B24588928D2443004C108DD1229249426010A58942046C91A2811A8110DA464E2208450C8144D84469C8A831C88265641832C3C64CE1C208208465DA006504B50C02952C5026891B4151229825E3384AA002261A3651A0443043922051A62404115002B984C8126A1C35481B308003B085E4B4245326300C14809392481AC7098198114936041BA321C8A89008122189C8702380210C132849006182B02CC8129263A07021154E942244E41066044132202602C1A24812991060A444A148310A358E510291584648492685E31811844606643042624225202444C9042011910DDB164A014520230500C2C26D54444000222422404843387260186862B23112882C80B48D214344913692519824C496681012519C484ED3822810386A19A10181C2859CA2515B202008306A0B009293028601308C092846DBB88000212CC9B2291CC2480C26919B0066E22422029925232606E1B00D50200511074218B06154C04880C44090386C94C4300490095438822222864B323083A069DC924D124744CC444662924DA2B64092208C08C8090A060DC3B0701C032903972921076553924C12368481B80D19288204330CCC282D081260013628DA246AE4426914011101419041440C62062C244301D406461835201C00898C3808C2280D08330D09326254486580C0894B488C02B17102924DE42210C9B25119130CC0A48D01A445A1C8089A468A08156EE6F449D96577799FC7D8640359E8D7547D5A3B37DA3D4E9463C0C223B6976DDA071949DBE51DB7FCD7BB6EC01A6527B8BE1BC183DB42207990A0BA34363D2BD6AEFB461628799FA8BFB6DE0D69E47FD3F66D6FC32EEF091BC8655C788D0BBCD73EA7E71E86C2F15C00A97BC3457276B28A838470C6774993C83F431261778FFBA1247630C41F6AB91D6D14A76389E585E1740C59236D6143419E39232837F0D6ED87E6240B5860022925EE5CFE3EB492510F9350141062033AE96976B0A56ED11DC9822D57ED974D568C30320A5E87BAA6B18990B352E0E5821F71D9B8F9490A607D23E6AA5A3657E84679F13615A66A7E90B93DE823B59457E78880EDAB66267771334CCF1E7E3EA4560E59C0E8A4CA2C02EA35347FE60A7F33BA343CEDB2126C4948CC28DEAE5D76F5B83E5E662D32E8D112A0C5518D91A7CD99463F6B6CC334DF61E2A8436624EB5E41750D7CA3A494C303D50BAD156542BC726628982A98FC9112D7D3804889A1EC596E273BD0892307B601E1DD08EFE80446FA6DA1D50D730B1BAA83639CC6AC824C497EABEB528AAB329C1439EDF90F24D66C6D38FBB16A4C5FDAF767E68D7A823F82BBBC85356F2D1B26D4C80F738AB8620D5DDA3333A09E018143475549E2C05D96B535591F9B2ECB41E33EEDF3FE74AFCA455B
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"939B3D7BCA29F54EB75901AFE54794BACDCCA65BEA120AD522BD95C38466BB84",
|
|
|
|
"DDD25B6D3E014E15AEEB4487DED7CFFE55E5023580D9C15890AE93F1B5D159487FAB0AC1D327943DA743DE9AB0EDE30CBAA9D4FD208CA15518F883DFA8A0757A31CEF32B78A813F4372FF7DA4FC8BA053A7258D22453B4B4E2BF29D938468E6B4B395125DD210D82784992C317E0ED929BF9FE6D17B139B17A158B57FF011B87431034A6E2B97C71FF40FE2BC7020BF95175F668A5784E2D8C478628CC4A891496D6D9F89BF5AA7CDA4262D258EE67EEB8810DE645B9CA6DC1F1A07D5D02A242BAB61D37EACBA544CE6534E04645FE5BF0E469062E558181D63AEE251649E9720ACB9E3F0F91727F891E46EF8995585AC4951CB30072F882A69C1987CD8CC91C9CB6A513FB334F13CC2731CEBA8A1487E0EA943D0682298EC862F09A1FF36F9070085639D25821FCD0DC4FF95AC085544AFC41BB1B02064A59B1177B2F1DACC371CB8C45B911D7DBD3606BB61F0997A8ABCFCA925803F53F043AB2AD5CDE2B6A8806B654B01AB354C99569C2AAB2B74DAAE44A569407F584A117DD713C7D3DC9463A7D8D5AE4473F31C60A6480C220AF06B29A4C2B30ABC27494AD0AC91ED2942367D14DF3C2CF8EC02DBDA7535A264EE4C793E806F3CA0C1974A75CC8F461E0CAE7163257B5D02BE9BF8CA45D6169D5F24763117E3BAA6856663ABAF6E89CC8DA0CA7887E09BB02B8B83E8865C43DE4BBB284AEDA68AA90EFB945A541CB7DDFD74DFE703B3D9C4501EDEF1F6C3943BFDB747826211F4B0F1FDDA3B0F497894E03D05DB1041636C91ED549DFD26E7BBFB5F45D4D120B8BDF71852DEDE1FAFC782B5EDA369F430365BD89372AFD036F8B7C6CFF514719567B7447652DFB518C6AEA93E504E203BD8FDA062403238A3A71DFA919EE7179B0FE4B4989E295ED608F6FA4AE7A37B0CD2B667564AD25FCB1A6D712C38F1174C6B66A6DC224EE85D40AC3D3AF671B97E84A5C753ECEDE167DFC66D0623FE395B762C2AA705A67407E02E0FAD1960DF87176CFA33657847941E4105C8EBBB143CC19E334F7D0443C73E33B7FE8DA907E607158814CBBB263AA51670C764E91756E6C36F30E03E7445E3370F0E457E13FC1078E7BD0967E35D5360C6E3DFBAB6C03B399B8C81817B6196ED4BF67BE9DA17E5CA3FC9215ADD3C4E7AEABE2157B4012E8A794A28D68DA52C199BEB4F98FB1E540516E3DF5D38B7F5413C33DF877776A11E51E0B61C15E5665FBC0A9DA26FBB2C83A3702FB5AF5C183848ABDAEDB05B4B313FE313511178E3125304DC8906A07241B3945743D04DD3B57BCB226582C5FFC416D61887D13506CFC2C33BA38A340F91A5AEBD76B95CFB08827FB8D8F15A366F6A7CD772D6BD08F3247B3E066D1D5340757D108749AB69FD9841CF18DF789B19B9F759C1C1195F7B41608B8BA2B7DC8C18567216E61D54472DDFBF2B371D2322B2F38EDCE3D09A49F8A985560D64A72EA19F2E29D7CFBE5AF09A879BD5C341C40CFD36C8AE03D3C0C49A6C47D375A81421FE60F6BD34947E6FE6D7E02D6A3499507BE6995EF197C26E224E6EF319B0C1330A8CBFF9B92D8456C1E089EA30AFDFB0519F0E17721A57FF51E87C7332FA2D13CA8A6BD3E136CA001E90C3BDB30FD78E58A01D6732F0DFCBACB79BF9D2CBE9244C248A3B9FED1B950079BAA03EF78FD7C0EDB8D36118245AB4C4C901F2E39D789F19B719F5861FDA272179B3763F113A76FDC92A871D4D73E013E5D224F1432F3AB1D0D255EF49C65CAA67E1DFBA90F7740114B8E48F6F3FB7A94CD4B6E2FE7A506DBC1CBE4DFDC926D4D6EC4E37B9CCAFEAD9B5863BBF75140482810128989F2D529F1EA8A041F89E11B9841C2D60960ABA2580F78F4FC24B69CEB2DF48061A7FC7ED1F517091E49BE04DEE6E86B7C89105C0B31810F65E7ACED3B8BBFF7E4401653ACF870840040F5DDACDD6B81207C962AD84416A74ECF1691CF119255D3E520766A8C6D0CE3CEBAFB36029829583DC79367D3618E350402F69FCFFBEDDB421B80DC1D06186FC76FD9391E93C887E13A7805E7CA626229800A23B6F0ED217836BC8AC9BA948094724680317E7D493D666F927AC7D7F408B59B904D4590985CEB2867B5E54DAB3B10D3EF59A2979255A8D6BD93354755F84FA60C1C2249B9D24734376E86EBBE98BCB3AF8D339C13F731B27199691B6E3ED547BE261856AC3EF9886FED5D677D10382242D72F071767FCE2818A28AAD4A756F0B478B1EF68DAC03539E006930E9D22F2D4E1E7CDEB98C625EFBB3B699F1279AD69FE10A1F06AE2261FC746D96859A98945D0F2F6A94B2901F185B52DB74FC930BF0C127AEDDA5CB4977B485880BA8FDC39811CFD9C05F0F71924B847CD9C5EFCD9B5E7EB0E6943757938B18A34E7B366C612C148BF8FA860A3C717260C1010BC7429392F478609002E3151117E04FF6E0446932967DC689C08141A1124543E81B84D509D925EB5E8E4A86EB454B6020726F63E1CDABA0EFAC44AB1632ADE1E736F94BA21C29B6DFF4DAD8024E88E427A59C31521B0F89E4046AF4AAA45E34A67C6B4F2B505E26A47F359C72CCCB9B05B2E646D5AB827DD94FE5811EA4481A666F5A9B34876AF77D20F4EB72DD047795459C02ACA2DA6BC175823A9D6B7CA59746885C8540ADF22CD07BD74AC8173A91BBF6AF76748A528935053CD666DF09E8CE45199FD4C5C3BFA1F4D33B8960B56E63AFD6C8F9D3C38F51DFAEA7A622810DA6AAD4841BE78AAB37C5FB7B2657A9F731F2F1C1ECCCF5F51A4E69D9F072F0768830ADD10AD44EC49DF9DEB26E318D30D860E8CC9ED4A71FA84294215BE876C4C8EB2D267F49E7B1D06972E6EFE35BCA94DD87453B79A36A5188C3D81552F204FEC0D5AB76E502E2099648453C21C1B24175155B42AFB18A8534D
|
|
|
|
"DDD25B6D3E014E15AEEB4487DED7CFFE55E5023580D9C15890AE93F1B5D15948A4B52F6243431B9AEA53A6A5A06ED4825FB748DF9902751AB704226057314ACD4B3965425182EC8BD79DEC122960FE6E4CB2B61FFB63EBFD26787D5B24D8AC31A42465BF8900537ACFCC1299198A2CC93ED1CDCE32A3F3B6D99F0CD703BF663D0C9428C8C2889A062181A0001AB36193344ACC9825DBB6312023065A4682938064804609A1C830C4142C52440202394021C481044330DBB028A244081BC56413001258000520B64D0C344940C20963C04154286D1B099293B0918A18512327668080910840861CB72083026903220E2128281BA8205C002E842200C90606A2A00C04084E089088E42049D224081A020600395043080DD9328012C13104080901C4205B4480DCC48998326012454D1C404E13104E9848215C160480182104A7800014720911909BB84DC0245024478698086A0B0822D8B48C0A8865411660D198701CA77159846020244E88206E02A92009A6619AA4095C3685418621039664C0A45059C20921B68110343160865083324D10B7101B2410D4A2901CA729E4940C20264C0CC29064382CE3C84CE2A80C10A564DA32691C152C88202158400208B70C93200D6100524404224C4401A1120E549004C138026030288A4642832889821642192391D840848846011BC10D24B641D2480E01470503449004090DD8A201190161CA988C18022C5A142D0345428C3408598225D812492297315A04840A9929D09881C19648D422312200801BA730000910CA0205E3808823454A2324450C87919802298BB68C84180DC1A42D9B3462D046318A246E22321212216A08B56894826919146E22150593B2711AA04912A461611645044082500489624671614805A4484951886022224494A411D8946463A0098BB2101A946D04028940200611173062342A0A0420DB96705A1606C898508022482418304C94915A8830A0406CE4286A88B8500C3492DA902114A3655138815CC690C08264C3065008A989884086189328131511991430240781E1380D8B487110250C48400E618891530452E33260001771010828C1466A5A440C03160888824D10370403476942460D11832CC1342443046123430022168AE24688D24025224789A3864C50801051348411B86C80923150826C0207121C0800D2360623802088C86D23B24C61802D58384E24282E203244E3B4881B084812372E1B294118130A4890900446708186480436280807020CB940899271D8948022482ACB3001520470483646C332804BC821004942E1843108B820204564DA36400091411801682404519C905012472444102858264E5016090149055A9600C9044522C70489206A89866C90040AD90625081824404284041331928889D3B62C100121CC38320AB64060106580961009C7619C029091140918B04558266048085011316E91C6610A239108816C91388E88200950166E20A90553904DE0400640022208B1608A02660CB980E0B211CA404D2340320B1032E0188CD0B02D89026A12422A4A804D5808864CC60912800940220040386C0B8561C9820DD298649490650817208C304054904D14453109C08C0B14082118258B186482388CCC84698B286CC9B229DB062C00358D20A54D62B661C844851C001009A1706112255A362481A224D43048C44610C1824C203404A094285A34485496005CA4046414028A444802850C8404859A366910120183328E00092A49B848CCC2708B3622891882140126C9300E99A09113C92CD2968C998229C9C84819490A09C96C0821819CC230D30484E38001220788210932C8B224CC4272191366031730214266C2B68088B665E2322CCC288820C7718A20488B486183A430C4465021232C9A866D1C0440CC4612049470CA321084B0400498290A26882232524C82509A240024390ED1003102B64D111892891681623862C2383220068222396E4B206820082149A20119096D4CB03108168521257201C868E4946100497102464D21974511190921A49100177261B688194208D02641C8168103006053380D139105DB421242004D48183201B469C1208D0C88800407511B436D48A46994980450806462B8648482854A161008C19121A58181280A89A82001478C8CB88043C04C5CC04C148269E0446252824C60420E4C065089B68193102423289241A801EBD5A0D21FAEB523C591CB2B53D12AAED3FD9902A3FECBB384AEC22F1972BD5F4885ED6965DDC7D941E8446B3AF5547BAF921542F6A203FA35436C105C3A09E79D26086F1BD245C223604E0FFF7AB2AD80896DF83D82D6D76F015A99484E4529FD20574466DC7B2F494F9E7A9FC2700CCC93D92114002C1616D4B4EA9D66C3137D282AF2DC45A10D6738382CBEB73541BDEA426166E5F0BE7A0BC002EE765489CB5307EC18239B57FE08E80CA7270046B54EFAF6E68088C8FBA704454D7C15C404C4F634BE4FE7501B5326170CFF18DDE24F176A19AAE45AAA6589EA3DB2D325C2A34B9342D8FE1A4850F8A05438663B529A5F1F7DC677823942CE650A7EBA7AE73450D6BC6ECF66F0B0899FA072AE5AE2A0C108602CEF960DEE733428776D1791A690D8D85589A719886B25BE9FB5754CD8FAB4D3EEDEE76AFB17252F25C7B18C8E5C568388A628A1ABB2C96501696EAD6A5D3D303679BF5F7D7B404E6565E403C2C7C89192457B390C79183EFE5D8C4E7D3CBE263E177558C749B975E95507816B66EAC3EA1C21F54A7063AAAA13F0D53C55251BD38638597CD10E502C78835D0E3E312208FBD9C41FB363B0628433750C8183CCFF5A71ED1572E043A2E6438648A5C78A3408A2BD89704AD8B56806C75D1734EF611A688D5E8064F542
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"157E86FE1BDF56B2E4FA121D625010DFBF5C79DA3C507645CFF5063D640A2ED4",
|
|
|
|
"FEBE7309B3614B95704D6A71976E905BDAF0EF54D3AFBED69C3D065881C965CBE55D4872075EFB5C8C0B7C4BEA97E11BE22EEB8A00F983EDB6EF873FCCABBDF1C75A33505C7FD5C0A1AD886242D128C62C02106D9E35D31FD624A95DE16420FE35A4C9D40A8025E860C124351A819D5E261635FFC202F0B0A0A8E934FC42A110E6C7FA40D78879B8025F70C959E5DD624E87381371DF4CB1713BDB25EF86CBE92E83458FEAB7A7003D5791AE520A260520687627402B7A5E4A62439C74E19D275F22D1505AB72B7E4988299A6E2A58620BADED5AE5174E3D8A8164F860EBB519EA144D30B07B18C6AA95BD797665F53393E53D86124100353BF1A24C53315991805641093ACCDC19E0FCC3685D4B609EB6067B9025A133629935220B268FE46CA3C6B5468C332368BE4C569DF0ABFE7DD14A15BEEE2DA7093EF19D49D429657D7D7A0271A15C210770FC6B6B105637D16F977BADD7228FFFA56A6A319252D19389642F0F40035E1C4F494351334527F98A930B054E88B5A9AD74DE26EB39C25C1D2D351A409A09AB29E70E080852542A18302711B406820B7F5951D62019EAB7B14F4CA7112E019AE67FB22ADCA351F7729D503495FB054230ED03355C1B332AA51553137996CF1CC746F79EEC29A06EE9AB54F96D746E5BA8CF25877C4BB3B31069AED510E5ED7E72FE337610D7F363F5A21F3E92544B6705F203B3C1A4A62504D33C967BF0BD7294B7452F7C19A742BF92322AC46AA180B10AD9E9DE6015B1980079B39D8228599A8641179D8301E0E4936A6A397D554D0DD5BA6C4F392C815E552C3F21D357B595B5A894C2DF627E5426EFA4019AB1BC40E41C1516FA366365F3E232E50B292686CB809E352A35E6EF3A9707010A2EB77DECA0838218C62676D177C6A6333A06AE7C0BA4B0EAB72B41B78BFE0AFD305D07CDA997956BE70DD03DB40FCFF3B64FAEE9651AB8FC0705F582598AE2E8908FF99F42EFA60AC303402E143E828CB2AF892E6824A585B04CF9BFACEE36381C6927F44764A2605716AA55A816A335EF3B25BBF968D4B89B54B2601A43562EF07FCB750EE14E7C1E5F92BEFA1AB977DFF2747891409C985A50E6B213CCB5B662802B68FA9539CDA9EA58B6BB5C7F9ADB0676DCF72342625DB8395BF0E00181E91AF778D2D0FBAC191BAF923FC08D216E758344AB108D01DBF362EDBB394D0FCB27AC3373FC98A34E8C4F48879610779D532E35711CC495BF033F9EC252D483424659218AC6C6B1781A54E84E0BBEF57A5C588814E28EB3C0939687F1F7A37D60CD0BB2EF322C7E68EC688FBA21BE2FFF38B6FAF0A7F40C216C12AF7181C4F05A9C1268F7B94B983C6AB5D48FF63E397E19B5D7CC58BEB96725098E7611ACC9D0F7FDB73621441244E14ECD9E59A066B94F7C67DF8A4E2895D84C58BF0CEAE57E0403AB7DC8E436F27F10CF212B204BAB9A8613994E8A2C15D0E73F784D5CE7F339164636440044730E97D19BA65B5C56477DFF5250C2C876EE5B7D0CF2FF49D1BF2BFBEEDDAEA8B73314418E448BB50C706EF8CA1327B85B7FF970CCC9F26830320A440D036F0CB57BB88E15FA8C5B023928CD74980B9842090FCCCCD0B8E58DD639E49D6537637E279CAECAA6A249AFE55920DE4B98D7D3EC1865DC55200FBF0F6F102278BBCB9A002C5524F1258BDEA7D151159F42BBADBC8CD054BB060BC7A69D94A4312AA0BE448F40718B1DAAF5581CE6F8D093A8DA7B97914DAA84047315F457AC3FD00DA30169CF18AA3265F70FC865CA27F8CE53DC4305E7228D3AF09CFF9EC7B82BABDCA8DD0C158AB8C5854C6E5856E90C1C350FDDE0A3F8DA737B6F83BE42DD641C8A96850471651DFD127A30EF7AC3DB8DD6DF8B57F07C398D8D81B4F561B4432F01722F2A1F28C0BE030817A00ADC18FCACF582CB917AEF712C1E1DEBDA23E6DEC1A1F48011D3B3679F62A7515CDD5D491626B69DFC5707B1C5CFCF6077C282299AA73454A966E9CD13DE27E69C123B9C8E6EC9E8FF1FDF776E108FF7D2B279D4AC55AAD6D43BA07F74378E4DC68CCE2136786F513262B6D7B126DE63AFAB628860FE540F5A018369323B7F52D7A818796774B7DB6C143E1E6D6477797CA138D2144092D6EA2195EDA0DB6AD74E8C586DCEE121740FA09535F0C921176E037B2586385304059A0647A4361F8DD602502085957191CB8EC7F498B688ACCC610F97D44C9CEC581AC5025CDB54237778FE7BB593AFE3AC0BFCD4C7C98717BAE4CB82FB77D1537610D792A4898ADA6BB16EEECFB1858E6C947D72A335ABF7D7B647D40A67E30C1F27D09C82D2CEB831BE49568D398A36202CE0B4AB434BCED5FA624F49808B074302282C196FAE62F106919D32F3691FC6C0E52A83E156F70F1C0EEBBFD716B3E6E1D93DD1D8EE67895A60410D5B68BAB12D16264BC12BE1212041BCF9E887C6FE7E9B80BE9BB04FE603662767899FF2CC0B59F35B902857369E2D8DA06A5ADC438C27CF424F1E3EE80E931E8C4610B5CC75CDA3927F11BE8DD184506B00871719F94EF3D0E8942CD919DCF56E11A319CCA114042787236F97C2E7BE6D677E680E2C157F3EDCAD9BF9A93583C3BA2C2B05306C58E05F59591DA56095A2324B72BD411F8B761106922478F0BACCD183DF366F795972387BAD2573E5284182111BC867CA9DCD1A42D6A7AA4B53C9DDF245DA5259D4E4E5F5418B031E39E78C1C4838B58412FA5F4C72A31E2B251FB89DB3EB8DA5D80FC72B8A793203AA7906CB1A873564FDBB53DA4FDB0B0091669514B894FE17571F5055B3CE1FC1CDEF6678239D4D5B52556A6BE820969B0D2019875CF2576586C5175C0A3A0F968EAD46C784DF38B785C4E116DEF24E28FC5D58CD7569943484F55649B4B4C717E7
|
|
|
|
"FEBE7309B3614B95704D6A71976E905BDAF0EF54D3AFBED69C3D065881C965CBBBEC7A28693589047CCDF479CBED3E6BF9984722D85C6776EB9A0AF22F5A5110C793F0DC8329D7DA58B34FE538B468708C30CE391E69E7C4328BD929E556BD521737705AD426C57496F171A30D2860CB04349409494DAE83F4368475FEFE817612364551804D9CA42DCA08882322244C200D19914920C77009900801190CD98249020771E400861B448C89B86124070108124484884CD34226D8300988124CDB8888039629C8267212102122422CC3486964344052148622058A12B900224501C1A64953184653A40918C340D11248130005DC366998988461906CE1864909B391D2B610D3940D1CC785200702A3464860B88499046C59C861932228E1A4608890884108499B980190324000422089140E1298042441728094640292511A2945CC488C14122C03896508094A5022445396200391455124910010644AA2259906265A942C64A08DE3C485C2062D8B88011823261A078A93B44CCB3689CC262818368C5CC6410C449218072652B64161B24C11105288B82D01A98CC12810144289A0122C1A496161A6688A04719324725B902413802112256200072503402560304A91C430C006519390049210525B302C1A8760D300261C2086A282319CB6848A02468B466CE4386DA3026CDC229093164961282900C465E398290307721B356948480C4A30040100310BB46108A90112286C04906501996CE3264D91A46522222852366C88C0286330310829069C48860B266D82C8499C806954A65120333289C401E3B0241801494A161021B389D406652117026228248C26221CB6248C128EE228604B322641A02C18246D0CA761CB08069A848000066A4A422601C92163360A1241861204280C07260C3645120042D4B2288AC07198104A1A95481825848B340E11112642B4804CB6456492485944312025651404860C13445410908C388612007114436512366093486DD292890C232210B191A49610129671CA406903C429C3822003246E1B23404030664B3451498464E4903124300158266E81C824D9863041400000227101054A890851E21660081711C8A005E48249882801DCA081D2A231CA284190A881E2804D1B3469508629E0063002808921134E84C049DA420253420421482248A44508B10010148C424022A2B26891B021832292912045219308D408724BB84D21142C24895093040C44B851211751C1B44458B22C9B000DDB0450DC066E89C264131770091481E4346A04C709210709DAC26410258A94248840045024830CD4480961060E41046622294A58300C5AC00858A2911C0106D1986023B45010496A1C1686D190310B434A1446464840041AA9898A262D83945024047009378C19042A12B749622448410680993666E3106A0CA86D01A945144971DA06464A8041C81212224752804028121326221365A3208D5C948989B428DAA86C13022664442D08388494244ACA162252308ACB224DCC1480CB983113260D08946084201192108501159220466623C14441988D811689DB402EDC944C5934621B004CC426501B07221285501C4344600044E182119816300149725A3662483426E1148A830832C0149060C410228728911045D3C2110BA5306386509096294180205CA06463A210082820A0860D2332722314681994480848869A42890A002A0B2165234106DCA22040482464065191424D613662CB920D44887058966C0AA44049248D0A1012A0A24404966C53108518044812242A9188051BC284E0380608C59114B78D5BC629C4488D119529D2362AA01845E116091A4405C8082AC0200C4CA671003164DBB60C64C04101A20922165118930454A0494A308D908605400445CAA42D882644A49050C3440A21042D1829016086011A46629B32888A8268A016681B942424032002182650C6050281441CB6215982884B26494A2624000402C226022119012236826194651A13080B8009043629CB80845B8804D32209D1169141322A1C194404411122228EA0204A50C46520918409910821C78062962564344404C44C5494651CB70894200A909444C2486C9AC040D0826D49B625DB80018012065C0831C94652C446094240610B134A0382445140421385081B246A248601238290108964E1306849846C049590139620203184C3246C14B12521C38D1A94D9EB623C8933B638ED4F0221657660CADED846957E4604475C4593E86D70DD406AB169A2838EEB0C48C5924C99ACF96A7D07E12F8CF0BBBE7148B8BE48C65901539CBA07FC3B3BDDD61C8F8FFD85CBE0F90C8C7E0D72BF7B0C8BE09B4BF74220752A629D295A5B5AAB96CCE5A5C5260018067B8E4865D5B2009BE05E76B4963D1F5DE905783A234926220A8D2E76978F5A23A78B67FDF8A3655BFA9DFA1732EA3085AD284E1B5E8A482CD63087000980C477E5EF6256D62C79AF34EDF81C30EB32CABDD37F457D46F679181A47C99E227A0FCEDAD8F2B06DBBA2261372EC327F3637CDA8EAFE16682DB03DB77C15EBC649FC7591578CAF1C235F75B991FA5619D512ABA4B3842BDAFF31445CB24BC92672846BF8044264F9F187A87873C60E6B2C2AC9C514FBC2FFE2BDF2699B6611F2C483A0261CC47DD74388D5E7D13FEFAEE6E1D33EDD3E5245BE7AA3F4C678B37F2396A43D8867C47D6D6D2E20BB673AC58BC0C7E54869B34CD8DACAB7DF5A964E75ED872CFB95A32A3FCD1CB63EA0E4D290422852AD9F82FE4B54A3FBAF1EA3C74EC6F39CC3F5D9EEF4C673950638680398C94E248EB32F6BCC5021A889D65A1643760C9664EDC6640A3D3A0A8C944820F4A430EBC1A37DEF138685E4370D87CD977CCAABAFE3FF76649E1FA3
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestKeyGen87(t *testing.T) {
|
|
|
|
for _, c := range kenGen87InternalProjectionCases {
|
|
|
|
xi, _ := hex.DecodeString(c.seed)
|
|
|
|
pk, _ := hex.DecodeString(c.pk)
|
|
|
|
sk, _ := hex.DecodeString(c.sk)
|
|
|
|
priv, err := NewKey87(xi)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("NewPrivateKey65 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 := NewPublicKey87(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.PrivateKey87.Bytes()
|
|
|
|
if !bytes.Equal(privBytes, sk) {
|
|
|
|
t.Errorf("Private key mismatch: got %x, want %x", privBytes, sk)
|
|
|
|
}
|
|
|
|
|
|
|
|
priv2, err := NewPrivateKey87(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 sigGen87InternalProjectionCases = []struct {
|
|
|
|
mu string
|
|
|
|
pk string
|
|
|
|
sk string
|
|
|
|
sig string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
"8D47E774CE2E855173438A096E8795B639A36FE254F5A66A9A46E934B48F544512347D7EE02E9439AA6406436336FA9CF7EB647760DF720AC5C8A363672FB579",
|
|
|
|
"5CE4025F56C34F2DF330A1C1177A0B03A479407E35EB8414BBCCEA7F14AABBF9D7014762AEEADB681798B2FA2D20DAD1FCF9A08CB096FB5D940758964C8945C3704D206FB5E1F1C8790B3B0A390295B9F6BE0F8F0E70331F261401EBDEF712AFD95B378A472FCEF12A37754C1D9C9F4A74259D4D81475851D0411C026DB10F3AC83BABA209DC3A5984904F9D6BD3F0CE70DFB5CB4C23BD04B13AA42DA638AA5C58546DA332DF124A09B6EDFB9113AE6D2F769BC175693FED0FEFC2EEFDBFEE1C4982CD3DB8C24270530174192017239A149EF8F1575357E0853A9E79ED6AB3BB57063B321E26EBD907FE082966FCB34A0E8B7207C00E79AEAC7A624BE5700F1663B85A4D0B6E181FFAF6130AC6542C408048B02211CE4B1004420F22261E57CB283DE41C6A634814FEF541394FDEABB4165FAD2E14AB5A68A58FD419E8FD03E4F79A670980622287A93D62A93CE101F2D72F8B39A8297A9F0D95BB1ADA298BE7E312D24103191A7EA65612718B40C58A7F963FAC4E74E9BC0359EA37A45ED45450AF6FA183BEA54E026CCDDE80E10D9AB5506AE30235FDD49F3D0A5414A6ED8405BEE74183FCF597BE3EBD976C7AFA08CE24DCA30E61EC296362EDED82EA0E831FD5FDE88A95FD4B4A93D23FF1F7AE688E31CAA0082A6FCB346CF5662F6B139F7F90B69841AE7B472473CB26986C0958D78FC345E9A0FDB88699A5E5566CAD69A9F172D37CAEAF9802C899D5E6AF8A6D283AD34EF3DE196D7CE47A38CB1278C59E822BD81B3CF68860555FD4444296CF6A1352A35950E0CF0E9B4195E5AFD482ADFAB987DF87247187C08AFC0FCDAFC370576A5F67DC45814CA69B3E469152955FADDE9BC0201EC40B2128DC56C47F767ACA1F8B051B813FDFE4247907E9C09FEC4711BC1C72953C18B00D437F61560EB9E497A9B2EF3104FEAAE039F3E23175BDAE7601BE09F47FFED56469243CECA93A2A8A17BC6D1372BE6CC299B19FFD99E63B06649A23BEB9D04DE573CFA165A480C8D5A9743628255EDF4FCF640B2751D4163E4C85F5843B86631E64C9BBA4C26E2A8AB118D4CF342B9584F30F0C11D73BE6C773C468926E1342379BC6D81448E613CB58130C15CBF83D67E26924CC43EA0E1E291203FFC6CC0AAD39BE8DFB69522F4C6679A38E9D5EAA7EB5EC5FA194A9E05EA38C1B94AA8316606233433359BC023B23ADF46371D3F6B2FB187093CBB0C53B6222B7F5432964C794602B192596FBC8E226384A019AB0466BF0FE31D14E4D56EAC6B7C41CB9CDEDE2E1FEB4E4E62064A24AB7F22BD0B156269EB4A7722E0EC9135A82D041FA6335D9DEBBA2B2F63197E6C99C8C7DB4313098C78E71B57ADBCE7395AF26F796BFD81E9516EF1F7FFF37C39ABEAD7B1DA6FC5540780B738E6CA775FE00BEFEF89D834C5D0F7B8D20F181F90B0B328AD98D0BA43D240C35894B2548EA46BEDC9DBDE5B627C6EE1E06498FCB794CC726FCD84E04341F53EEEA4B5B83491EA8B373D6A83A4C7A7B615B003A6EFE7E064622FE0D5186F6B1A8EF568781F27A4B59597BDC26A20670B4006F3100BA726C9059047191A7A528EDE4AA0EFD8AB1D13AB249A76FD889F59C0C28C55A84CBCA9F0BFB9F61E28F2956F2EC345A54F18C71284F33A38129B3C75349206C3E3CAF3A172F27D9912FBAB8749D72CFCF6687D8649A8538952514E2BCED0D84D733229615FC257C2836820EE8C6160003DDD7F7F90C2406C32975C2D5C2F6C05E6A5D44BF196A498A9901AFEA951755C724D087EDAD1783BB3223F58530186B0036E8479FA039B8DFB18AB6EA1E87D308838DD72B240E73F48987482DE9C1328F702F23370F7B131EE195406E20C648C91F7B079F8D5440C8DFE9BC7BA801D1502A72DEBAD0D3F794437B59F94A6730DEC6C35951256255BC8918496CF4A9B9E86235879ADF54868419D95372D960F17C7898CADEACDDFCFAF42908ABE52B85AD0663C84B1B05F0E06ACF659B2AB4D7B5726A9A9B9B0BC79BDA9F74FB36B06730BCFF87CDF9EE39FD772DF43A47910EF9D0792298A87A09264C3427602BE87DF951A0BC0F351CFF04332B064A93BEEC4A893FBEC9A88CB4467EF86C4FEB1F47385217E252F74C722B2946A9619FF7EA0494B133743D3F03C84D8EBA6A605E626840251767BA4AC5A9FC74F44C68CF3330A281CD14B3419DCF8A6D0F77A772C9EE2E6EE89399668F729685C2660A87C332E08649BBEEA4D5827DE4B47E02B7C5FA14F0540E30C0A8C676F407CDF76CB869A1EB76823EE97F95E816E3FE71643361D7BA72228250CEF2A9150B0D95B5D28E4ECF0ECDA21B0A5D0914CE3EC75205213D3E862966F888325E1AF758A7E4F473FD2A68A79051E609EAB48E4674F6028433C91CCBF447935B8C01D333A2320D100AA9A66F9BC7871EDC6FD69B5429FE677981D840A0FB04758D3432BB7FA90318D828A2FD06E61BCDC1B6A22BA3DF38071F98B027C1CD98270EBC443662EBEC3322DFE1BFEE8CEBD0546FB0D9E8B3C4612811684DC0D2E2F65813BA0EE4FBA5C206674AD1D2E81B96E190DE35EB08D5A802B023FC567A1400DDD123DF43D9BC38BB0F5E61E5983E9F724324B0359690B4E719163628538EA081470479DC7948B0CDB7AF7F637DFD7BDA7536D665C2BB5448D3ED21BD809DEF3FE9C3066280D3201A6E511F9D3F8234ADECCD622BF85F110A747005DA449BE42BFC319D0BA4FED9A3FDF19812F033D8D02ED19A663C369AA2E714FCF4C443EF7AC2B6B55CB5B3D881D2BB6F24D5A197FBEDCBAE3E79231597F606AB26DD31FBAA937D002461DA5E67B027247094524AF9CB78520B12FF639B7C904B742B0052D3D317C9370EA5C115C59BFB6FC1B1742DF5B75AA731B67AFB4DD5C2FD50A74045
|
|
|
|
"5CE4025F56C34F2DF330A1C1177A0B03A479407E35EB8414BBCCEA7F14AABBF95458F6184286CE18ACC5466078AA96430B30C1AAF9A3DE3E0ACB11C980F13F9992C2EBD8C5018983BECCE295601C782B25960C8A2FD31473EA5BEC0C534B96AC256D7B69BCEB68951344E9F53F0D69E373FB7D45EBD709698214F7C78FB82DE490280D4A1840C2A44993340E128170E0228A18994CC1B400D9460C82864952087001B84DE40465191544093142C2226C138721CA000E19C66918344161082014060500434804A52D9A3271D4966DCA164D8BC6295890301280640B3040C2144D88469113C8441C0382893268CB9240E480910CA684A1C868813622204340638630132992523866C8406622453184861181044581088C5AB42424008C0B40691046220A82856144321B2140A2480E08B06C04150E1AC28D0B324AC196910208055A3204014026083346A4048D89108C8C28861C8431C34846441092CC948C44C884824850E3046E1229458C184C04A38501063182146C1C47661B4140492629C238325A9620C8246CDAA625012141230260A4364AD340001A220A99A66C0B187243C491D2388102B36003304622410DC1442223A00D600289DB186994924C8206128248101A050A01190E1CB321D4B66921374D08422D1B02869C1092E022288448722032214938120C022823440481000852164410130A4AA268149391190472A4A22D8C944019896D19456A823840C9226D04C1216018046302621B272AC020820323721A3028D3C42C84B829040925111708E2A025A1108DE4468290288E0B158EC3B8119234004908700A4421CA2431E3144191487102082A0A012A48446C0927804A3649E1004EE2128C602429034366113652A4440822A0715A425292C68DC4B0451BA8710B164E52866C98484C08B761888601D40831A12269D20464989208D9B84183A60104144D892201C392651C874402350818018501974C59162D11102A518201191786D82851C442261C312D20A46C8B104584100E4946311AC36C938284A1441144B249C2464223048A5BB00D98326C0CB945A048206332849C246E1A4612C1324D14333122C02821C720A1B644E33462E3A2892303811116120AC63100A08102B18008138112B52C61A8242208414B126959842081024404014280942511B32401B61123152014C12022A620E4C09002968D1A11402432040840900112448B106A91C25049A6908322100B8924D2B0514114286006224C102CCC24210A268D42822411B965A3062A84426054042419B385D9342481462824836002A08CC4B4804C38444C462D49B649E0908DE3122C90C2014324902432691AA58D19B53012956923C70D4384700840429BC4815B28041B2781D4C280C8B82191860D12415281A671CA3280192665E0A401CA12848418010A0331D2C6115A305292168151342C14238890C68D1CA3901CA645A0380C59B42099C87149B0251AB2800C27828C4471929645D8142920C169E408301B046EE41681D4B631004650A1A648111960D2086499860818216648442E18972909916592A6101241121B282E0018524B1829DC388593B0841C07225C389090044C411828C1348692B20C8C8431DB203103970804B7614C944108450940426C841892622211D338418298886422414B1632DB006E583685D1248263106AA0042841948C23356414C281D0140D08A090D316915B24405B383021444501B691C41886DC286D5838664C124250126C0200248412290A920D0BC66143282D580450E01890411091043300414028228791C44065219925A01260C84692A2C8499AC80418184D4034700CA2452389448200628C244C82B27021390162866D52284AA3944041B24DC93064983051E3A41099128D81904C21006062028DE4280E9B840121096802A5500B0700A432442442721C8269A4388A1C9880DC02100A2971A1188550146410C86920A44992C2204C806CCC1289C11460E3288161206AC0C228A0C441A2025060488A424465D4066ED23812CC88512002605CA6691204280A83054CB6450132850C004449908D183591D4C82C81140EDA480E8B160A60026D0C382693386911A5301822080915320AB92064C42C2216501A499163107019360C08940D212905DAC29049440D24342522276952168614C34C09156CE44680228710D4A22C4AC45013A3290C07307F6CB7C2DE138E058083F3D615A678B80989E436529E8CA7A1A78A7E3DEFBAA90F48725DA94424A0AD18428DA260E8CAC1F7FF03D0F0CE065183899CE81EB7114988205F5F723D347879BB9F1E4852DC59A2049BDE75A339B11C57173BEBED1B3AE23F785A908B609F11E723960932DA04631AC64FA117137763C90EADECD2D70A9875F2589DA8CBB30F428B08D0184D2927D03C875BDB37FA117C542C30EDB2169D0AB9057EC516EFA2E6AA1A23FEFAB8048D9AE700C9C764192004B506C2CE3F0E13494B81D4347BF1F02DED333B62BC547BA902E69FFE45E7CB393281FCC2B4B269936C58367ECE80D80045DCFE28A5A9E03B6DF2AEA34406A1D13241C6EAD47D7EBBE167B0A7EBD0BCA76A297B6D4BDB59112C020ADE383CAC97CAC3F4B022E1DBEE4F31F31255FC9E211EA36C664ED2CC5BE36F30A4B094E282DDB409A3B404E4AC344C958EB31F68A0096C16332B3A302AC06198C81AD1CF8A3B70FC362317DCE2534CE67E78CB652D5216BD5E98E40DF28E347E93B05888A1DB1CE5AF0D5D75FB57050EF3E8ECA4D0C0C683BD699F3820AB5FB0B32B5FE6023318F9BBEB401D655D3694C67A64261CC474EA5472B5100AB879893AC662339E3B9646D084EBFCCC94E0DFF91CBAFD14F41267C0D2315EBB94C7988566ADB6BED4E9
|
|
|
|
"D66A1FC8C32DAE1531A8A5221A69D9F03449673FB8FCD4779FA34C802432A4200AD63AE3CD6C369A8478D4997B730ED137367CF95F1A60022347A25A2008756D809B4DDCE870E803EB0D329C7299AAAF1451E98157AD05D4EE552B0CD95A4F8C7C7341BD289F3673D1F88DE202A5CF7727A8FB3EBAFC878DD3AB117D04057B7B6EAE8A606361BD49568B04A7119C97C19BDDAFC2EFE9F1768A4AACE3AB3A468BBE1EA0AE49FFEB693F8412E53AEFA7B8DB9B476A29720B79CC4C054E7FD73FD611346B3C17E29CE62018D18B0EEEF4DC0D32D37D9B5C059D8B62D422375AFBACFB55F2739C1C3C9E18EB08EF86BC11C92B900B4BD4431D9868DF037113E4905DBD285D645BB3EBD6C8CAB96BF802875CC7A2F4A826F1C465643047BF24C9E4DEFF6115D87F004CD09169DBC3CD10C0CC561C4D3A387F83162F6073923E3B49B08385EB9DC246EDDC2E434EBC998F5FB5A017C11A832BA08AE1AF2646A9C402B6386A02A63C8D10A7ADF123E3B2EF804E5E46288059EE8ECF5F9BB0F64AE26448BA69C579CDAA8660DE83DF65ABE3B612417D808E7A9B562253AF19476CA287C714AF64975EB4DD9AB31984A69DCF2B0A171ED6D2C4565ED2E03C10B2739A3A6FC7B91DE5787F20A8186CFD595E8E43A3F59998040BF7ED77995E5C3494D6E248552B144E37414DA1F03186AA2CA819605AF5DC24F17C9795D1A8DCF3A6EEAB851A02D4EEB4F4E1DF311A6530C6DEAC4814B63CC5DDD3E0CB0BBC580BD36BAA6DFDED5F3874277D3FAF32A4F3C36CF4C1598D644DF8F3E78F2100FAF41C80BE48E809EC6F8D22B5BDF7C7D2BDA2207429F7A4D82A5F4EB5CDD9F8739A39CB7E1BD704128D58DD9D98C5AF2B3E6C16736107EE4EDCC96D19781E0F1E8FE468855775E7149774F310BED5B5967114131AD114D0E826598070F522747B5CB1DEBD0A88366CBC54BCAD6A048033B4CF95B0B658F3E493090B34131C930530D7308425BB50807C6370483FFD990C12B4A9D1960EEF0AC364A80D72B2AAAED588F4CB8F4C73B34A806F18720F127E8D20A78EB1D9CE602392A3A0BB32972C874132421B88C857C7ECF900B94B30439F47D84642CAB3972811F8AF42B614CF1C11C07787BF2C633BA1342F324CC41514E07C7DBAD78755E74D53CC5A3F67E6A769584FEA13E3169784E2CB2DAD120AC40408E752EBAF4D2347CB68EB4280AEA4C5B5A0AB0D70CBB2C299D281BA3AC8F113DA4F95609A1D38463B8A7DCE9EC81E13B01484D3792DE7BAF160835A8929880990454C570B8CFEF851F6C9F866A757F3FC1C052FF6400EAD7D9D8199C82D97FF85A8A1A092A35F4EC3A751166A315B1A90C40460222D80B9B9AF00CC6D5396F99E785EC4673589AA8C456F3979483E6963499A30DED0AB35E6E68456951F968BE49B107538AD654BCE975CF6A11543C01E63C72F2388014E8DE1A889F81A166FF6D1060D5ED4949FC777714BD2D823D489C280991C2429CACC19CADECE2455D791B2730C8867AA2D2450C5E1D4BE77B18CB0916653CAE09017DAFD5B03FC1A467910F98C4402AEB168EDB56CD9DD4FCE136960262FBCD3B726E07B18D224A56DBD8A8177C7F5218ADBCE78A6C4BE150537E6FB56FA2D61A64F18E4A859E0240656AAF6FCB875BF76D2E07B3A665B503F92E06F3FFAA977FF4C33F140FE4007C9330CCD71AB2297CF6F558945749991EA78691FB56831165D392F9088E68A2DE369CF67B9D21463DBD98F565DC8333475793E6E00DA2E04784FAA7DF452FF5A4C609625BB6E2C8C0D389CF3DF588D180CC32A37C89C34D3141BD72E62D062D188D7747FAE11ED59CB9661C0870A8FC132E031DC0FCBC0DC1E99CD42D709FD1298E7A28B86B6578084DEF2456D0F87C605FA8F0E135B5993A15F131312153428758BC5096AB76A93F7CD55FBDD661B53C8790E89B524672AD41AE36A7A9664A5B7960C4D3F94477F7A515FC5B887C777F98F99C2F1FF12786B739F578F1F0859059D6B3F8304A1CE51CFF2704DA7521731DC9EDA542BF6395B9AEA7FC8F5AB02BDE8EDEA321F990CBF4AC40F8E6F57B5BBF2AAC5F43156265E95962878AB4C3C53CB619A2485E6CE802B9732AD6C5E31D00C9EC5BF5C764C8EDA20739E3BA65E1FC33FB59C3C6F5FF430DFFD8F4AA8DCC22DB0367A858F29708976DBDD2FFAA7BD319758B84573168ED75933489B1501FAC880C952E6AB80EDB20C6A669FB68277EFF06204FDA88C70A8FB22FF57332E4E96E8D45B2B9BA8C39AF085DA8857E926CCB68272151D661120294179816F65CB347F1738761FA1D0F8C804BC132620EB0EE846F8D451EDDAA39EDECCEE3B5C0F2AA9672BE2746B2636D6268ACF31497A61211EF89B7BB0F1AB24FF06941F7CE2A7E9A1DA6ACC6E2592A33A2853F326BC595D631AE75863E23CE6DEE0BA264AAB37B7967C40C7D17980CCC3417F4B616B7863BE219295B0D5094885F0D9E7C0DB3270A19D9E3FB0E35646340AEDDAAA8EFB4CAD620E0132B2E6827DE0546A920B4B1147DC51AED079502289CA8F68A32119248F5B44B1A3878093950B8666B8E6C454C3C67FD5012F014316E42730488DFFA93B31C2513242261F1283790E6DAFA5D0B715E896BFC70A4A54D2125B8EB1D33DC2F16C5D8F9609C4167CE162C5B91BA650D7F7A0B90A4254D43FC83B7D9A0E8E007F4D4206B9796A9563E180447427370CD199229219BC3DB1E8045EB277B4B575B59D8E1F5ED1E522144FBF9959C0DA102FCE7FD897C4ECB4E4A345D692C310DF31441C7EAB467C1A9CD075DED9BE2DFF16705CBC83D1A57866EAD871C4F72DE02D66B1AA0BB6CA34DA2E0B72722A5FE8BAA9E76AC3C1DE279CF77C96C58CAE4A1302773171218A75B1A7358CA932
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"EC3282A9CF37A26EE42DC78D0F03EFE0AFA889A7526984C1030F6D3F6E0D7D9F303C8E1AB4D23BBB36D3D409C57CAAF2267C7AC427671E7B4D367C0AF3D942B9",
|
|
|
|
"E0933984FF9394E84B2558732854738862A4727677AE9FBD5AFFD4854AD740C330A2DCD4B78D25EE2F7D6BE0AF32CA2EE029DCF6D1242ED7325E59192A9346DB928F6CA97117A53D94B2834B8D893A8FEE679A8C1187FB660C41D66363F728B7641497FDB919EEEAD5662C7ABA17FB624BF413F31541DE41089276396028B08FD6A07371024EA6ECE3FE531D6BE0853937B0DE4000FB619CE43B4580E058D23E9565C4DDF70D76B4E934D945F7375E209BE5F8AA1AC1D3EAE5D6EFB58593E0DF28F61B590B3E47EEA36FF3DEAE069562286D7CBCF67D3E7178EA47F41609FD8A8C09BE7DE655E1204B86A248CD6D509B7B2FCDAB67DB8B1D284E770BBC8AE9E6491DF3672DE845E15E37BBD6CF0CD51C4753E4047BC9EE2DFACE26F60A5EE98A33705A724492FADBA40CD5EB219FBD27029D5088475D88A79C9A3655818E29AFB93FC90CBAEA48FDDF8AB7531A59177F74BD52D4E35151B3BC83E0D4CBFE06660500400E79EDF34959DB4B0FA906403EB3ED5BAC4F71E4F516489261EE0BEC72C92F695ACDF51463ACC99B8A54A0FD3ECFBFF60A57123C0450DBD11E40BE203A471A59BB5DE1D69B3421707A751529D1F949623EB6DDD72A13ADB216299D88804E065293510B2F4C666F882DDF26832CDA2097E60529A654BBFB1D8F21279B5D80686C3FCE7062733BC094131999CB714959B55DFED72957C1F7C6C8FE4D60277649D154F8D7E8B74F0A0ED3C5B8B188E1763D0171D27F6FCBFDC8580E1C699FFC3EF72645EC69EB68EA96E09FA9025E85A168D1F3546D8070D2473E4F26A9E61754EB6A04D6F5207AF5255199605AAADFE0E70E2C4FDA74838305A63DD6D3E6220A1B930A127B59D5CC8E63B77AD989BCEF184EBE8FE844E3CE854627FD0AA8990D0A1A8E890F95A2B96558F83CFE5193BC3114836E727331021B7C5D6E2D37854211CFDBB3ED946BF97405E2156E1A79F6703D51AE17AA2C9982030562852D443022A7E177D520E5A6C2115E02C97F357D53A4E04D15C8EC185C0E00DE8D5E6F2496A9020587BF720E05D5F3A50C96AD563547CAEFE662411E3626FED7228AFEB94436CB9A592DF709B808AA4CBCDBA1C483CDFB75000FBB68083292BB98CE86412D3E822FF451DDFF73C66673D54C51EA8AF21C078A1371B7D4E70C9795890A2CB63DD5F5F0573D10B0CE0827BED049991ECF8250A34B4A58A58ADFE3A05B67DD4F4C58CC3756D26A9EF66B7C6067DA3C163ECA9124D2F1F29F9CB2C6236CA3835EC39234BA7D7479355E058BBDFD9AAE730169387A780859B9F1D830127E431B35BD9EEC201A686EF6A2356BCF2A7FAEEA70B8A3B6BDF7A940B91CE30E2780DB2F1F28B17B10859EEC3643FB07DDC37ED0AFED7B4108F3B05DAFB373A5C5A91C486B07769D143DA766B4B522DECD9F8C310054C462018D3ED13F0792B208BF744F5A137F29285C5BF84A231745D7DCAA2D54A50CD790456F225D1D1825589CD4E4781B7A30A76BBD41F479081ACD8D5CFE8E47EB8067DD56D494EA52A8D5D4298078F555A31DD8BA5F1C55F961950B412B87EC7296D01B1C054CC2AC915666284B4D5C0E919519912ECF6098438120B6B99FFFF1F4C5CFD13083F3F1B9B49D7875CAFC0B07AD69262778A7F0FBECF73AB952E04BEBB5973E90EA5F4F89B68FD00ECCD3F132ABE58498AF9B0B6DD82BAAD3C45B5956121A0F959816C6C6F1469E205F0EE73AA535148A30E67848C5F29918F7D3E32ACDC53029EA3F3718576D17FD3B206A21D15077431E18C07B9AFB107FCCD7FC79DEEDBCFA788258A84D0B1545BF53CB18892C8AF7A2E74F5787DF880D1B9ADCF75CBE7834C1F11217A29047DF308368ABD5966241D145DFA77255680D7B065A2386166F82BDB2EC413E5973AA339591C03AAC3CEB590A47447B765D755F39A02A50772473B277AC6A09701C5DD5BB24384797D4697192D7E17BB6DFF800BA8B915F36FFC6A65BF5B026F32BB847F20EDDE7C3EE1CC1E5CBD3C637E2E4C82599B483FBE0243FC78CB634DAACF248AD126B5775474BCE9E459A8CB424387D714C4AF22D2E2734069F858907E7184F46BF5506F72BAE5AE3FDCA7AACF2BC84B2245EADE3AF24060903EE144E004BAF4B01DA728332AE284289D241A1CE3057C9F606A5E0727913C963F380018CB7DCA8556A7A7456048F9E00E2A7A571DD161CD000D65463665F0548F4635ADFE5D24AAD8B279F75231D4D2EAC447AF7DB523F691BBB7A75913DD43FA2B5635BB36F45E1783F5F38897EDA4CFA6D81A680BEC96156E7E7C67079885885D61F5ADEDD081F869B986FFB06AB11A5842AF2F0260C30CE7349FD4FA6C6DD4A210E1AD5F7BB48AF4081B1EF19EE8684287D9A1BE7502D7E604E151A990E7726746F0DCD92159CE88127B87972512E88A163777BBC90FE76BD0AAF420BB5892C2F258A238D6AE325F8A5C04C2532D0E189AFB4B5FA7A9D2F1B115F385B14457881E34C1CD6FBF8E1D22B0BEFB6FF439CD98EFD9E3969DCC8F58D786A368A56702D634183251AA4FB2E8F0072D3E15C85A220F19F41848BEE1642FF3EB66C3B272D8858A63692BE8EB6580F62D82647DB439DF47F0283A979488D46C49F5D620F45F361E226341FD9900CC5118B22907DBD985894700F032ECE7C53CBDA2CB3324C802B0AFB1ED878EE4635655F2F4D62C7105465651AF1DF795D51E624CC3E7DD9309BDA45D31C0DC51BC09DA075B37B64C0AFB46CC55B09AE6ACD1FE03F5B5404F60CB8FA12883BFD1918BB5BCB6567E9D698E229B0DA18C53B98DB27584F4244137004E13CB9D3D52357138D28E0A38752769F52F52DB7CCA1D2C86D432F6C5038A7B70D71A083F8372A1170E56BA6CC42CE5FD997D8D48C72BA54391CBD
|
|
|
|
"E0933984FF9394E84B2558732854738862A4727677AE9FBD5AFFD4854AD740C32B65BE9A65E33FE601BF82536D16AACB5DCE9281EAEF292F271070ADFFEA121327F1ED610C17397F46D773CCBB977CB3E01ED7ADEE2FFDBC337ECD5E23CBC3345737C51987FF62882F0644BBECBB8D812171A1F7CB508D1E91DED624FE5E55F0A33085C230420A05255932251306020A044118056E91304A42B86142300A0C2831D42272CCA80C5C48488328711B402AE08630011390A18469E3B84DA1A03023068260229154884C84A8411A24850BB13111B024D9A08C1AA6405C408803373209A145E1304D20B36C1A078EE0302213258E4030640C840DDCB8405182305C36410BB1494AB6285284615C2821C9C430099651D0023209368A839244943021211041D3482214328020B689E0A841D8880904347000366C4A280ECA9465CBC40C1A90308498654B288AD488054B080E8A88088CA60522345288226812894864086560464259C44558B08993240A91924D23C73121320A8A466040162898840C6234119AA46CDBA0808C448AE3200810010844404849426E0128615B402060C20803A76C58421281000612B80C139600D136255406245B8240C000890236064222105A304D0025114A480D10B16DCC228904320D9006018444251A240AD8208903375123B370D4C40900A500139489A3164A53C061E12651D1340A20A589C2986D413242DB209110212960B840E0006680386CC0982103C63003C09014038D59824CC298051C84242342419B244CC90449C2004DE0282E6314918AA828C41269943486630651D2168980122088445000262C2106200BB8650A000290B07160028E583006494290CC4026A118891325280C0406D342440C83249BA48188482813182C5AA08D6248884412884846404C9289622629E4120A9A24084A103252260A83A6310A256DDB0260D3927111360C181829C3B26D1A0140A3183153A2648A483058148589C650E310295A3081041848103966D9804C48C430C8A4244CA408439201C99428E0064809C92D4BC660033905A21884CA166C89B65022816423966D89060C1A380913384C5A0424E1908D0238419934719304651B914910055153B01019422A4228610A1252DA8661231570989640884266D3A850C2A06108A04D43348420044062281141A430492666811688E4A2918B2226A0222254C22519166ED9348DC4388A9B088A202312040886448469CB2645D2025291922950202443420CD020040094316148260C832D01A24D023511D3225142C8449A00651026298CB26493C68054182E54904490C464534860CB404551260010010C0BA28918320A40A840CCC884C1202E9AC4306202821884854002011C159202B82019000484083003C44CD038424A425043C02103360814269161360E23390803800990386CD3B630908241611092C826852430009C46519B468649463123A34C19034D89942088B8405C2242CA3051C9462D0924845C2621533889423660E1022E08C5856082305C26001B262E618628990832D4122652A24C24B35012296488A48524B90D11A54519016863A821E1426D09C0054B88701B095012292A92460C1495841A840CC8104A20974D1B436E43328E149930A1044481268411368401A504D49241C3322A54126E59384518264449A20922280E40A41182224082108951161062C0680BB211142889DAB40001210E1AC39018283244C42919904DD9B66C19990900B9095C224104116589962004C728CA84911184915B9000012981CB04690A344611032D22A1304414890A8225C9066524A80582A88C03341080460C5B0600E192888A14810B3091049369CCA225C9466812A771CC4065DB28262004655B9221C2248253142E00B76451B26C24306463A260E19804DAC049A3C08993C8910C3425018928CBA80849965120324AD8124410294A11420624B46C81302AA39685D99490221481D3C49123197024B96461B8410901515AC80989B22CD1940CC3948012140E1AC4484B320901069122048A483470CB000C02066ADC0081C0A450E248005B98816322445000819AC08589980123448EE3B00090A6302448618BC00158480C09A83002C97099182214B56CD8B63180482CC034925102489C484E10307108A68019C4494A32051810710998218AB864091821CA3068A24229099104211229C24608EF964B3361484F949C8EE0E10A8158119C4EA2C9E5A3D036FD64854D66D74C748ABA45A32709721D50BE63F0D0EDDC6614A0ABF3F0BC60F47D05A14F3EA19D4C201B43CABC4D959B1B21B126D4081157BF781DB8165E0AB7643B3970B5CF531701B3665490703BE03F98CE00EC5F1D81BA7C3AEDA6CD2F5B7C0968E9631298CDF0F6B036D2FF36CB482EB9FE2F0A36CA5E21D363A5995228A9E1587D54E6FE1BFFA22FD2692CC1328123DAF33A6FE9B9EBE1DFDA1D7B9E002CDE37CE96E039CC196F654AB46A03BFFF0A2668882531083A99D091F6A3ACCB82E36F7F002E4CF1ED25DD39B5E2DBDEFA95AF971763AA804B73AE0FC032828A67EE59743A9118422DC54BA222F9157C9F640D2B235AA8589C3D2D9C108C6C400032371591690DB5BE14FF17404FCE4052F6965D2661E2CC72E741E85CDAC3A2BBE172D53652D41E23A92791FAF3C822733F7095EBC1ED0573296525F934CD8C9CF58BAD38FAB72BB9134F6EB89E256220401A22C4CDC75400138CB101D8EC44E7D9A30D8707ABBB341F1E480BA81987D058C1B724467365041A13B6DA957A52A0541AAFAA705AF2A88E48285E6CD57F264DACA4B0FA0730FC3F973AF647A8E872830E68B7E2F64FBA6F3DFB613877F6FC5BE025C55953FEBA9502670D87DDD5EA744DB46DF3
|
|
|
|
"7A8C2284FB3015206D60E9FB6CB1A643B6BCFDD7E1016216500B1EF90B757845378F2D5FFA0D7A71A61309CB2A637E850F953F3264D7879B8201B579DB6360A7BF88FE171AAF98A481B977E44B88E0B021D3274C0AF055A9B48B955521498936764952FC43AED9941EFB42633E138F920FD0B537FA274E9AC92FAB79FADD37C150D0DDE45DA286867BAE023C1738197A12C6F85841234C4D4BE8D59F3045C17E2B07D158D9699B25D9E5ABE050EE2D3FF6268A3A7C89A405245C3D5EADC06EA96E323AEA1A37C4CEA34FC3E4175FACAFEE67C967B8153D7F09C59FFB94B869EF5066BE7CB0B7469B884410ACF050A9E44348B35377AEA32D1E90208A81094F0C7C17C7F9BA7B4138DB310C94EC585EE330A3EB1405019D8AE67B6D3E597B025A3B52455861AD3CA95DA082396899A871961F7B013BF85045F5A53101CB0AF8C2D6102781A32875D2454B8D8F4A4D9F855EF8EE46651563FC8D7A5770F38B41ABC31B39C1314EB0DD1325472BD77704C76D541C548565E41BFB9D0B6CD44E9DE32FF3666169F65199D447E7087A4DB5FEDB4D7CB8ABD269B499BEDD609A636565BCC1CBDF851344CC5D526DD86FA39AC39EE7E632B967913FA3A2FC01C4EAA418EAC8F38C7458AEEEFD05EF87703D5E0744EDB117816413CF3DD62A681D372C9A1AB3537E2E1BA5222BB83D778A2C92566231C516BA4DC20B8761634A1EEE769FDD8D18086D2BC31971F9363F75FB9B112851F3856B2282870784DB24507CADB3DB654E4E33D5283777B4E45B57FFCD7723CB54A57297C77354A9C716D85D2211471BBE66B514A6C60E1C3B6D6177E37BA038FFD022FF2F3B0B2689B0C03E87FFDA3756331C95EF6527E7354E351C57BE19D35821D0D4E10A05B00AA091BF3D2604FD841CB3BAF28C0EB1C1BAA38ACFF93739CBEC89A317A2CC45749489DC34A41D02C56A60487D59650568DF59C20B582009156E25844EC6CE3359A30653CB5C5AD828A733910CCFA758CDA50828CC6485556888AF72745EDE15A38D27F1506D3DD7F2058F5A7F773D5B56095F050B9B5270C7EC23E3A4DA4175B13567AD6982074D051533E6EF0C2B666F1DFE240CEEF214052D2B64EB1D4D8C1190409FB70A3FD1B7356A55BBB660E7EC86F8CFF9CF0A6525084947EF80216FB3FBFDCCBB1203BE25AEB698ECE03094C20EDEC980857A4336BECB2C80FD10C70256A0734B990F647C9D6C0CB5DE3A5E33638AB4B27EA60D33483AE2BDF10F770F524034EACC5F5410D248712ABF0A27D1D14C2110609E89DAB84153A418849A6DD752EB3B4266ABB8A85199E1029A578C4895F2304862C56DE7B13000059CD6EAA7199302FD35767B5BC8689C6E30F6D4D6CF0187CFE87C7187052477FAF8C3776680A23F203E170A710971DA7A28E1830C45DAED06FA7BF94822770DA13568661D0F9E17B5D3A20E13E57F2506A7CECA7AF3B586C410C6193BB58EDE875B264DB53679F30D4E35AD694CC8F3C2FB8C8C256A5146AAEEF77DD0B53F64002CB54CDEC1DF64B22A7FC04F31D228B63A11755E5F78CA687F59B83E38767483E1874C22125FF110774A33D2F7D3DA5D190B0BC85BDE4E472CBAFAED2BD79B6C3A5D10962738D4B71BD0E34B51E6F1E573DC807CF0EE069F968BE235C761975CE69500E5BCCC83BFC353236606E96AAF1E8B5E66B611742ED9D635913B9E9556AF4B634911BB0DEA04EC3A268A149E6DCA8189A5351ED69A34CAA1A32B7DB32D849971943C80C2EF1F5102B32C64E8EFABC7724007967F2F07EDD231E86B45CA5FAAC7F98CDDF77346CBAFAABC96C62E315D3941E0BE9635C4F081585E3A215B5B22CE04E2AD48B1389244975FE882715183FBF2EC1B4770EFC309ECF3EBB8EFB763BC3DE2FA0A1ADE459FD6E371598F2693E8B71A3D4C1BFE7DE7AD2D904E5BD20FBE95FBDC17C4DDE941590390E3E86280D93EE3BCE34E45BB87822A2113CC2790644667D5E40F2757C6B0E422DAD9CDA2D3DF74F98A90A42389C64DF3C774C48E2B472B7ECEEDF1BD2A9977060D2477C30F82DADC72939C5F0F81F3E2A0D18D198C8DCA467F901F67B03B5211E539FDA882AFEF966178A541A91D0E337E287B2F366A5DB553E6A3CD574D3C5AF5C7D2456CA217D856DF5F936CCE11D40C175FBD805E947722F878A3F57A30CB26598EEE043C4630E38187E92F28B96D7D438A102B086BC61E60DC5987981A506999D30A8C7A3DD4FE54070318CA1D7D4467711FFB93AE4B809B0628B5B8D0454D4A750FBACF432415ED12D00193EFAC3592368563F170118E6AFE747BDCA1A170C75D404631443EF009C7B29187E0DA757DD2E1B4A1164B78922CE8056CE20E88717E11D18A416DA65F883DBDE78819A32B463145D1853A46333FF62D03488AC0B3C85951AFE7135395CF9B73410692FAB4C4A95FEA8B1BA01FDEC8263396F8491BA790D0F1EBA1F5A1991F04EBF35EAB9B7A3EEF2339DC920B068708D78842309A104FB57ED743D9744BFC8349BBDEC0BE4E27394F3176A9F1CDA22FEBB5052BC0B1C25CBDDA817A9ED7D5C323622CB84AEA77F6558FA25084A6D94E50A34135EBF0182FBFF827B205C6017ACB483E966747277B3366F2FFC054E099BD6B2B58CF64352E8FBDE0831B67032C7B92BE978DF828B4CBB7935B68DF4411AC1AD05B7513AB53986481E92BC9075075803F69EE5726D8460729D4A8FA99FF7C192364BC374317B784854D8801746863EC0C18046579787426D8324672A2CFD5A619A8F48BA7E288DAB89C78C6D16139E67CC6388B4C6957C83DA582F39BC391AA69908B022D2755C1A82450D17D507E850D1295E96F4B4B2012193F5B065D05CC01D0233CA8DD4B94F8C6336F8CAC42E03E254976470E4C4F9A
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"C92B3682759601926479B5B92656A5A4832F692973162D6555645F1F8A61EFC67869762779EC56A142668D811147DA2F0A033DE523C17E4053B06FCB3744F8F2",
|
|
|
|
"394D8A23B2E8E52670FE5845CEC53CF762FBD1F5D049FF45014408F2AC90AEF83153F3DF5916F82CE16569703403EBB0C9C43DE1E5E6343DFB2154709DDD5915A67AC4143F08AA9D14B5EE80F0F0C5A5168404CB5E1084F30A745B8172FBAB923D0C6DBA7D72D682752D56D33AD387FE0A36B6CE3494BEAD8D9FAEC6A3077758A88C5A673AC3BC08A5F6541EA6DC3C58982510B9F598085EAEBA39C6B569698D95A79B445EBF4D0D5285A650A0988C050C981E1AAF7D3DFEA4E7F3D281676AA824BF3180ACAC16EED9E02260324F1E6B0D2F324935E2F368FE715F470683318A0B102CBB033C26A21FA6CB24760A64012811D2AA6AF0D9EF7A07307CBB0FD937DCF18AF5A2A099A8367498C7A78F733548F1EFD16C83D2B184827AB066DC2640D04B111C822423D3DAE34F34F8D4C1BC8900CA2D632DE77E09789ECF0ACC6451F18D0BACE09E7A5AB7276AEFD56192B5C04614E3655E23D5234B98CC5ED751983CD9E5D62830295E4DBEF5B25FA21C15A120DE3E5D9FA7EF76333AE1E0A3DB3BDB64C5BF94ACED2DE0156D91A8B6FFDF9D286250CBE141513CBA007689610A1C86B975E833FF61072486142E17E3619988255F322CA064D7B8C524D4A09B9CFCC3D251EEE545CD62EE826FADDB523EE94D236E150BE42137BF9AD852A137F8496825B7D0CBC0FCF9465D48C002B0A66FF765A7AA4B8AA4B127F2AEE932E97B287E35506A584DF8932CD84D4B3B40B4DAF242ED5AB51169C933B49E76E7ADF3D921FE94EF9F5C4AB2BFD47E9D3F32551C759773A27BA2D130640B7D33A88EAEB6386E56CBADA41EE735962C915E5761F65942C9611039F79187B23C6EB26F5D0BD421873BCA0E3DA8BFC86045940AC5C3E4EDB50D99F7A905BF8B0F536090DB8916A5E872577F650F59F24DE2AE57DC2C928AF76600E764DF5FDA3E30ACBF3F8DFD3D4944F2A9202040B06982A3F3C676C27E251281D6F95A130F34E4A6BAB9E9D7FCB5AAC3F8DB51913D7CDEB4204348866005EFFF837905C9100CAC3CAC715AEEBA1163D3CA2CE0B616AF49975719081C67751CFC746EDA11D334CD8E3B1463A1D767453C30FC1F0AAF5834D88926846D0747EAFCAE60505C7A291EB97A70CBDB871EC72606111E7447E2FDAE8674F86253BBC2EDC76484AEE9B9C153E5AC8ED4C8ACDB491BD8BFACD660568714E79EECBE42C14A15E3BEE44EE5F1B0C46EAAD1E3F3D4AF507656A8EE4B39F93CE394A979F19E02789E9D26EA7E1ECE9656F5EDB8FD1A3F08F28BEDCA19A86F99F06E5200B56DD25217084FBDEC50653913D7A0C646B11C687F33E53EC154A2C30F871D0D3EA038AAA63BA71E87ADA8705660EE61664CE046EB608AE8619F5533D66641539FE38188D3055FFB03A3930F09098383A1B3189C4F012403378709EFF51B4F3CD1C8351356316E0E8571531AF6E8CF1E2FD21A0ABFCCF1843060544A34C78E412DC9DC3D6B688F6E868561BC7125A2AA6E436CADC1D45F7846D2DB541EA5DB1C7F23AEB6216CDBD6FE1644D9EE7A5D9BFF73A8DAB00CAB136A110359E5827D2A1CB53E2E0F069E043E1E99987C765587719759641E9CC8A8BF7C0A6D9D27F6F2C8828E8159F2C046C1F5BC3D714966F8789C0085B0A9B213F246195B892EF6CD72CF2BFC4EFB1C7B00BA3D4205E2C8AA18B67B01FBA2FAEC263D577F7413A06F79B721DA5B8A3D3D0354933DF4170552B5601BB65384065A863E0746AD414AF28D6344759C52C2601DADC075939366219C91D155AF6C3DC9B1FEA4001729DAD5101CA1FD4F43F9D284DBA5FADA02376130E8240B08FFDB7A95C051AF92D8552FAAA6A9A6E1BE001A25749A9836648A61DCE669002FF3CE746645FEFF2BE2D864F2B573556D388A1BC970ABBB0E5D0EC4EA711B4CE5BE4D7105901070D18CEE46D246B17E4C541826833BECFB333852C1C109CBAC8CAB008AFD95E83D8E5074616D84B82DED496B21231CCC7D3A5BCC467E83BA304AAAECF7778D26655C7F0D8CE5339CFB500915A308947CF2E017CF5ECA6D2B5D83F8AE0F13C45EB8D4A3B2710540E0382BC8BB85730775645677F878A5B98A427E1BE92FCE38593E1BC2C737069B537D9BB510E59B36237DDB5B34DE964032B0535AB1B74C43BA9313D32F686EE3E5AEFA74098348660F561D9A2B7121066415197090E2521A163EB570519EA912EEF02D9B96708A8631DF1A020EBF8432DCA8681E151CD6749F0A1175D49B7CD3C689BE095E8E6E4D36181392497DD68F65E38A03340F9E3CEE586E524201E954D28C4E73F2CE9F0A7CF16B133B3963933B2CF98C8976347596DB6B69707D7A38630E5DE7C99B1A5E29F48B3EFD1B25AB7A10D9CEBE1E54F901240E1F977C45D4E9845B5E846BFE348584046C0F6AB5BA8F597A2A9AFE5ADD1FB5F74E6F926D87F8CD4C49DD16D56F3B7B9BDEC57E8D21799806EE4B774D4C535F01932F07530519B4202AE5456A2B8BDBB2942F2638204A8819E640A7533316B0F363CB4B54AFEBF2EA609AD32B8C590CE8A976C05A214F0EB692D04B8A806D791575B243FF336B8B3C34F2183BA95A1C8B4ABF8DC4B4F5B99A8F3115C36CE602A228B6D122A4D153DF90CD146DE519435C6A6AC0C2F4D027F8FE827B8389C45D55FC403FA683D782C95965E75BDF1E36E3F93477054CA347032DD0F5BC185EE8972A559BE781B4EBBDE3E3D2D5C79B1C3E7E4D9E1F17E31A350A23D1A1EC5CE154878F08F4C2BDCEFE6D62751DD2584C71A4EAE0F09C8AF0D9899E1924033C23E9297C1EFE0E0DFC518F8347D48F76E9AA8BCE5901FC85BA7852DE91545BBFCBF3E03471405895E91810A0DFDF3FA4D11DEE58C06405B87861C9A8B56C5B1C2640E3096B8F71E089F97FF04F617D7D15
|
|
|
|
"394D8A23B2E8E52670FE5845CEC53CF762FBD1F5D049FF45014408F2AC90AEF897DEB3E6CBC2CBDC5C37E32F236BBA14AEEACFADE3A15B7C78A21FF7096140E1050980CE8DD6897A9DEEA37AAC71365E468865C33217C48DEEE1EC4058554EF985C85C920125D9C603B548178AB6F2CFFA40A9EA319CB18B19152E341046EEC31115880AA4709182314AC481C0108622482101B5055C4062DBC00CA0B63094A665CA80708C30859C380C84064640046CDB30299C320E8A46654A483211908423270C81320211B34DC2821148241288006090B084A2266212362A8B860193C80C4022321C181154C40D530051D81844CC8489441211223008403870A4B26DD9406E144001CB320D030481A31226D4320C04174EE3286521396C644081E2886D64C468CB48880B488AC3009202380403247113838D10A024080532104381C3C62081A05109144559A48521A840E0166DE14802082590CA4008C8A68814B10500196154B22C631849CB10251A4246C398255A1041E1A66C1017040A37469228202129300B1225639068CB8630040151A0B2691A186AA2B888181866422442018228D406321B034599866D4CB66019B96882846C1094054C460519C54048382A14A46502170614002549A44D41C0280C122001140C510446E2448DA4C84463B611E3064A084425E4962019114898008D19C891E3428D198010148031D4040452268DCA080C51B420009441120749DA342688800D20C82D201162D1808D00102D08324A1CC6815B04616284900A1222CC024113354144B829D9B22942007083448C9C30288092104AA828C440700119319048261A45840CA04989068911402A0A272E192946E3002123A5041100444A2886A4184898208011902DC438640B430D0B054A04101040304A0A442220400424072C9B984CA118125436318B06925AA6604AA864548484E4A6684918324A143224029102835124B70809158820B8705C8630193644133784C4162CD3228503122A61B66002264C1836410CB51101995112244C51C48102196DCC326CCA8670DBB484D022818C988551A80460C66DDC18451B3252DCB48021048E1038112439220A82001CB325034401234584CC244550388950A02C42A02008492161364E432211C2069144B08140064202130D94120E1C86010AC56CC8126892282E9A2261E0960013010D4B4482C9028D0931288B4261E114855A063224987000A184C1B26580364CC2C884C3C86824C251032202D3C871DC40669334414A4268DA022A41B86C5B264C114029132808C43062CCB46961828DC3A660D2948881B850A2368D13062542308A444464CB485253422AC8B64D1296081843869418814C1804644800884424891025C290110142088CA08CE3A8851C052698382EE108669B445004832D19B66CD2B42C22353242940453264A5148120A238E0A3406E2C42850C08509C94C5884854B126E0AB5016334641B179024842121892C21820D21C850499011190366D3B48153844C0B446904118510097013276E099744A4905122043149424D21243224141191900109166004836C04C44922134912402819B6301807100A2749E4B8698AC45004C22002950841189222080821874514A12DD1324004128A11050C0B220D01310E9082009BB42D04C86053C24014C74C9B22221B974C4C268A14A50462326A20B46D9898859B2084A12071C0A828D3086A4A2668CB344082028C12A445922601A2B44CD006021C358EA4A28522952560446859920C03B720E2286E200685C09611A404645A240662A82D914661019841E0C88001379093926C14042D89104A580648490820D83291589001C1442512A40444425010A101A4C62983428CD2164208014C11A184D0086618124C649271D306821B356C0849401C3709038861492445A1124682301141888C1C930D094729D8128023348DCB024902C7056406055B186011262558A405D82000E4488452124D18278ECBA4100B0485A3B6450CB3205A9465CBC08954B8890A02526328618BA868C810421B834412040560160C22B76918446804388E90A2000B392902402020370522C3480C462C601888A4B425D082410A494C5CA4250931701A388C82326E2104200840098B00019A8820929029449471DC4669241885C108650213824C442822890CD1B021940412221571A420411A0504A2242E89162C9D6D12C5E8D29DEF619D57E439535BDDE0F957D7BE4DBB17EB5E698AA194085D3E073AE08C600B04E796542F0D7D9D690BFEC31D0622E76957419DF85523969AE0F8783659B0D744DCE529962D54CDE035629C3F16A458091A6E3ADB57F27A09E5E8A22C23A441600582CC94C2C02EA5E24FECE715B4199DD4988D77333EF48D025FE4F76597C771D171C3C4B98EEA6F9A0B7D8F6FE660D0F317C16D7ADD594940C9E106340B6C64CBA0CE15EBB0386BB7D5F0B991BC639BBB3898822D599C1167B1B093B719EC022D245D4F8D4449DC5A462595EE0AAE40A84C3D7A203334B92D37A5D86AB9C7707F0BD81C0D6886E607F5456B87DD8389C678894599A00E9D0D320F1BD8896A10B0B23446192E6102869332F30B90ECF96196995FA407E8C2C97FEF8F04D4A4604FDD725DE77F90D537CD182632D0DD7BB78E778E065221D5D2B9C895852A3C1167A9959D0B5AEE0FB447A6FD0C44E514EF3FD513A14AE40BDB8875D9284E9323630533068CF1C933C83CB2673DA36708E1B0EC06F1FEE737FC8F4D7FF6847D8CDDF80C8743C8001A72A9FA007154F10F709F61E02E8C37B4636C0C4E9BE314F503FA1B0CA4F572FFE9E62AA0C8B516EC1CB36CDEC996E706EE911630431D9ABEF92B47880111DBDE9F57D08529D9B0B573027A44C269
|
|
|
|
"1677944D7F53B51EB6E2FE282243504717501A54E9ACF07A22EAA9017E37C8AC6AE09CAB368C9764E0C384A59E1443B806FEBA6547A8C0556BC39EA2867E0831D49A2E74AA1895A217FD27DA143F2A7AF034156421FF5CC9C89C93C2CEE13BBCD7A3636E8FFCAB7697682DDCFB1797331AC7514EBB8F6CE03A09787FC90DEB5D3F948FB21E348C79E6F4F92294990DBBB56D4F355D50BCA5D7283DDF6BE3BCD31BAF0F1B141EC2783069B122C312E3F2A28D4B0A8F1C5FBDE3F127118DA8FF731487594079ADFD2F7A8D26AC195787434908D57E6C8F357485F834161EB37F5FB96B36B3974D1074D17595E89A56A60A1D287D6613823C029AEBC6CC7AB29D0EC65C3967213ED14800A60428BBCD1132473653DDE72E632398E14287C240D00A7869778133DC0ECF536EB2CBFF9B29D3E2F19CDC2874869E176D71A8C3DEDB671031FBA96F972A79BACEF9BE39DAA9FEFD670BF88EF1201FF51463C8D86A45E992D2BCB78DC08D211800E817A13999B955AE5358D1A47E1C0E0614F679DE96AEC07FA8DA89070A28F974DA11DE99C62E6C594DE22261D664395AD130683A8F19A7CE2FE1C2F0A387FECD415D857602F2DEF91E0C26150A95DAABAF753453BD90E93B4325DE9FD88C0FD0B93CCE785AF9A0E435CA77728044F295CD828EC9A84D0B7A0356E6A7E148FF3A3B55591931DD99EB003C41DB8C3BD0DC8F6AC4E54FAC249BC763E63796C147882E93768BC1CABD0B6C46F2C1579C904456810A41780D95C428C3B5718B3A5ABB5DF2445EDBE3E0DDC9AF7E93185EC0C14AC496982EA455DDA0B561F5DC8FDFC758384FBD2C8F15C13C030BC0CEA9A60F748F6D0DD6CB0214128FC2A4B032E38D9DCA51D6E8BF33F33CA61E7C41E4DC2DFEDC0C4AA691365E53FABEDB44D7CEF82A42339C9926B608171999F50772D0EC1C2310868981CF21D3F86F1FB06C989F347C4D4691D00AF915163AFA807F411C830B76C72DA7B41A0A8D8F6D9C2E956370A0E45EEF447012952FA28231671F251237A144E20663C5183A9289F0BA892FD53937AEDFACE41FA21B1D3CD34BAA7B336060E0EEAB66728434C3770006358D6A4EB45F726B3CC43CF05E4F0E0D0035E155B086360E7D756E68E7594F0857D57B0DAAD13A77BFBF056AF67F9E00BF2A8117E5165764AC03FD570864C3764BD919AF1A10F7D8A39AAC07D45F1938E7713882583277EA4819A6481D278C7842DFB01BDA84945F128EC84178880797DDA999F3E5195CD979DA06CCF7179CFF807C17582F1C1C55EBEBCCDC2FF993C596F0D78B74D63E827F523BD4228BFEEB3BBD64B3B6A419EDC8F8E5F071D848997B57E8A775EE7BB159524F21FFE009D567CA94A496974F172813F688B8C74FBBA718F9DA4C71FFB535CAF8D74DBF65FE017A39B1BFAD3040ED7AB0B6DEDF95D69A2A5925197EF40E370C5D54491DED4C7F283C9192F4B07211BDB2482694171BE6F89F12EB2961E39B0A9C145213839314AA802A49CEB301E766D43B64F35B4FD8B1BE611C4FFAE1B3F0D88A623FF94BA16F85D9FDE19E23D797EA9D47D9B51599932FBABC434276DF71005F04996AE6028BF7D12D33C16B2DDD37EAF11EFDF1C06D6631C84F9B15DBF3BE636938ABD7C55C5B11980C0338AEAAD54C1CA14041A95680C88F01BB96A3C87D814FEB3139C64D8BE35C7EE56C2E38C7FAD4205BC62F52DC592BE784BEEC550B5A6F65A5075090753D7A6F0A15F64DE67FBE830FC695EED8A639A497B7568F1302643FC175181CC17AE0AD4507BA1748BD3EEF9EF0773FBD199EF37EB78677D7C305A26261BFEF907804945EA9D0B1E8032791B3C54068FA4183246C916AD919A2092937E12420C56D66BC38671CC159C6EA885753D541263F8515BFE40CBEBC79CC6A90DC557A1DC68FC6C0CD24EDB39584E5B61E08DE6069504FE0BA79E0CECAE3C87A56526CF808B11C0845E0995BB342879F21F280B9D89F226989C5501379A64C72F5D16653C28285BB59B222845B1BB79CC87578389B776492314B9E65F51B49C05D85D6579C2319A31275F02AB01D29D9A4341013F22723C66652AAEA0855AD1B0B1D4D9935B5FD6731CBF967789402BE664BC816B875F4B378E9BCFC163A96368C80DEFC8EA82C38993BFF77EC97E8629704A75651FD04E9FE35E1E0CD905815FA6AB357C824A15F6E2A8989A0FCC740BBF0572AEA45CF9AFBE4B0C36ED7330083B0B25342A38F74C0D1C583B9A982CCF5C8724A8C671B3A90C3CD8BDFF8E538BF0DB728F1813D6D54BC59D046E48C08FB81B9AFC6FAAC2B847B563C139927AFE9644A5DF26DF08CC7503FE2E9A5B3C7157417E1AC478B8FBD1A51584393B7356B72A3D8F156BEDD2BB630C4B35C0F30834C821A7692D6730D8C845D501F36543FD97C4BBC3290194E77C83582BB039C9DA4A3BDA10C6056A8304E6C119FAB05FA9D51B9698E2D68228939337AE5BF019183758CE39357339F4D54D8A0003C2637B6F364B5865FE75B6F9EEDF6049ADA5C7931C722DF69A469B6A0893237BB8D640151A162A0ADCE270AA948EC3B7446329F2E6D7A43A9EBB54DF67AC25FCD00459AF7E5796EE30B0FD8E66AAF424D8978403577081970A24BB443E2B0EF41046EC7B34D8B04A97FA857DE9017168264C30089716A3405CE57F6DAB7AF8D3E3C84010FBF61EEBECD5C0A109A8E5FB9B03236769B69E66FD2637DB1E703E12CBE1358D48BD865F5EC9E46603A0654FDEB6E6343DA3046B8BE0CFC0945BA368D335B13EC422D284C33B5377D980994A240950BA72C10E069D232577B6ABD1822941C09F100FFD1F62ECEAFE5ED086763C4DD61212FF570B299DCA4CEE6C6B1EB2B7C301D1609A759FFBB880F04257913B3B99BA03207FBD9
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"5F85AB235F88D1300D149A3E053224256DCFAB16BA5601F42AE3F1F300E29776A366610DF5D6BBAE9015A698BD50EB0F32E3F74E7C8913C193A1F91B376146B4",
|
|
|
|
"AF68846046CB1713E6978E731AD1DBE243EEEC4A698E6D8B4E692F27DA1E0FB0F697E61AE376C03AC2F8659C09F0FE1E32D1DA61489F1A5DA5C5200DA270A431B68AAD1ED841F4E3605831293218D41142EEE75A4FEACC65C65BC6EC16A3AAEF582758CB0831C0BF95FAD393928D8AB6AF8B174A3F3426C561ABFF1FF59441DE634D76B58E22A58F36B38644BFC1F6BA64ADD78CF75433642E51E2F8904002C18F1609503FCBFCED7D3BDDE346486F3DBBE78A2AE5E147B4C1863A69F092968BC4152BDF77218B67CD64373E2AA801DC2C0D0C9CA32D573E801FFE5662FC1DF66D91291B64B7A25189939ADABF87597F743527BCBC9F28B71FDD84147BF42100C5BDF5EE246458D126B81627233006FA96C86036ACB82D5645B5A33E7D5EC67B0A9A89EC21C59C57805DDAD6930FC6893BC82F5C3B1DB8C48F83F45726DA20B8C946D1B68437C62F3DC971AD5606FE5556BEDA965AB40F0334052221298AC7CC9B53B383E9D26105E263849DBCF7F56FE2D272FA2190582FCFF976FDEA5BEFD96476AAEED27FA9F5BA45E217A75DDF4556B2B5883ED962F67E02E175C56EC48C812B6B7495E38FB92FD8F3701B3E5F6A6A8363D4318586470CD0B768A4F0E79DC3994C05AC967B946CF0C873447C0E9445DCD0C84B66B183D821DA10AA6AC53912C0F1CDFBF46E6B2606E1AD0BB66E317095B6A125D31C03FEF034CCD93188AA8D6F9CE55F895DCE7622FA1C559822B548360C9F55B96022C3A8D3EAF8370E7F2FC35E478FE71264D682D926E0E49EBCB37F1204B9A20E3598137B00B04F0E8F3D0372EA21E348228E33ABD39CF4A1A622A0E58580BB0BB4D7DC303EFADDA4CF9B52132A6E6CE88828B3324E1F95EB7FCF3CD1AC2F25980976C6D82E19A3139FCE55DE659D3E290E960B790EF6484C2ED6550253433056664A4B754A29D91DE8CD10134A15D4946456B13D333A682724A7940759DF465CF0E388BF611A30B39304FCEA58A7902E0734FBE41209C0153F92A14657591E3032A6F9B0F281DD3F1B4020E05345C5C0956338043F9D2E18C44F124E85538B79FAF8D716232B77F0992E872A82761420B836568577409639C6004567D5A6DD1515097301A17CC2D07F6593BBB395134E7D1938A55BD932064454B9B7E15CBF2BB0EFDE0AF4C0C5F712FFBC1A98FEFA4A13CBFDAABE3D299CE9DA04A395474F2D674E65EA969284A8B8B8F7DB7911D3C3FD26F77512DB4AAD0A6E417B46F075D358A682A701C1054F9184FEC4A87AA06D51074DC03216A4171A32E612EFC458B82913F84972715040FBA95E46F1BABC636FE1BE165AAC33CBC0F0E39B70DACD0845868FB4B2F407FD9759D94DA16BA075BC7FD5E0E748E617FBC1429B8836952911FEE3BC892597D3FA3818F4E020056AD376AEA0808AB1848D4A5196AB4394C3EE8FE7ECCD43E1FD2E137FCF6B5F0C4DDE53BF270B45C416B5A5F9B84F338091E671CAF73F6552F7B8F3D6811EDBF1D3DCD6EE2A6120CA53323C1E08F3A3DE965E0FA9379BC05834C2DCC81F494BA58E3FB6DD738BC5783D30E49B240BD50B1B7029C17C62CCFAE3A5F2CAA6BC5F365C169614761544D71C27AC60A1DAB74799281A87FE187C9A2C86510CB17B74BEEB05AACDCA45E9ECA1F833CE02CA3FD3020E4408E3BE6552E868DAB48A4DE6F0A2857F3B19D6AF58C645CD12053D0DAAE39B8E83D703D4D2D39217BD5FF2C61F71C3081A737FE2A629C90642A5C6C0781800D95AA8E4AF0CFC8BC7BBC551D94D8C660ABC63ED21EA8FFB40196B6D8884C3B419BCFCFEC2B652533DA2D239896F3AADC59F592B5EB723EC20896A9C4DEB83251C1C9480929085B89FBAB4B85244CB9788BF0F11A54215400146290D46C3ADC710D24CF62352F65E47D15129F5D673581A7B1309F496A5AE2D6CDB3E882B86263C89990DCC66AA692436949463DE2DEFD8208F4D14716F6A9A4FD67427F587D055D6A21FC1FF16527F01D597B3FEECF6F550DCE6D924F88533701DD50960A280F8E26E3B09DD5F62B24E84FFF3431E23B1EE570B9DC916223A766AA8C8D1AA451C41DB2D7434BBAD864493A61CE4095C93B4E2D4096EBC80E872F23DC214BE5FEE07E889A9CF0784760A92E598ECE8040EC4DF97691DC3214678A21458DD0A6717018DFB5B4034971FBB9DCCD9D96ABAE35679D9D7F219B28ACC5556BF9004FFE22A0057740E625044343C61BC5DFAEE2F55029ACD76FFAA209BE4C9572D0601630BA82577A6B8EB76BDA40E457A45970F3D1EC3B032EDD99347587F71A97B972738DDEB18AE9CB2199390E885FC2012B97E2FF5BE9BB1D675EFE0B552682899919A0B579E98EF2715EBF6BB87F9F7535C17930892B546818858A42D1F315C9122C79318A921BBB4DF16589B5F32043FC03D964D153CE1BCE0C2E63630EFD3FF1AE34F5C2F8388D23E8D462B1CC39C7C7F250913F5EFF3C926AD15DFDF95AE414A12030690DFE19018D5349D47E7822AA97A3C4EFB6376CC532F315BC58F7DD1C2583FF9FF29628B116AA1FDCB0BA6945CBB6BF8E91A61511E5E9EA46351D2E0D0E1285B83489E9598A5EE80242DBEF9C080AE5D4534A7D5538845A9AD2DBC991B4C50EFB9971A4C06F1023333D351DED43A32E750517049840C0303BF1CBCB5BCF8B3FF92F26EC7544E049358ACCE0FEEAE0AF7868D5C1E9151B25C5AB56DDC3608F884E3D8EDB1C22D5BE1B76F6F7ACB1BF490FD88C5532D25FDD83785F3B1015338682BC8C9A629EDEC03C8CA190F27A48DFFEEC7454DACD0C421DB1A84585004154009F628E1473AD39216E372CF0E1841BDA7EF028E556EE18D166B4B92C81477524BA7996D6BEB885C603E11C7A822A0202F0D0017BB1E37BAEDC8381E017BE3EEBF43
|
|
|
|
"AF68846046CB1713E6978E731AD1DBE243EEEC4A698E6D8B4E692F27DA1E0FB0BE47AE548BD3F25D67FE11B181F0DF18A1CCB3622317472F079DC81361B9BEBC75694E99F60E248E03029AE73D3E0C66F71FAB419F0E2CDE07248DD7422E83926A21E733C2114BA60C484A14981AEF71AFF6EFF2CCB75029850C38E563DA649921370A5A10490304280C335003B3611BA98D019080E216506198408B186C12A404014186484480C3B6681435618CB2052301700C027108058480224E60288C1A012E621482201569E13450D0A26C11C531030460122072CB004CE1464210228222476604043064884502968112388680168A51B80080161104460119A491DB34009A868961088E240911644620DCA2914C142E91206D8B1630A2060D0BA120C3382401B144D99831A39690920061D3482D5424888A206A62C80D2229500397419226461A292410C24CC8006920356D1AB321088881598028A2146E14957082C2252295288BC8249132241C072860480E9B226A4C164659C8200308050C37455C804413C641A2144C9CC46C044651C44642621049DC1664C90440C9984D543812C238691B212A0004011C475194384C6084685C080EC304050B1045901644E44851089431C844810C25299020720B2904CA1290408204C0C271D9120508214518176088926463840C81962994A209E3102A63A60411379114223294288124072A88308AC400110A92114C388CCAC48C88C444E0A82411A12121486A828481430660D2A02123A46CD3A22408B30113086C0197882007081BA365D2982D639204A0801009960D13278C9C0240013202589831183725DBC26CDAC021990831CC084C104245C2367091C62012024E41A268C9B64492466AD2026DE4C04C02C80004B52C211860CB468504970C204800203672CA906C0B49651C89111A3741002720E2160811470D0BB53108210814212803016254B6650C4606611832A0442C60A62C5AC431191729E03028C48644C9C66D03B6050C420ECA229210C649E4024D12A1895AB070D4344E5A262D0BA44918A0111B172CCB284198326218088221890110882C04B08122994520126E04A930924625A222041B0950E2902CD386250BA58D4B00929428721A43218B101123006988B669A30229E12864C9044C4418246214900C06421B884D04208864942102492154A06864202C488645C2224E5096100325501A018808C8494B4405A2C88488205012C81049102D580888DB02019A404ED1264158B25023464A1B40091A283098440520C009243464C9122D030648D2907103276C5B22241C15411880251C226404274D5B38619948724A4409D8982910B608E3C4452084096036100411809B98491B3486E3B86CDA2441E4B02C23A76D61C861804822029140DB0664D4369214B0852330684A144580080CD09830118968C042421A816CDB8068D8B440892022CB426DA1443210354E9006298A222823324C83466901106D03A64014A741C4428D83B41194966152A000D3A8111484500C89505C925113248E2213021CB970E3302003052E62002D59C42CA4186993820D50120489C22D1AB840D4448823272212C445A2448AC218504C248A1B144524A14D43466A0B294D81304694862DC12045A38824003680CC006424487219B128C2804D2099412439090B25111015841CA80D0A82289A36400B447193068E04176040124E903224C9883119455213B80888225214958DC41284DB0029E3B8208C984509120221452C1397000A932C59964059902DD80608A318920B388A0B844911076EDC88311A0426DC48011C425092A48052064261A4690A8769113425214331032865014909DA4888928481C292850AC22084848809250A02368409342CA2C464A10632091462E4302AD832508B940543A02C1B152C1327210BB031A4C0089832211936251B998D0028485990100826099C2241E4C665A30829E40450CCA40940320A20088E19C3891C27821B226D24028D99A06094200512832CA4C01144428AC23008D9108D541066D1264CD1460D2121261889055AC211209071481845C2B2090A8144401212024240DB921018028C1AA609604290184784010328599851DAA48D50B8415C266A08448ED9825050042161346CA2C88CC10084E23051542085CC288E8C426E5B829152820C12204423186204B76949400443244524C04D0D0A7E0C359E388F87FBCB7E1559185CBB3279394FF8B8681F4344FC1A231CDF84BC24861983EEE6434F17A2277CBAD347AE803BAB99453FFF8B26EE6E823AB735C7E0CFF678FD5A41017536F9952158071CF637D5832377CE94522F0EF926A7C955B34951F429C3FAEC19D6D5F21C7EFFBF312FF45D12DDF0E96F8D07CB5E41880E6E43525CA0EB64CBF4CB970C2DDAC0F5A9C97C6D085EB23C44457CFB5436C3964F0B3CACAF5FF1F9C72C0157EE826949CA267C7A2BCF808826EAA1DFA8B0B3ED92BF5A3E96BAE080FF28CAA641EC700A0531B3A6B450F5BF58EB8D2C22D90DE217F724AA7ED91B77B70B45D8DF8E15AD4D51EF694E13B35C9D551F1BDBC27519AB07FE46A44082AA573A470318890F546ED269192603F77D1B4E39C2B314963331BAAA96650E92F98A4F94912BD516FA0D2DF6ABCBCAE88EBB8F19C694EC8287BE20A11777146D4B20362D2A42DDBC8C76B3FB4169B7C948B6E9093F1D25B27B4EA21F4B6A8B3484414C369761D92F4D5AE03CA75B2F957C108FCAE26DCC28F3FFBDFBAB002E9C904A2AA94B1AB2498D01D4698804114730B75FE941684A8D52A0A3E90E22AF6718661AA014CB911CB5A413CF946F598CCC66069113DC6AB3AAE239A586CC06A5EF40BB711E3132520E5B7A423AACB6BCCD839275E1
|
|
|
|
"CF89E281F642152D62D554B25239846D7EDA5EB9C2E15C95DDA451EF97F5762109E3680E1063F84AF128387227A182054DE4E9A47B60CF118BEE66E8A246A99922BF35AA475033026733006A376B90A9C2074A7646EF3AC5E0D9B989CA059F8A4195718E1F5EEB447068BF20140BB4F9D4B31DBCA46385E4FEC9CC373DD5260C17DE5D48556A8BD115F51C8A2175B5434927140ABAD67A1A63057E6BAAA1A79AD5D5262D46391D3E44C59E3A74C289F240F761195B89FBBA0887E67367686A9DE19B6DD1773298BDAA1DC5CB7C58E7083E1E8460A1859ECAF850033E9CE35EFAD7B3D6CA91D37FC7C161C8EE178318FCB767E134EE7D1B1E8E0CD81D1A32CC7D0452B4EEC5D27EC1234CD1E860F35D665A2ADC185680B895725F68B2DAACB90694F6A2B6AC76C9F940FADE18754332EC68C39CD507C7A963A75CE9DC2287A8E14E2217BD91FE715BFA69EECB90657FE82E1D01ED06EE7EB3C3E79B180DD8F2127883771D09AD05ACA90308BECF2FFE2C77F0EF914738309591AA826C485DACD82B7871DA1DE5DD351A706A86B0785CA80FE9FE282923B6EA09B6FFDE28C50E0C3777CA9AF7097121BB893F566C6CAA46946DA74E8050DABCF70C5DCAD4A09AFA88B815039C36B237BDE5A5DC56487B875FC37201AF31BC585B6E2A1ABA03245B4F23FE94D84245BAA2234262DF6E06F7875DFC7A8540F305FF08F645A0CCC9E4ECEE4D242BEBCB6627C03852317F43EB009E48EDEE49040CAF1B00D28769E3EEF0663ED8A8F3FEC21C310303E0433ECB0A1624AE32BD565C473238FFCFE9C10166FC6A71A67913908A55B50595E25AD6D8A41FA200E1204029FF4618C52CD80F14EBA36432991D708C02E0D217BFC509F483A8DBAFBF0305512C31EA2E766525A30555C82F81DB238D4251A3057E95C225D9DE2C0B113B125E0067E5372F6C93DDDC98352A15A965C1F751790914FB97D5FB53CD7DADB0DB7F4B60E5E8C8C4F9079FABC33DBC8DB8E0965468271A8FD9F3DD00CBAFE1083A89CCDA1BA74A3F8F2C0D42820D5EB77CDC5709DE94925497892C5681E8AD6ED945EEAFA770306913062572967627BF2153B4D4BAC5618F9FC8FCE7AAC6D7702952CBB0249D5F1B98E4F264B08692A2F6A9C406972AE50808A46F1E8ECFCF6ADCC161F5D3427571626326C405FB0DCF92ECE65FE4BDD117FC7E77412647C212157D32C31DCDF5805F76C73659E768587E9CBFBE82ABD5F4DAB910DDB8E6BFF074BEB8C04E1FBC1CCA32410134D68AEA19737FDC0D962DAF24B80224584D15CE54ADA88BB3546AD0D97728802DEE144E61EA4325FEEAF3652DAC5AEC97E3D4C33527D2C4FC046DB28C9C8795FF8F7D1D07A1AE5A4206D3E94E4B61997504A4ED8819DCFDB6A2D11439A566003F12BB3F622B825E13D5FD7EF6906CAB2D1DF0AF60175A71109A7E071CE9F89036F27811EFDAB249F2ABDA5AC79C3265489894E2CC58A24DC5A7B1EDBFCD8145E547FFE5F6CBA2208E02B49A9E5429389B496C8441ECCBB340EDB2BF61CA9E3B5CCD71320D7EFC166D1DA963657EAAF13B28C90DAA0C66D144CF04AC49E5496C5361298468F9051CF680329CBEDD3CBA99BA0CADB8334912B356421562E3712FE9E36435DFEE4E3BA17A00FE7127F955EE4F4ADDEF28DF260A907EC549F5228CC3627207AEF6DF02F73320C8CDAD03C5B82243284CDE4E82D076E4F8E7D5405D370110D69DA7F244D389DD4AADFA8A0F3AA103B8E762CAA039BA2CEC25E68EDE17FE54E348C351027ED599A612625DD05BB2074B91FFD558E9EB992BF265FD52A57358C64434E02700ACDE0BD09195A4643E611D79884F861D1AAF0C7AB1EFB65B8A3621A71C2B89BCAFBA3DDBDD68B60FE12395ABF1423F01679B9F23A62D58133C0A77883A60DA076A1EB4D62224959CD6100B2181297A177555F83652279C7F67A50E80E53CD3712A43B4FDA756965D64D1CEA25D4F43F730337D87D708AD832C78FE325A2A36B389DD436FC6A3C3ED444231DE031ACA57E3D2CF5073F800BEF32F7715A33769C391FE53538EB11D6FDEF715A9A443608AA3D1B9F711BEEAA2B2D955985435D23076E218DB7FA173E81F951C1E2C774639C2DB0C82A548B80666E5C751519D7779DE4472E8A250FFD41E574BE0001CE1054F7895BD3E06273A4C28EA896D75FCA7F2E4DF4931C65BFA463883631B8F73C2F676390A78460AA027981336DB1BC4B129C5366BAB6781ABAF221EBB7A5549EA9A381731F948385FABA949429824D13085CB1C2D436C6924F75FCA63D68918B94A58E542F2F5A073898B8AFC7C9344C56A2EB84E17C1EEBC1AEB5E7C0E1AE845B1AEB47EA5D2F516D1D4EB2B246839158BA4BC4471533A8EA9B7798BBE27EE1D06DAEF0812D66F019134C187CED4E38AF0C5C2E2626C544C5D89685391FBD2DF5B97B73615DDD0C3D62B27B6DB110A9F49C722644A34ACB23410E18CC2145E268C9A8C2EF5A061B5419273CCA592C34D5BE1E1C65B7E728A29AD25DAB9D36B04DC9485CE432D7854B454D5D3B3F2DAC9C1C1BC3EEB45CFA4BBB5BDE41544D0BC43123F3C4C9A46FE11127E8930438FC973CFA6C8C5949B6A5956A284036B47128068B80E7DE0E21C172EBE6D001B0445279AD86EBB1B8C7AE9DCBFE37E3642B2BA5CA6B0D11805E33205A5E42E1F1EBC7407FFB2FE979A861ECA5C4592B255664FB1288DE58BCA65AF184C0F7F5F769D4A975CA9419C04DF4CDC3C854CFA6769A84C79376FBC3128071A65B35632D4EC38D3FF2709C842DC51BEB0CEB12269C610D9B043ED71313474584681871008AAB2699AE7BCFB39BEB278C4EECE6C679A7E34CD24DA684DEB4E709AC8931BADDBEF87D8661295799D70309D6ED18A2D16772D
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"5517EAAEA8A2B37F957954A4464C0F361916E1D85C0A769B849DFF42074EF656275BE1238860FAF6CEA1302569FACC201699A06320F189363B730EA2998221C5",
|
|
|
|
"C05550286732C23AA04F5A192554FC5CF01E8B4066B2BE15F27B1421984E5BDC5D40E768957BA5600074D5DA8225C9E9ED4CE0551524C42170D7974C3152BB9BA6FB089B18C06D50A1D186D51F5A3D179FC98CC7BE0B9294E5DDF84651F5FCF95ED7CCD4E989EF13678BD7E191EFF43EDD08C30FD17498A0A3A72371B47A597B3EBC797EBF2D97461CB924201528BF695F93F3309FC6252B7C80F04783DC632F873C69CD649C07567F1BF23613360E8635BE8153EF18B4045AA8DC8063DD8DEFF9805A1A395159E0DB395E9311B3DBBB1D1E2383F30FAB48142EC874CFFDC144F6F1FB5BEF64CE41B6847D9AE6CD4100C736A792782F3423CC77EBA6A130774E174E27D58D0E0CC2096324C9EC0B1419699F68A45B33BDB6AB645A86CB8DB4EDC12C9F620544BD74A62166764DBD8D925ABBC1A79D24FEE0989E456B4E739B8887AA1B8C5F3D72971066C1F3108BED4507015BA705A3039DA48C9294A2C86448C64FE8CA5420B11B12B1A17B5CCCED914499F06C574CEC475004844273C64194602B10C8E330B6025BAEB3D2665B2A11A177C37876C5D6E2117F83C7AAB8B94709AC19A306DFEFDAB8C097E01350A857EC4F3C56060562D8FBD0BDAAC91D61F33753D60464048FA555739F5AC35F5D091BF10BCA66C46C27F0176359288B96508DD6C53A1CDC460EB75906BEA18F1565C8A55752EB9A3C3C5226777B9F19208540CDBE11B6218737381FC81517A2F2F125F0F98950C63203DF9187983CD6B8FDD8C7E484F529128E7DCBF701C3ED307E91A009BE1198974A341FDDB842D15F6CD2F5DE94143826F864182C8223FC1FEDC7CE94484FBC8C5E6AA5A31D7E4686606ADC03B267BB749D397EFB68477AE6DCE8AE5A305C2E433090EAB76B061B06063C3624EA2B8156E03BAF2A3BA06B699E56055A39B173E311619121205D5EA628C3824D30420A41C44C17FA129D5339FB7DACCC2FC77FEEE5BF031D289CE9EC9E7DEA0930F6663288827B54CB0D3EF7E44EF06D6DEEAC96529EB85EE5AA1F8B14506DA2FE671E02A9E8280DE0C0ECC24558C3A52473514930B4BB445DF4BEF8C4917F0BEC1516F115D1C2CAFAF5B66FFBC3749EE31367C8F62961E45D8F861E38362AA50C0CF6791B0BE680A6D6C3E794FACD9A54A1C321A5D5FE0AA9BAF5520FDB052F2C18183823D70BEC8186141B5191EFA50F6F338806CC13D8869A18F8A6923C9595DACCA533772D5B5B52062BBC629BE4B1AE6C97947D1E0507E00C1D9ADCB5567893DD464952F69E2FD395130D1079184A222C78E0BE5E89AFC1DC6788275238EADADBBFA4231ACEE57F28E09A6B102157F0E2A50A71865CA1BE845902B5C9AF4E8DB7846F517FBE98C7654FC747BDC71B057F9C3E42E6CFA6A3C8ED388509F77CD98FD2158758AF9128552FA43E6B5C36DAF545B09C8FD1B175C547A4BB2F9F23257CFD957B89E268ADD14C80DE6C596C13792DDE78CAA768CBFAB4F016EED2328539B840389AF3426628C25BAF6B82F753CA02070E0F54F644A3863925FD3277B2941A0ACB8DE63C8B5A2B77E2D53FB35DF07AFC607C10E3C7E10D8C14A4559B25B13141016E597C5508605140885502F4B86004A1C1DF1A2E6254FC6415B8F30D2262E079E5AABCD2CCA29B12750476834745DC5E452DA9E1A34858C8BBCD9362092CA7CE8C205B10ADCAD1B7B317CA53A966E4E23E01B303D5D2D96BFA04ECB793C5E69D8779E44502E350E99E1B8DDA4CB26B8CA813349B2151AAFC49F383D07807DA0629FC81787B6ED706CACD29630E3056A718AAC46A70A18131C0D4DC28CB1E35F981E3D32DCC459A0C2B2AC4891116BF8659AB65681A08B1515ECB5D2E7A7FDACA13DB2EC2D19F98FD575A5646885E2FAEB778E544B93FBCE9F4AAAF1E37D2EBBE016B7BFCA5E0079B1D3215CF362C971E9DD58558AF02F986D539971094AD14C8054185249C54F0B902B202B35C30A284D99BD178585F4B0D5272DD149FB3AC8793B561F692482CB026C245991361510DBA8B54A234270F594555566C48D6BB926F71D48FBFF071B3388DCC22A7BD79F67D3A5040B702015B0EF500444AF9CABB675C0E11DCC375D6EC3985BFAE6E03C741E8323AEB3386F821F9FAB1ADF4171E294955EEE6EA394071D4FC660D9D4A8140565D18FA79C3218DF2F1DF527D610B36DB4BF9DA6FCC738686CC93836ABC2F245B9937CD6834F5FEDEFB92FB76F670D39870657F31ED575B117BCB90F4810413707715FDB9004EF11355E751BFAA5A0664CD6DD4C18B3613979234F901F595849F26CAC2FA23226C3C2F554CE712393A50A9B7337D3A317A5F7073CDCA75B3E385FA6E325FAD93AE845F5FCD2DC1DB3136BC9A173CA0E6299E8179B603F6435B3265854E476CC1F42D9D459F1FD7B77468D588980902FCB5EDC579C033BCB940A24273937C60E5740C369F96715FA52631BA593DC66069AF9A284EE4D38EC004447DB49CB4F02BF2C75E863794AEE5846137D25E4E987F4BAB4CE6BD99282A74A922D62570B80F2AA73089EF022200A01B1EB5E3BFACD56A5E4965F303F65A32C066AC22AA160D0474129C71D46CAC333E9A75E38B10DD4A59995632ACB7E871E5A95A8965EAAA57B07499A1CD3B82EE0D62EC98F6B64FF2DEF9225651C4769DC3BEF6964BE8FBDD32767C698E0C99B11150944675D9B95EDA566A6C1FDA4972FB0897A5F20536B7E8C34DFF35453306660DF9BE6477B5E74DAAFCFB1B80B90092CF7D609995C8540242F35918E513FAD7CB329CCC9B53D8CF0E606DEEC8AF9B5BC9DD65786F63DF689FD007E8D9BA0A238E5E0D79E34DCE539FA0E45C29451D566103F63E335066C14F36A6DBD8C0928FBAE1EDFD2BA9DE5BB3A351B9B305383662F893
|
|
|
|
"C05550286732C23AA04F5A192554FC5CF01E8B4066B2BE15F27B1421984E5BDCD82D868FC7ED1D0615BF0EF0B9E4D71604393EADF99D13007C543C029330AA19AF6239EBF0A9B9ED51AF707BC4E0B9F1D6B0BFB6134898DDC3868768519CFF17EE53655B01F245F78815EEF1B2CB09EB8EAC07584EF603239853301CB2F74058C446501AB52C01410A13B82509802CD2167289420E490422C1046D99C69100C568C208805C944490362CDB28411040726032615C82706094894B864D60C841A13451C138648A4644D49060424889D8028A4002092141640B4340523652CA3885141140DB1664411288E1B024034531028061D9482A1326701BA22DD41211132780D29231000602C28849128988038185C384110A9181DC482A5B440903160208B1415CA86D03059290C8281241692226260CA850100180A2961012A66C4C166E88022CA1A89110092EC0B4859AB821A2826063320C84C44CD8A0849AB241982441E1A82D9C0225E13070C2320504B181C3220010317222444542384513172E83108A5AA840C886710A104924290514A8718016301CC9289416820114299A104048261183848954268C0CC66521364CDC080CA3266608984822C04D04810400B771C01249E2980919B58D0A37401A2782A4A889612231212852D300669A22490801910494250B09921CC7419482808038325312314A3872E3102601386560247122C93181928D1A3530DC160554B46148068442344619888D19480C02253023948440886C1A9704410082E2B691A4200441344519C92513A76C21363084A02DD9A8105A2242D128600096494C820901242C204068002891E43466D3C80D230901E136882318020B4332DA440013066120850CC4808C0B22009840081C144AE44884591232540631D09068421608CC18504A1831D9284E22896403056C01446A21C02CA3183159140D84302A83C46551A848C1B82160948120424DC22449CA18111316918232824A966C22A64462B228811802CBB8211C88298B148E521890532811A01626890631C1844C00928DA0220C131745E3028299066124386123250D8C80019B12220A9989998089D204455CC62C0317721C90710A32465B466811B848E2C6258388241CB3212242821987044B12458A46490417000A978420A46C4114620B96485C008C61B86004302E52964DDC40481A0200D21831CC0611E4424AC202000A103082326620332D9B9250A226818B488A0BA24D63B62408898D98804599308D42486CC288300B187064986801164A42C64040162AC314201B240E00236A62B80C12160DCBA041DA0265C2206680164A03903021202EA31202D014729B808C914040A0284511824563961000C44C13930D489825889028E116400A424823A621904666A42222DA202AA124081840844B94248128904280881B2025C4344922252E1CB48C1BA19001850D0CC0285B946550422E1A356898086161226C123948D324108A286911864891965191B090A0386D501271080424539849033386A40888C4982D180962A3146C1B019093188C10090658060D00456AA4A269D82446C3126812A64158282294084402A92591C628E2446262B210D4C24844B490090649832285194452A2C249193065E0481104C92DC4B80C800242E312411917100C0569CB3688E12250D1244C18958D4A28300C16320B4032C1444848068289321292A885522802D08084DC3492232111E498514214268CA05144821019089001020A51828899C26C8BB688C0C441CB326001442401238AE24269220871CBA629202411CBA260A192210B3861E4386C43943162A60580B21144168D8448860211891B322D1B314D0B10680AA211DA208A04C60CD10402439808DB860988865113272940322223A94509026A630288033728A1482D99C04562B205DC0608C0C061A41812D894111C411063961124126C13048051A26148082811407159B40DC336880B246002971124110443B404490069CB2885E3A2494298284B280C640046D8482621252204360DDC20664B020242B04512A27191488C934662CC22614AA69113194D0B4868D81271639028E108291439410481110C0010C3B46018222698106E580022C2884C191200C0062A13388122379059024D21388423A640E21832E31432122065C348669B26025B0809E0264C08256210A805D4368401A55112006081F8E041C7C4BCF4C5B5531C44BDC1BFF2ABFE4525A700F9B8F511E10545BF42113078A205896D63EF0388D630E57101B2FA1D1967D14A9E2F7F0240F3E1CA2FDD64558EC3727F5DD890656D697FBBCFC2FCAB056A2FAE795883D05EB1AE8CBAE459192080C56FC26059A687B1982171210527F085C27544B91AD261C564C355185CE009D1DDFF9B7D7BAB638999707E91F20A1ABA031E0354E0806F7B564B5D3781D9D46B4231AE37C8F3072C3DE2FFDAEE5BF83B63BB03623B7C4639FF415677D9EB9205455AA73BD9B3CAB797D4263825B33092D996387D27F578BD0D6FBE0A50564638B7DA17FEA5D5DE9837FC6F9AFB19155F88DFF710C5F96471FF001FB0857D9BFBBA9365D8C881C9D0FBA6CE037DC0FD10A8307FA0C0B82DF5E53F014C7E66198B6D34DE04CC3D41102A25501F20A75E25660721E27F38C15D2307C503BA34044C7E1B40DCB11D3ABEA201CCEA18B314C5516421FC1A0B53E28EFB9D4DD4E85CF27C1B00B610A33F0B33C1562692B6BE50FF48F8A5D0BA6342A16A4871B9B172103612A8D024620AAB315ED9B9951D1ACA82A53F5BBFD50C2356FBCA0EBD70AF863B6AA714F0FF53A3651EE06A6552B677903E5F7D6049157FE40C094B994F48A81EAA127FE4382B1FB9FD3F10A492020A8A1DE7079B10B1CAB6
|
|
|
|
"34442A4660C3CCD84099CC5B261E7070F48D5E9CA3FDFE37D5FF821D39ECE8DC1D4DBA5F6784B6D29A7F27C4B592643C8F27E9708C79CF1DF85F254DF33A988DE5179AF03CD61A717A6333C6335F757830912B48A8C887A3038443A298B62838FA1DE5FF29057567F3D20E8EC571CABAA04041B1C04D8760A1B986DE1FDF51936120E4C9AD29EF8A7E8A430AC90074EB13634A1E0363FB62EE4FC211ED2D0D014D50F4FEA316803268A3C699B0C2AA0EAB009D01CD1DDBD3ED0C9D59985588652F4EA7C8A15EFDEEF83EF66619A8030517112083E166C6C973914B5189EB8944014F542926471C5E08AF827A37764132078EEBA03B97B9A014CE8E906308D016162462079D37D2D9AB96BE5FE649AA6BE604EE7090B1172F14E82480A24574249F94562B666368E7B4118DBD86AA385DE71CD94DD3BA4AF5719CAFC911D19E7EEE5D0E91D0DE6A262AF853724EF92F98DEDF7AD54F22507AABF01A280A87A65DE48A4B99B5197561BFE41F9AB0B10B26D59BAD7631A4358983C5C4B6E1899BDCF35294EBACB8AC9DF6ECDDB9C3EAC23DFC13D8116EC0737BD778BE8B163EE6DD485BE8DB19D5888C2A23B3E0E9E0D59247B971403D877DFC9433EC4A16ECBF7BFA4DF288B958F379F35E4F3EC0FAEA527F8482E10C7251F4478BE562061BE965CC658D63ACB1DF49D33CAA09913C366CA014A2136B6D2F72C01D341ACD5F527B76499328B2248004301247663E5E966F80526930367EB0741EE31879DCA4D4734052779CE79D545C68667C89BE35CC03F9AAB5BC59ADDDCDB56BB29437A4E59A75971EC2DE0A9F1DDD3F2728DA948209E7D42D22C3BB8A2CF783C8221DB6F8E4345C8AD1F55E75F110A5CBFADE4EB2C7F7D6A75544C831B7CDBF1AF5DF9E41C598EBEC5F0B440830C2B0F481095BA76226D0F7DEE866B9EB5E9291010E25A10248E6A9A230BDA7E5B59FE3ABCCD79A99743A3F5341769D6273DCDBB1CE6C45A69E55DB17AF1384704856DDEF54954ADF8829797D05A2A3844B7A427E4F6E16F7DF24D4134B60E77C1F948A0F4339ADCD2F9D32DA8BE9537437EE9FCC3B0A57BE0A41BE7953680ACA68E2BA3F5027283C981FB3FA65DFB74B521BDA991D1D92F3710B18BE6F79A03BADDC1DB04835F211BCE1F724FDF02CB8084CB0918F249AD07F821F4FEAA54FE46D4C0709DD50D26431703E4D45D2521FFEF11E62A200CDCFBB900322D5BF79814F0ED14D73336EF05FFAD776FC36EB1ED6178F172C4EE21C536EA64561EA40C491B1593DE404962B104DC411348930DB7D2115EBE61BBAE702C01D09F899118BC67BD04FE0A0E2A32DFB1C27B62B863BBF697D42A8F532DF3713FE18BFC7B2A904CA636E56006E1552CFC5FFFFA1630E6D68F13FFE365302013E3FA65B7A6116410429A7EE52C7D6D5824BE4200B4578AB1952DE9C18503787EF08091E5CB82A320211B2B1667E81298435832F6BAF50926C65CA9D9ABE8632531D35ED272406B56092457D46E9F30D113F0215CF4868E52F96009D9A57E3053B93F83FB51E64E7296A3C17A34E15C51FC0E9F099CA5DAA37EFF324FECADE721F987886177648FCF2CE965AD02B6E673F5798CFF58CAE5974C8709785D540FF1E0F25AD4FD1294E50A2C78C1EC1CAEF18B5FD746C33E5D45E4E86D1FB3BD4DC8278A55C983C233E7243BA3DB9269238BF71682DA56BA9DF32C00214F9FBED3CD2EAAF252D8BAD88226212B85612AB61AA91C4E4931AACB1A6810D97DF07194340B6EBAB4ABCF7923D842CD436CEB3F8E6CDD1E998776CF96776FA216E1FA401B1A6EB0522221C98BE3D700D6D19D2C9053234D97F0F62E41B44FCD322F45C4B95B2416DFBE7B4EC49828B66B23DEB05C4D96895224E208CDBD65FE594FC549EDFB1FA33C4DD19D78DE739AE5DC1B8CECC3D29B8463A90F3D68DEDEA8D869E50E75AEE7D00780FD29DF2F25DE43D542B72CC108F87116D2B090E03D9262D01C8F225B2616F2137618FDFA222B97C9609B81DCF51E56FC5A4F0DB41A6DF7A55897E177AA1ED9B68949C6546258A080713CB623ED5462C822F27C6D7858A3535EC260B1FE6AE1583526E4F4249572FF91B440FEC1C19698FBCA2CF6EDB3D4879514ABE36D1C06E92508B5AB33E0C664FC88B83A2DE3BE332D1F7D78540CDB0FC7F2F897B0D7ECDB4B034C666BE26DACDDEF81AD82C37378C7CE34BB609D088DCCF83B97CB9F51FD515F97E0B575E97B4CD416BFEA2F7758E3115787627B57B380F14BCE12D738B2FD4375BE0A17D07BB3FD2E0240A249AD8255BE91276CAC025B6D26542459DF77CB2497D548D370AD49C6BFA2588D368CAC6FB12349837FF1D94E9DEC8837E8955237AD25DA9F9AD3B7D9BC1E501880E29DD161487E8A4C7BE0D03E16B07163E09B3A0BD9C8C7CFC73EC577C324BB2279ED6C9C5B956AA664BD3F01C189F21BB6D3226D1875616727E665B62FA59BF7684ECB071F1CA4CBD88784CE516C30570AD766BB21F6631B879F5C5AEA50A5F05ABFC45609115D5961EFA8175323E230D73EB2F7015AF62AB84BDFD3EA3ABEF93D5887BF0D705301FDCFD229F955553CF4950201DC0A8DF4AC0F262FCCD2D29CA6067368E40AC933B677A5311D9ABF156968C5D1E9F5363C1F2807A20B16429A516FFD37F4F059E879E76ADC3F0E174E9B2EF75DFC3CE4859843454CB7D53E67FD5A2F5E80A94EF3E9478293EF5743BB9E73F614AAEEEF2CE8623F63C3E18CDE41868F6D40715667B50208AF78240CE9453B84D6B4E2AB7B089075F69C2C505632E11AD361818135CAC01CDF8EC97C97D2BB7107CAF99CDC183081F98D21D8FC0714F1CFBB7F988D75080835CA417F4B0435DF6B5451D70CB6BCE4F4EE3EA12CE98CC393B6E256D
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSign87(t *testing.T) {
|
|
|
|
var seed [32]byte
|
|
|
|
for _, c := range sigGen87InternalProjectionCases {
|
|
|
|
sk, _ := hex.DecodeString(c.sk)
|
|
|
|
pk, _ := hex.DecodeString(c.pk)
|
|
|
|
sig, _ := hex.DecodeString(c.sig)
|
|
|
|
mu, _ := hex.DecodeString(c.mu)
|
|
|
|
priv, err := NewPrivateKey87(sk)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("NewPrivateKey87 failed: %v", err)
|
|
|
|
}
|
|
|
|
sig2, err := priv.signInternal(seed[:], mu)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("failed to sign: %v", err)
|
|
|
|
}
|
|
|
|
if !bytes.Equal(sig2[:lambda256/4], sig[:lambda256/4]) {
|
|
|
|
t.Errorf("signature mismatch(signer's commitment hash): got %x, want %x", sig2[:lambda256/4], sig[:lambda256/4])
|
|
|
|
}
|
|
|
|
if !bytes.Equal(sig2[lambda256/4:lambda256/4+encodingSize20*l87], sig[lambda256/4:lambda256/4+encodingSize20*l87]) {
|
|
|
|
t.Errorf("signature mismatch(signer's response): got %x, want %x", sig2[lambda256/4:lambda256/4+encodingSize20*l87], sig[lambda256/4:lambda256/4+encodingSize20*l87])
|
|
|
|
}
|
|
|
|
if !bytes.Equal(sig2[lambda256/4+encodingSize20*l87:], sig[lambda256/4+encodingSize20*l87:]) {
|
|
|
|
t.Errorf("signature mismatch(hint): got %x, want %x", sig2[lambda256/4+encodingSize20*l87:], sig[lambda256/4+encodingSize20*l87:])
|
|
|
|
}
|
|
|
|
pub, err := NewPublicKey87(pk)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("NewPublicKey87 failed: %v", err)
|
|
|
|
}
|
|
|
|
if !pub.verifyInternal(sig, mu) {
|
|
|
|
t.Error("signature verification failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-05-07 15:08:36 +08:00
|
|
|
// https://raw.githubusercontent.com/usnistgov/ACVP-Server/refs/heads/master/gen-val/json-files/ML-DSA-sigGen-FIPS204/internalProjection.json
|
|
|
|
var sigGenPreHash87InternalProjectionCases = []struct {
|
|
|
|
message string
|
|
|
|
pk string
|
|
|
|
sk string
|
|
|
|
context string
|
|
|
|
oid asn1.ObjectIdentifier
|
|
|
|
sig string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
"798A4CBE5028992A2CA711AE771A548FDBEA53EA6722284DD179E1486E20FE17E60B22DD2D3C4DD84B0996D8DFB668F9A4DDA611EF5E039B687AFA9D01E533C27FF064DF13F86C81FC42486ABE91C7CC17E32DA2E37E084AEB36D699BD4A1A9474546AA7827FDCD27F8990F7A8EFD13F13B8E71B79A717EA97E75FF0CBEC0A8D39F15990D0DB85FFFFA74AFA689F314B26A286C8D75485CEE53A82077FDB7ACA83F996DA3AF8E19A81BF70FE75FC241AEFDECC45B68E86D0CB9388B27506BE6FA6C0F68DB9202AF3E73C575E2550616DEDF80E3D4B208A7A8750FB64EBC9D7D91D954FD76A1212FD1C176640090E20C7F8747B4DE0DB05F69761A0CC1E460B4D7D616C45175AE26845EE19501721DC271C1AABF616543A89DB67324C7A58EC36687D62E5363DE1A36B92A11A65E05EC9AD1B240B7D73CAE046A282F9FD4DFAE7097F3175EB89424125286AE134802C5E602F99753FF5B599F24E6F787E07CCD573D69A913EBFF947906401330DBD2EB61B0100C9236EBDA3116F34E5D1D3A5275C779E6336475F61F9BDE4FD99C7092634404C242E284D1239D1D99E20F30474629BFA16E463F667252FF27181F775EA0E54D9D54807C3568E82C62DAF8590EC2E65F40FB1187B0D15942CF17EDC9500FF8824B1DF32DA57ABAC2F5F710CFC5121714D16F775733206B908225F6E02BEE2373AABD7B25D7C7CEC84254B81C71DB78B60819A78373934FB633DAE564330D17AE1382AB3DD81F3E88F2FAEA72E69F6B679A29ED438C36F645FB43350640B1B33CC79EABDD4302DFE56D23BA79D93B0968D13625F639DF3CCF5FEE40B8049BBCAD64C3BDE0083CADB0102722B8F656344BFB49920D6F1800758EB419E0C2F01C8FECB0C01D8704B27333851E4A54BB7369DF13A8211BA96E24D134F4BABFD1352E61777479B0035FA36ABDA6CD4CD1AA736EC9C2082E8E07612A8020D6A81D30EA525B1C0F3EE233A11BC6AF130A98B4F20B9CC7E0CB87898D76B35BE3A47B7A09D0B155F1D3B61036AA8D9FA80B7E147673D5422227119BB85CFFB55F18DE2EAB7EBA912F1F28C75DCEEEF2573FE68D3C0274C1D316F8B471D0652AAB13DF25ACD4CF9E88BA16EB45A8691ADB836C1D879AC92E4E8B037B1D435B35FA6E7FB6D9CA85B35D6E280520B35CD68205F7DD166F991ACAB8F022982CFCB0CF47AE928EFB10D350728D10B593D73EAD9BA819F41A8DA8F0FEA1FAADE635EA7EDDA907F1FA723A1FEBF794188A097CA39E08CE177B8E685FA09CF12530CF4806A5AACF108ADCB669BF857282DD499DEFD72B6D3E4C90299CB992CEB0DBE9A56E7A715227F943DF0B470AA7952B21E26F4DDD1ED62DC28807C2C85459D7FD74672AADB4CFB8EBCCE6019AF0C497EC651DECA6BE5050D00C3F311B03B629D09637DF3F81804FDF160C2D6FA639F1C912C67E8E3A6E3543A6BC2DF49ECEE7EA55B7C4F28DBAB2E3AC2714E3A3F78C3A23DFE9EBA07F886B3A6CFA3463FBF62AFFC16732742598FCB22F0DC2C96FA090E091E094F9D7BBBCEA491826B76502B9E9EE5344987CDC1464D3B36C3C72A45283A19976A5E00943160FAF404A0DD0758B4A357DB234328A189674F32AD1BC8999622487DA9DF41F5C1588DAF6E4BAD9C6EE3DF8FC3DB4A8296414AA0F55689EDA9634F4D79753C93321BB76DC6BEE2D3074588360971FCE570C2F2E573741078C6536E501FB4E2F61AE801C0C1BA448927BD1406CE4F4117B46F025B6C567C34DB78280B4809911C4C56864A89B055721E5E3CF0A9ECF0EE5FB65AB1D12E4DA1338A70162D63E763AEBEF2BF3EA0CD0E20D38AB9F7B0BF4B8E566E2F6C3FDA3E16C5EB57BF7546A81834A068387F44CDE5C6F1AB6C63661EE22F8B740BFF974E262A3E826EB3D5117FF61D5ECEA17B1ACA7A2F048E00695448590B9486C69F35926E09B39A0E4715CB7FACD6B8AE77EDC4123AAA3529BC30DED891B6C9A0902BCDD60C468E402D0425652D4B30482DD90FD43517F16C0C9EB498F3C7136D7AF9CADD1EE68887C2F92A2B1741C871C8D29FA42344995B09ECBC94CD513957303CA7F6BCF91ACD7E3219CF73FA59C83382E92D1E43AA22EF87D639B306B9DBC89D26700AFBF4B2FFBEE8CD6689E2DF25709B862D01F457ADB1F1B1AB1A8C66FF7F5855DA7E39CE09162F139A58D3E0388253406CB95B20F301EF43C9FDC82ED282253A691B6279B007408822E8589DF5BBAE74495EE825B9C1713CF8E9D6499F51FBF2F5C99BE7F79C9E55DE15E2643EE72D9F466880CE751B03050259164F5D1F9E044C9685225AF5DDC92C5E40BDC773960E3833683D5648897BEBF6DCD466CBB41FD2A9D8D4F666D3AFA5D717FF96EFFBDE2D7C1A123E70AE246B7C882EA582A0445DD7ACC352C38B5346A7AD056DF5F774248157070F11F67E6D2A9881B9195653DC84F48E63206084842A2434EE1C4F04FE4247FCD67DC851650FE3B3480F7E6ADB9C22BCF9F5B76C7D2D85D8635B8E51DDE091378332F0FE41ED841B8DDEB2090287907D6D2CE48F7ACB2EC77C0A3FE92B7191FA1981F26C198FE9DE853238ACF501E2A345B9C26FDBABB8759E0A8E2ACC094DC58BA70BE52BD536309BC03B3341CDD10B340BF378361CA225661D4250C0859EC1657A7AC60D17AF3832F98B7DD11F93E05B4EAF6ACAB23F056E18FCDB0E6829273E0C52D5AE2D59E476BD2B7622103E62F850B9E9ACDCCEB84F29F467FB26F65D6FAE8D10828C3115385C47986B8E2E6280F80104C698D5CB1DD561DF429241BE5696055172BE5BF954808282A8EB8DB00936F93CE44CF474FF00CEDD858595BADEF083F83F38987935E650BA0DD5CCEBB2E765D74D1FAFDA8E44890B3890E0A43A905775D63F976E0D465C
|
|
|
|
"24EE9FB4E6580FAF50653BAE38CBC7489F234AC6AAA53836958083BF334A82517263674B1A3DD47BFF53303FE54A5FA9E06E7A53B3268C65F763B3ABF24081CF19AFBCDE1A5B66C80305F596E578525A6318C2B14F8F8495E15C310AC465BA07DB4C82453F8DD7612FCE82BB654848441001E7C29CE741DD73D2DDB856F581B06C1B30FC0AE269C564AC78E0015AAADC6CFC051A7F687BE39439394C1176190C267834F6DDC1526BC21CE8FB1AB0AFA26D427A24D363E0BA9EAA24EF1E2B17B918F70D3EBFE470101AFEACF97694AD56193FF592C126F16F9648F6E6741411A84A89EE290975D94EA275702E84ED78A2786B7FCD9617764ACF5A6B121E1111117380CA7442682ADF63F702298A6085FCB6E254121EAE5D0011750FAE5808623C89E17C1D570FCEE97E2B9CAA38632DCFA3D63F9678B238B8B65EA845831DC831E3E566C65B92DA528882191C6947F74FD562A962C6C30997BBC9B3C132F79A0C8483BC0A8B930EF0B92F2B312A6030A5BEA13630E9A9B1C61F30CCB14AD9296B4DA7DA9E589392D66BD030EDC9506DF3BA12DBE31D20342AF2468CFA15E790D51FCC967F4279CFD85A0E5CEDFAE2F15A68AA19EDB7AFBE7D4F39238358E1C527AE546219FAE531B402D15331410CAC8570CA15E54959F6549375ABF3E6EFF27083AD9C7A7AE8D3CF2D04554B0996D23F75C9D37AB7621491760F327434E97E59515B84B3A837C42593004A28B9092263C42C8F027FA833B9B500740C13DAC02732F7525E0BB596E86C1CB09647927A09F8581ADF836A231A396C37776B005FE7E0838B747F511CC1876A7920A95AEE1DB5DE8B6DFE6AB99458D16146DF521EB0E16CD3D737128062F30C91AE1C64419534BABC375E2CA3955B39E93693B67C6E1F60A91EF0A2BAEE6C128D7B775D7E5454AF5D9722992DD9DDC522DCD95F6EBCDAD77ABE02B9892C1EF14167A7ACF31B5F71EFC20190938633154DC2578F1D65A81EA4D3A1E00FB454DF4532CE04F7DA85DA4B7C65129CFA7F60672EA646ECCE5AC4FEDE6268C45C14232F53AA581D2F1818255CDFE06497E2E0AA0F05D5C48AAA456C23D9FB83C6E81C547D929607D87E436BF8AA45CF6F677CF8A8360EC650FECD854FBD4AA2100DB884D21030C53D370E94BE5EE7C89735DC42CD16AF3D0A8ADA96A746759522BF152C5C829438EBBB36C51620B81E177FEFA0033DB735DB644E81549A70CD0245308A736DF0A9EB7EB4CD5E824D21C2C4EAB1EB3A39643231232528CE1678BE89EC74D1320847C9F264D988093A4732126389C8E5EFCE0CA465B5B75B16E0E66F8B4DA06D400D47F7CE14D14215D6B2F1683B3806C04700811C28380BA0676C033A016DDB0EA4065436859C6EB4ED9F6D463D853FE35DD57B2BAE4C7625C17D304A5C84396E4401E29DCCD54B01361FDC82DCD8B9A697C98AC5B7B54D696B11FC86972640AB8E4C5783ED83611BEA4E1569989911BD13576F28861CA73DA950EE6E1C45D813F157A9D21403EB4FD233234B2249875BCE677F038330961DF9C06720F9D41BD8CF3FA80F157DAD544EFE27364BD1C786B42905D67CA8B68E99EFD9D5B0751DAD4221375675C6E003CF2FBBF1B3E9D1928D67DF5CAB335121B905507CC0ECB3C4E23588FFF1A176DD19D2E4F512BE58E19E0F7D6766FD05F59239D9F2D8C41CA1DF5B82D09F75487C458327882699A0BCB4763590A222C127CD437A663D57B8CC8E08036CD54A138938DB30EF7B2486D2ED5F65725119017717F5D6C1902F3D7486242F5D0C65C2E9E6B550AC0CAD4D78887C46FDC2BF1C5B567245F92AD4D85E2F099E1320407FFB3BA2FBC7F4D8DD32C2BDCFF5DCDBF89D9CFF62982E45E5193F15851EF4C23B78C51BC2AD9F9383AA9F4F938A651EA5803DF2AB947B91888BE88501E69F4939BC7AEDEA1D90806BEF9CCBAD90D46F178DA8700C091586C5AD767161E804774A2E3B2C8C0D3B8207D359557B4DDED64EB0F4A57050B8C697BEC11B215B6583EB1E2A1FBDAC3A7A56322D01FE326D9359CBB58D97EF956D0B3963B3E4DA1DC0434CE0B6CAE4782B766390F4E063792066F5A0C0F2CDF17D9C8C88DCAD9716B0BE405CE8E9FCA1D6E8B3489BE71CBCA1AE05C995371BBCE6BEE58810C3480C44B2647A2F4432131959E4C3ED21D1EFEE17EA70AE6BF5558FC0E9F806809B1060479B4D5EA2D469533A65D01F88C20665819C65A4F6398C64C480FDB2234EFC72B8B49FF36D1A8EE8AE096478BDDA19D9F5D3AB777B6435E8C61EF8FDF294F4DCDC440F0B680F3011C524DF9BED7541B84AB05AC5EAD832C99F71278C9C10527CAFF9DC9A43B64B37B3033438A14CFC734F059E83D50F13CF6E5FF7F75972A55B19ABD846AA565024E8F16FD2E8F51DF588EB936C68F2E374F020ABFDFCAE9990E4583F179DA1061E97B30305B2F1322EA9BB458E00D31EB43854335894EF43508EE0A15AD15A6959D7AA10FF61B350E1E5F1CA22089A6D91DBC33C66F0F048CE6F35BFBC4D76002535609403191B752485D5C0DFCA875C2974788951547E50ADE43F996505A20A75BE57CBFFACA77FD12D8292D195F2172CB2F09CDA37CF035FEAF741E808F58E700D5089E99FB6ED8FAB66E02D7294D79CC51F31086238986E29DF840A9BCE30670A7462A00CE503299928FB378BB8F8005261E02D6FD279D180A00DDCA9ACECAB12CFCDF6ABD09457C5020473CE9350F49E15175C782A95BD7F7FB3DB8C7907C9F1EB0F2CD1A11CC1C6A61246342E19EB53157226F3B9C6F2C9EB64A4BD6292391351398E48ED34ED2E89F57BCFB9FDF8E8CBAF6A527CAC7691D34DB6A01DA5A50A02AF46A8C3648C4F02058676DEE98AD476B934D20BC841869D4570F924CF9D480A
|
|
|
|
"24EE9FB4E6580FAF50653BAE38CBC7489F234AC6AAA53836958083BF334A82517826D31062EE55AB094CD62964F4A272045EA7BB5E798AD119219DD5EBE0D72E4CFB513ADE7905744BD8AAE33A5ADAC3FDFD1155777AA4C478DACA04DEE6EDF2AFAB8F466E3238D857AB7C32154D6F929551A1DAE6BC75F238F848CCBD73129E64308A039601D34400421062D2B0888CA48CCA144513056C24962D60944C223929A1000803008011A73001266ED0866158322081106EC3406202A0092047844C9224C94486491642C3164CD9B28D22244D52088110943120B4851097411B476494202E98442A19340412422A60406C13B92D194524089190DB886DCBA44DC40460D224008148468910321234601A346D5C0851092466D2B66981408503268A64186E0A1045CAB420E2922812233141A265098009D4321281C661C3224C5C924C41A82CC98461D4228612832C493250533266C11026DB065282C6719A308424492C53A4401B016A01944592028D00020EA03292534844C0944983306193C81094420C21906D1B354A804026D8C08D10A2810A0469CBC24C821004DC4271180902CB4605A4900D2382212199311C222620270618C5898B12500A304E4C16418B184EC3B0208C9268E4A20921248D0B4900C998459AC42D59A26019908012A531C3362E54263048448C62944082429213C48422C5409AC4484010505B0002C3448CE4C68D0C078EE1B4085B001111237021868964366461C28498922954300A19251121452E0396698034029A3281841681412688C0B66153C44DC4826804336102414912B28410462223B829A4122AD4209154242910408C9B206EC23086A41226CA0092D90492E3B47061C225D21006229300E3C89059266C54002AC14212E380705B46504418414AC20D4BA88C03438002905021480294824090322A6290640A922814166962B06051A250C2066298284618C025194320D40240122525582870A100811C4789538428D0261019B66C10828DA42888DC8228124930E2002400292808301001351102182A54A464D3886CC3A6101A37661406495826601BA22992440D18126AE32406E30604C2426D4392294BB065E3B88952380523B06C12478990C8310B1648A34421020208204611C0382D5A440600310559008450C29044149124C748CC282224986819298C0B018C5192658340300121304A24021A99449906280821921192000C3740D23222A29000CA300A89426091324A48242EC8048AD44860E2C0098BC65190B80194B020D9A02D9AB20C909470D88620600670C426084B34458C148D892810A2104E52C48960246022C44C534004C8080854140C03453119386AC08849C4C6259C488E043149484400D3466E18476600254E13A8659CA261C1488DE220724A8050CB282A93166CC320218CC60CE2320D04B49162224DC3268E0201725C26406124281BC4649A240A0226300208301A30702181409B18225C240089C880C1C66D4CC264D9468EE0A42561264EC2488CA4905091926482383221B004219350200185CB0446004585014460C82685E0C2450C37928A82108C36806244704444881BA61143920D48A608A2368989364D1B9470A4C401A30822E4026C1AA95090464E14252C59342514312AC9082A8BB471D0328414A58141084C0316310211860A499109000C0A28225B144243282624022C20B32D594872228944D0988D40926CCA28054B446A13032D4B94510B94090921818020455C880400395261048E24B46064026E60040A42960C41964102C64D0C104824C10848341101348D0A102C18B02599C681C924649B40469BA251183846A190054CA28511486808208AE0C420149768C084016112310420900A21440CB349C1846422278520A55160C05043140D9CA8854C182E13061000046A538211C8306AD98065C4C24C10480E2232698A8671993012D084080B4830C9102D0448459B344A89362CA0B60D44281149B649C3366481344EC44020C21252DB44450CA110C1000E542068D9C82D50382CE3066E81C8680B0231C4240D6214015B242D911061038669034530D89650A3966902354149906012A34CCA1649CB006A42008661B21021C0902024600041109BB065C9A88C4C268DE4029291B86CC2A040E1208CC91001C2B20908B3018CA845D0A210E23870E0C8309A960890B6010C022588820820106220EEE5A42B6FB632B98ECDDE09FFEB9DA7AC6915858F66D030804F7B2E8C9E88D15B7F4370BD8468156A28BC0485AFFAD418A16D96927DD599A3E59CA3479853736BD5D5E888C53BB9BE0184DC26754E6AA774200423F21831D0FB5B472B273DB62EACC8F92E88FC61EA098E589C3AD3B3480D1724A7E566191142FF26E068191CD2D263ED35345C82B6816BA60753B717F2B507CACB6EBF5ADE3EA1D416A8BF8CF48EABCEB9BBD93415D5FA878874125A314E99EC437DE4DA612562E41C009019CFD70CC573FA2E807DF2D961F850D6BC2BD530F0C42FFBCCCB683A603209B7919A587913CBFF44069076DC83F30A5099012D9EA17372C0D54ECF45BF1697711F8CFC908C6AFA1AC9DCC2B6E9C42D7516F01140CD5F7E3057786168B56C44F0AA9FFE466ADD343BC2FDF3AC3F6A7C50E5F83B2B0C187C3EEC2A34C024EEC0D3EAEB449437532712B4BE852A5E86354509C23B5BE591AFAB2DB851BB9A1AB7BF055F8910ED0D26C1405595D10DA0045814372799D20F6314FCDD6350B21314AEF8721FFB3A342501D6A9C473E54FE3514D470285A7799B2F765D5E64D30C00AE481A8E5AA15157D97C35D17C1CE70AA7D51C49EEDE429CFB16DC925AF264A5A0191CCEE5847CB70B104877A77008CBEB37092D7D43F716A907F7813F4944
|
|
|
|
"EFE3EEF8C2A34AF7C41CAA310C379C51B63C1575BD3B61866D0C05917C0C8B09EF32C91290D1",
|
|
|
|
OIDDigestAlgorithmSHA256,
|
|
|
|
"848D4CEE6252A98187EAB773988F62C3D147CAC5ACB1BC5462A01CF157BFC37F7A3891AA6AE1B116160FC526E58F39B447A497AA88B270C80038A62EA11879E0D10AF8A3C1445A9083927E04623DD627D9EC5A4D287334393DE785EF5EBE5C215B92279B907F7AC7ECF6ED0D3370112B4FC58112C2B55BEACBF27BF4109495EEC0EBBD6B68C3E83CC8FD0C1AE8D29A070C4CEE383783FF548F92FFF500D9AC26CDFEAB49D47A9A7074F8CC408D8E18FB01120D62DBF9FE6CB4D15074A689D5BAE46E763827A2EFA8EC3038A26046DA9BB684E228D0D518AC84DB91656230E2BBD0F0D3986761FA551B6F847F3B0644E42DD44365769DE9CCB5303F87718C629E7BA6EC4979D375FD8EB949E4402C53E6E24194445FC0D26D657E3C15735B717249A790D01F72DCAD610FB64CEF95D8075F3BC30A4215A697B71A3C7E2E3605736F0FDFD183E225C113D1D4DE67B2D9D2E921138B85E4CFA07C608F1CD4DA5279CB69ED35C720BDB243B18F22EA9C6FCD8A41B67DDABD43462A971214E79E39413CC108785896824B29926B7F8D8AE2A5BD7F341EC14272EA90D1A308D9746FF82E8B9D35FDC2D322ACCEDA6A74FA08B702CA4E89D4680DBAD4ED10EEEEE3278432366828709DB4E49D2F4FF065F0E672872F5C7AF50F3C7193D31EB2920093E2A3BC069C29FFDA024734F9DC35AF69489AC277A573392388A48A96DCB8C49826CCE8B8231D6064D1F40159F937D5708E88E9EDABEFD7F7BD061F7B964BF01409EDD99228C01670EC43817A9A8C04F373B2BCA234A6A9CB2921F21DA292BB58972446E76EF1A667A79CA1C52424BBF43D17AFB03F28A1E8F0B750056D1A4C3DC7ED13180C29CDD93168571EBE0448EA7738B4665B2F2E3F40E01953B0E901303CF11617DD7A4F094432C701014D737F226EE132216760223EA711875A6474D1B896B829E5CC8BAF7DA29E2E7383F70AC85D8BC257E36E62B8C6412B9AFDDBC41170EB32A1B9BA976B752F16CA5BF0CDE22070CF131901EF25BA3213498E39403159360CA8E9F8D5755D5568C504C3E19829363D192F51D2C1EF61EAA874C8EDE2412784C89133E39B6AAEA196AE24BD477FF178E2BBB8D1B69DF7B78222963FA297F0146AC59C690B9F33B494B5EE812847EFA6F29FEDA455AD82F282934EE969980EFE9BBA36A2C78C3CF5A1852D170D94D78C9E53848EB5355803453B7DFF6BFA5DE17775BD74A0F810A1842BBEEF3FFE3C1A410F197846C49349365A396E6D3975B4C8BB0CD8954014DE659513C839F39C4CFB25A271C5AB69170DB2482985CA28AEB4473C6D5E627DB919F88A3EB1D3CC86379091319A9CBC2F5F546EE9FDDDA514E75CDF4CF4AB160144B544E9367F58C44C2696676688FF596B85F97577F7F8047F40C30AC47FFBE9A11DA5ABF730B1687758A3767DF0F1922CE65FF4DEBC3985AC6FA8C06987D49C4E0250E20EF9B7EF910A69152D84D2292EE6B21D77CCE00AF11A093C7194BFD39350F08C20E84A6F71ABEA9B3EDF082AAAA25438B59A056EAFBD893E368E42195C63952AC572F7338F4BC855CFEA5B5E42D8C84A93F52E73F3EE4EE1531BC57084F0D8441DC7274A08B57667B97DB7110A41D428DDFAA845C80F2DFB1FF7FB63EFA1C44C42727D1703317A0FCCE38D0FDBE3A1B16A848B15659F3C3829BD2EF5AA517D4EEA7FADB02E5EE402CF4462A759F28F2383501C33367425B0DC4DECB51047BA1288EDC5B0910658F77763B6D7E653718F6CEC250D581374C5E6BE0BE12D8F22E282230BB8D1278D35E47F187210E80523B1C339D700F5E012FFAF29B238EC0A08CD4BC9F7827A5830E271EE63B75DEFA012874C95DD596158D5F35C2E66FFEA8DE6F8A3B4370CE3AB9E742FBBB65F4D0DEE9951AC0C47F83F1D947EAAF90A2D3D0A61746DC22536B1A4CE79F40039CE8DD14674EF28F8C5B42E6785F9C77359F176E89070003906F1694B4B992FB84992C2EC5CE1CAE2C731725F26ABC53CF07C976DEA7A63F6B5ACB203B394B779299C036DC1F0F4466641CE970166E0E21F3AF337148E6AFE5DA2E1A64AA3052281C9C48F7B55D28551D1B7BB4C9ACA70DB8BDD98657D6320A20A9E4E6102CAF2A85176EC4062278EC4DA44AC8FF5B242759AAC79110887B4D903F0121D6ED78741A44ED77565F91BBB9B5EFAD4EF606B1E7D72C08E79078113806C3364322603BE4F995C90907F78C26E6C94ECD197B62943111C01D0D7F911168F5652911C5EC6B1FFB14EA9F3710D6C55816087A2987AE953AD49400E14233BB395A06B6237F7BCC8F16E6184A3378B598AD14DCC20D27618164F371364DE492772BB85FCF56848C82AD2B4B714CE91320E7B1929B21D711BA0AB16466A383EC347D54A9DC31E78F9EE8F74A9BB0D34995830B6B75CBEDFC9A6CDE27ACEF8893D96C288E9041B1B6BE50C1D27EE78DF2CA614F7F1BD194CFB2B0F1478D74B8D24917277313EFC12F17B835EA3BAFED113773AFB6E680194D823E2AE51D2E07739A1EED7458F82EE83718FBFD75DEA86E50D112E57DA46813064FD7EB2C0DD094EA54519F3FFB1F0AF0E3ED3BC128A822AF04F0D5660A9646920BED1DFB8426C529A9130247D3204CC40EB5AD2D807CE29356E015193F93FB9A5BEB59BEECA6AD11F225DBD654A26ABE837F0383946864BCAE71C92A0D75464C958EEB0CA823934E8C07D95314C5E7302D3103C3983F8824CD818913A4D626D60F357E13DD7CEC3206171AE96434F6635581486B0401AB0ABA0068D1EAF1F3C5E2EB34013BA9D9168F427CF0C103993ADF9153A7267AE229D7B3C015E7F0B7D122168739D5D5B8958B0AE7A63DEF9647A5063A548B2886D8972B69999B4CCF9506AEC3FB6A0EAE5841674AD6E2F
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"798A4CBE5028992A2CA711AE771A548FDBEA53EA6722284DD179E1486E20FE17E60B22DD2D3C4DD84B0996D8DFB668F9A4DDA611EF5E039B687AFA9D01E533C27FF064DF13F86C81FC42486ABE91C7CC17E32DA2E37E084AEB36D699BD4A1A9474546AA7827FDCD27F8990F7A8EFD13F13B8E71B79A717EA97E75FF0CBEC0A8D39F15990D0DB85FFFFA74AFA689F314B26A286C8D75485CEE53A82077FDB7ACA83F996DA3AF8E19A81BF70FE75FC241AEFDECC45B68E86D0CB9388B27506BE6FA6C0F68DB9202AF3E73C575E2550616DEDF80E3D4B208A7A8750FB64EBC9D7D91D954FD76A1212FD1C176640090E20C7F8747B4DE0DB05F69761A0CC1E460B4D7D616C45175AE26845EE19501721DC271C1AABF616543A89DB67324C7A58EC36687D62E5363DE1A36B92A11A65E05EC9AD1B240B7D73CAE046A282F9FD4DFAE7097F3175EB89424125286AE134802C5E602F99753FF5B599F24E6F787E07CCD573D69A913EBFF947906401330DBD2EB61B0100C9236EBDA3116F34E5D1D3A5275C779E6336475F61F9BDE4FD99C7092634404C242E284D1239D1D99E20F30474629BFA16E463F667252FF27181F775EA0E54D9D54807C3568E82C62DAF8590EC2E65F40FB1187B0D15942CF17EDC9500FF8824B1DF32DA57ABAC2F5F710CFC5121714D16F775733206B908225F6E02BEE2373AABD7B25D7C7CEC84254B81C71DB78B60819A78373934FB633DAE564330D17AE1382AB3DD81F3E88F2FAEA72E69F6B679A29ED438C36F645FB43350640B1B33CC79EABDD4302DFE56D23BA79D93B0968D13625F639DF3CCF5FEE40B8049BBCAD64C3BDE0083CADB0102722B8F656344BFB49920D6F1800758EB419E0C2F01C8FECB0C01D8704B27333851E4A54BB7369DF13A8211BA96E24D134F4BABFD1352E61777479B0035FA36ABDA6CD4CD1AA736EC9C2082E8E07612A8020D6A81D30EA525B1C0F3EE233A11BC6AF130A98B4F20B9CC7E0CB87898D76B35BE3A47B7A09D0B155F1D3B61036AA8D9FA80B7E147673D5422227119BB85CFFB55F18DE2EAB7EBA912F1F28C75DCEEEF2573FE68D3C0274C1D316F8B471D0652AAB13DF25ACD4CF9E88BA16EB45A8691ADB836C1D879AC92E4E8B037B1D435B35FA6E7FB6D9CA85B35D6E280520B35CD68205F7DD166F991ACAB8F022982CFCB0CF47AE928EFB10D350728D10B593D73EAD9BA819F41A8DA8F0FEA1FAADE635EA7EDDA907F1FA723A1FEBF794188A097CA39E08CE177B8E685FA09CF12530CF4806A5AACF108ADCB669BF857282DD499DEFD72B6D3E4C90299CB992CEB0DBE9A56E7A715227F943DF0B470AA7952B21E26F4DDD1ED62DC28807C2C85459D7FD74672AADB4CFB8EBCCE6019AF0C497EC651DECA6BE5050D00C3F311B03B629D09637DF3F81804FDF160C2D6FA639F1C912C67E8E3A6E3543A6BC2DF49ECEE7EA55B7C4F28DBAB2E3AC2714E3A3F78C3A23DFE9EBA07F886B3A6CFA3463FBF62AFFC16732742598FCB22F0DC2C96FA090E091E094F9D7BBBCEA491826B76502B9E9EE5344987CDC1464D3B36C3C72A45283A19976A5E00943160FAF404A0DD0758B4A357DB234328A189674F32AD1BC8999622487DA9DF41F5C1588DAF6E4BAD9C6EE3DF8FC3DB4A8296414AA0F55689EDA9634F4D79753C93321BB76DC6BEE2D3074588360971FCE570C2F2E573741078C6536E501FB4E2F61AE801C0C1BA448927BD1406CE4F4117B46F025B6C567C34DB78280B4809911C4C56864A89B055721E5E3CF0A9ECF0EE5FB65AB1D12E4DA1338A70162D63E763AEBEF2BF3EA0CD0E20D38AB9F7B0BF4B8E566E2F6C3FDA3E16C5EB57BF7546A81834A068387F44CDE5C6F1AB6C63661EE22F8B740BFF974E262A3E826EB3D5117FF61D5ECEA17B1ACA7A2F048E00695448590B9486C69F35926E09B39A0E4715CB7FACD6B8AE77EDC4123AAA3529BC30DED891B6C9A0902BCDD60C468E402D0425652D4B30482DD90FD43517F16C0C9EB498F3C7136D7AF9CADD1EE68887C2F92A2B1741C871C8D29FA42344995B09ECBC94CD513957303CA7F6BCF91ACD7E3219CF73FA59C83382E92D1E43AA22EF87D639B306B9DBC89D26700AFBF4B2FFBEE8CD6689E2DF25709B862D01F457ADB1F1B1AB1A8C66FF7F5855DA7E39CE09162F139A58D3E0388253406CB95B20F301EF43C9FDC82ED282253A691B6279B007408822E8589DF5BBAE74495EE825B9C1713CF8E9D6499F51FBF2F5C99BE7F79C9E55DE15E2643EE72D9F466880CE751B03050259164F5D1F9E044C9685225AF5DDC92C5E40BDC773960E3833683D5648897BEBF6DCD466CBB41FD2A9D8D4F666D3AFA5D717FF96EFFBDE2D7C1A123E70AE246B7C882EA582A0445DD7ACC352C38B5346A7AD056DF5F774248157070F11F67E6D2A9881B9195653DC84F48E63206084842A2434EE1C4F04FE4247FCD67DC851650FE3B3480F7E6ADB9C22BCF9F5B76C7D2D85D8635B8E51DDE091378332F0FE41ED841B8DDEB2090287907D6D2CE48F7ACB2EC77C0A3FE92B7191FA1981F26C198FE9DE853238ACF501E2A345B9C26FDBABB8759E0A8E2ACC094DC58BA70BE52BD536309BC03B3341CDD10B340BF378361CA225661D4250C0859EC1657A7AC60D17AF3832F98B7DD11F93E05B4EAF6ACAB23F056E18FCDB0E6829273E0C52D5AE2D59E476BD2B7622103E62F850B9E9ACDCCEB84F29F467FB26F65D6FAE8D10828C3115385C47986B8E2E6280F80104C698D5CB1DD561DF429241BE5696055172BE5BF954808282A8EB8DB00936F93CE44CF474FF00CEDD858595BADEF083F83F38987935E650BA0DD5CCEBB2E765D74D1FAFDA8E44890B3890E0A43A905775D63F976E0D465C
|
|
|
|
"24EE9FB4E6580FAF50653BAE38CBC7489F234AC6AAA53836958083BF334A82517263674B1A3DD47BFF53303FE54A5FA9E06E7A53B3268C65F763B3ABF24081CF19AFBCDE1A5B66C80305F596E578525A6318C2B14F8F8495E15C310AC465BA07DB4C82453F8DD7612FCE82BB654848441001E7C29CE741DD73D2DDB856F581B06C1B30FC0AE269C564AC78E0015AAADC6CFC051A7F687BE39439394C1176190C267834F6DDC1526BC21CE8FB1AB0AFA26D427A24D363E0BA9EAA24EF1E2B17B918F70D3EBFE470101AFEACF97694AD56193FF592C126F16F9648F6E6741411A84A89EE290975D94EA275702E84ED78A2786B7FCD9617764ACF5A6B121E1111117380CA7442682ADF63F702298A6085FCB6E254121EAE5D0011750FAE5808623C89E17C1D570FCEE97E2B9CAA38632DCFA3D63F9678B238B8B65EA845831DC831E3E566C65B92DA528882191C6947F74FD562A962C6C30997BBC9B3C132F79A0C8483BC0A8B930EF0B92F2B312A6030A5BEA13630E9A9B1C61F30CCB14AD9296B4DA7DA9E589392D66BD030EDC9506DF3BA12DBE31D20342AF2468CFA15E790D51FCC967F4279CFD85A0E5CEDFAE2F15A68AA19EDB7AFBE7D4F39238358E1C527AE546219FAE531B402D15331410CAC8570CA15E54959F6549375ABF3E6EFF27083AD9C7A7AE8D3CF2D04554B0996D23F75C9D37AB7621491760F327434E97E59515B84B3A837C42593004A28B9092263C42C8F027FA833B9B500740C13DAC02732F7525E0BB596E86C1CB09647927A09F8581ADF836A231A396C37776B005FE7E0838B747F511CC1876A7920A95AEE1DB5DE8B6DFE6AB99458D16146DF521EB0E16CD3D737128062F30C91AE1C64419534BABC375E2CA3955B39E93693B67C6E1F60A91EF0A2BAEE6C128D7B775D7E5454AF5D9722992DD9DDC522DCD95F6EBCDAD77ABE02B9892C1EF14167A7ACF31B5F71EFC20190938633154DC2578F1D65A81EA4D3A1E00FB454DF4532CE04F7DA85DA4B7C65129CFA7F60672EA646ECCE5AC4FEDE6268C45C14232F53AA581D2F1818255CDFE06497E2E0AA0F05D5C48AAA456C23D9FB83C6E81C547D929607D87E436BF8AA45CF6F677CF8A8360EC650FECD854FBD4AA2100DB884D21030C53D370E94BE5EE7C89735DC42CD16AF3D0A8ADA96A746759522BF152C5C829438EBBB36C51620B81E177FEFA0033DB735DB644E81549A70CD0245308A736DF0A9EB7EB4CD5E824D21C2C4EAB1EB3A39643231232528CE1678BE89EC74D1320847C9F264D988093A4732126389C8E5EFCE0CA465B5B75B16E0E66F8B4DA06D400D47F7CE14D14215D6B2F1683B3806C04700811C28380BA0676C033A016DDB0EA4065436859C6EB4ED9F6D463D853FE35DD57B2BAE4C7625C17D304A5C84396E4401E29DCCD54B01361FDC82DCD8B9A697C98AC5B7B54D696B11FC86972640AB8E4C5783ED83611BEA4E1569989911BD13576F28861CA73DA950EE6E1C45D813F157A9D21403EB4FD233234B2249875BCE677F038330961DF9C06720F9D41BD8CF3FA80F157DAD544EFE27364BD1C786B42905D67CA8B68E99EFD9D5B0751DAD4221375675C6E003CF2FBBF1B3E9D1928D67DF5CAB335121B905507CC0ECB3C4E23588FFF1A176DD19D2E4F512BE58E19E0F7D6766FD05F59239D9F2D8C41CA1DF5B82D09F75487C458327882699A0BCB4763590A222C127CD437A663D57B8CC8E08036CD54A138938DB30EF7B2486D2ED5F65725119017717F5D6C1902F3D7486242F5D0C65C2E9E6B550AC0CAD4D78887C46FDC2BF1C5B567245F92AD4D85E2F099E1320407FFB3BA2FBC7F4D8DD32C2BDCFF5DCDBF89D9CFF62982E45E5193F15851EF4C23B78C51BC2AD9F9383AA9F4F938A651EA5803DF2AB947B91888BE88501E69F4939BC7AEDEA1D90806BEF9CCBAD90D46F178DA8700C091586C5AD767161E804774A2E3B2C8C0D3B8207D359557B4DDED64EB0F4A57050B8C697BEC11B215B6583EB1E2A1FBDAC3A7A56322D01FE326D9359CBB58D97EF956D0B3963B3E4DA1DC0434CE0B6CAE4782B766390F4E063792066F5A0C0F2CDF17D9C8C88DCAD9716B0BE405CE8E9FCA1D6E8B3489BE71CBCA1AE05C995371BBCE6BEE58810C3480C44B2647A2F4432131959E4C3ED21D1EFEE17EA70AE6BF5558FC0E9F806809B1060479B4D5EA2D469533A65D01F88C20665819C65A4F6398C64C480FDB2234EFC72B8B49FF36D1A8EE8AE096478BDDA19D9F5D3AB777B6435E8C61EF8FDF294F4DCDC440F0B680F3011C524DF9BED7541B84AB05AC5EAD832C99F71278C9C10527CAFF9DC9A43B64B37B3033438A14CFC734F059E83D50F13CF6E5FF7F75972A55B19ABD846AA565024E8F16FD2E8F51DF588EB936C68F2E374F020ABFDFCAE9990E4583F179DA1061E97B30305B2F1322EA9BB458E00D31EB43854335894EF43508EE0A15AD15A6959D7AA10FF61B350E1E5F1CA22089A6D91DBC33C66F0F048CE6F35BFBC4D76002535609403191B752485D5C0DFCA875C2974788951547E50ADE43F996505A20A75BE57CBFFACA77FD12D8292D195F2172CB2F09CDA37CF035FEAF741E808F58E700D5089E99FB6ED8FAB66E02D7294D79CC51F31086238986E29DF840A9BCE30670A7462A00CE503299928FB378BB8F8005261E02D6FD279D180A00DDCA9ACECAB12CFCDF6ABD09457C5020473CE9350F49E15175C782A95BD7F7FB3DB8C7907C9F1EB0F2CD1A11CC1C6A61246342E19EB53157226F3B9C6F2C9EB64A4BD6292391351398E48ED34ED2E89F57BCFB9FDF8E8CBAF6A527CAC7691D34DB6A01DA5A50A02AF46A8C3648C4F02058676DEE98AD476B934D20BC841869D4570F924CF9D480A
|
|
|
|
"24EE9FB4E6580FAF50653BAE38CBC7489F234AC6AAA53836958083BF334A82517826D31062EE55AB094CD62964F4A272045EA7BB5E798AD119219DD5EBE0D72E4CFB513ADE7905744BD8AAE33A5ADAC3FDFD1155777AA4C478DACA04DEE6EDF2AFAB8F466E3238D857AB7C32154D6F929551A1DAE6BC75F238F848CCBD73129E64308A039601D34400421062D2B0888CA48CCA144513056C24962D60944C223929A1000803008011A73001266ED0866158322081106EC3406202A0092047844C9224C94486491642C3164CD9B28D22244D52088110943120B4851097411B476494202E98442A19340412422A60406C13B92D194524089190DB886DCBA44DC40460D224008148468910321234601A346D5C0851092466D2B66981408503268A64186E0A1045CAB420E2922812233141A265098009D4321281C661C3224C5C924C41A82CC98461D4228612832C493250533266C11026DB065282C6719A308424492C53A4401B016A01944592028D00020EA03292534844C0944983306193C81094420C21906D1B354A804026D8C08D10A2810A0469CBC24C821004DC4271180902CB4605A4900D2382212199311C222620270618C5898B12500A304E4C16418B184EC3B0208C9268E4A20921248D0B4900C998459AC42D59A26019908012A531C3362E54263048448C62944082429213C48422C5409AC4484010505B0002C3448CE4C68D0C078EE1B4085B001111237021868964366461C28498922954300A19251121452E0396698034029A3281841681412688C0B66153C44DC4826804336102414912B28410462223B829A4122AD4209154242910408C9B206EC23086A41226CA0092D90492E3B47061C225D21006229300E3C89059266C54002AC14212E380705B46504418414AC20D4BA88C03438002905021480294824090322A6290640A922814166962B06051A250C2066298284618C025194320D40240122525582870A100811C4789538428D0261019B66C10828DA42888DC8228124930E2002400292808301001351102182A54A464D3886CC3A6101A37661406495826601BA22992440D18126AE32406E30604C2426D4392294BB065E3B88952380523B06C12478990C8310B1648A34421020208204611C0382D5A440600310559008450C29044149124C748CC282224986819298C0B018C5192658340300121304A24021A99449906280821921192000C3740D23222A29000CA300A89426091324A48242EC8048AD44860E2C0098BC65190B80194B020D9A02D9AB20C909470D88620600670C426084B34458C148D892810A2104E52C48960246022C44C534004C8080854140C03453119386AC08849C4C6259C488E043149484400D3466E18476600254E13A8659CA261C1488DE220724A8050CB282A93166CC320218CC60CE2320D04B49162224DC3268E0201725C26406124281BC4649A240A0226300208301A30702181409B18225C240089C880C1C66D4CC264D9468EE0A42561264EC2488CA4905091926482383221B004219350200185CB0446004585014460C82685E0C2450C37928A82108C36806244704444881BA61143920D48A608A2368989364D1B9470A4C401A30822E4026C1AA95090464E14252C59342514312AC9082A8BB471D0328414A58141084C0316310211860A499109000C0A28225B144243282624022C20B32D594872228944D0988D40926CCA28054B446A13032D4B94510B94090921818020455C880400395261048E24B46064026E60040A42960C41964102C64D0C104824C10848341101348D0A102C18B02599C681C924649B40469BA251183846A190054CA28511486808208AE0C420149768C084016112310420900A21440CB349C1846422278520A55160C05043140D9CA8854C182E13061000046A538211C8306AD98065C4C24C10480E2232698A8671993012D084080B4830C9102D0448459B344A89362CA0B60D44281149B649C3366481344EC44020C21252DB44450CA110C1000E542068D9C82D50382CE3066E81C8680B0231C4240D6214015B242D911061038669034530D89650A3966902354149906012A34CCA1649CB006A42008661B21021C0902024600041109BB065C9A88C4C268DE4029291B86CC2A040E1208CC91001C2B20908B3018CA845D0A210E23870E0C8309A960890B6010C022588820820106220EEE5A42B6FB632B98ECDDE09FFEB9DA7AC6915858F66D030804F7B2E8C9E88D15B7F4370BD8468156A28BC0485AFFAD418A16D96927DD599A3E59CA3479853736BD5D5E888C53BB9BE0184DC26754E6AA774200423F21831D0FB5B472B273DB62EACC8F92E88FC61EA098E589C3AD3B3480D1724A7E566191142FF26E068191CD2D263ED35345C82B6816BA60753B717F2B507CACB6EBF5ADE3EA1D416A8BF8CF48EABCEB9BBD93415D5FA878874125A314E99EC437DE4DA612562E41C009019CFD70CC573FA2E807DF2D961F850D6BC2BD530F0C42FFBCCCB683A603209B7919A587913CBFF44069076DC83F30A5099012D9EA17372C0D54ECF45BF1697711F8CFC908C6AFA1AC9DCC2B6E9C42D7516F01140CD5F7E3057786168B56C44F0AA9FFE466ADD343BC2FDF3AC3F6A7C50E5F83B2B0C187C3EEC2A34C024EEC0D3EAEB449437532712B4BE852A5E86354509C23B5BE591AFAB2DB851BB9A1AB7BF055F8910ED0D26C1405595D10DA0045814372799D20F6314FCDD6350B21314AEF8721FFB3A342501D6A9C473E54FE3514D470285A7799B2F765D5E64D30C00AE481A8E5AA15157D97C35D17C1CE70AA7D51C49EEDE429CFB16DC925AF264A5A0191CCEE5847CB70B104877A77008CBEB37092D7D43F716A907F7813F4944
|
|
|
|
"EFE3EEF8C2A34AF7C41CAA310C379C51B63C1575BD3B61866D0C05917C0C8B09EF32C91290D1",
|
|
|
|
OIDDigestAlgorithmSM3,
|
|
|
|
"377bc84949a4ec30d4e82db30ac71befd08ac7652421f7691a47eb3cc668c8a79b1ac6629f340ac159a87126a9723001c90db299474898a784906dc58feca61c56969a4c0edcda3f852f55f368e92131777d2421b36a466e25ab8c3cdd113fd85d16afa70bb6fab133abe0c6e70336e6cfcbab34c34998bf2d5a4b587ecd0bb8d748f7ccd0017c017bb55e046f4169945a99682199bd02040b4e7617101cc48f64fb89c4a667bfaeea8ef5c6fd1af3f93054431ed54608398e71cc1de8fb80ab55d704ce2a9b6d3e4e106a74d59fe4545f8bdd2b7c10fea6f4d05ba539a94eb40d67c4abdc432e3bf7e0076769c9f3e0b8eca37ca7a07edfb9fb621a1b39b3df2cc9a144b3d7721a07a38ddfd320f7a3b32f851b7b2db6161df8c1f965ab7e13788b816fc0bf1080135ed13137df87f5341849c26b4c2f31e305dfdd86b8c1083fed67a6188da1851b1d61448ce7b4eaca1a45619731954cd9f7eff435d6ecc7f819070cf1e2f1ebe2dec0b4f6412a09bb2dfa86ff8e57bd8bfd7bf0762bc8dba3eb9ad00063f60861b241aaf7dbbf4ab268b5af44df9fdffd160e8461284f57154cb1f4975aba753f5a593ed5a1f203ab0e4705398afd96f4cda5d7ef94fb4f4f945c294e418678838e9f247260c2b4c71ed0d73a6b16557c2ec4681cf11713a31be9850bdd0481634f44395b1b73bda02318232fb05137e584a7ab3a048783dfc274e9553030dbcc00bc8ab5dcfd14a8a92cfcfcaf2937cec8901a6a29128dce09e06c735f78f2423496e60017ab9e72f9d8e6ebdb232c32f67e946bc7201da13bb6a718e81fd5e3b7922a8c5dd9ef791d725f2fbc5e4543f868be55775be9d7fbafcd353f93edefa074e1b9f7cd9b26d40e69605209f01af26db1d8c51b7564c50ec4fb67e06bf2ce7e17ce0e3451964b696e48b5e833aba0b2fc2bc17a9402ebed33a01f7c62b827fe17dbcedc81ea663ef5a62fc58d32b965502f8c87fbdc356311f22b8a1d8328d001fc2147af49cca91a0ae5e2928da3d965395cd3323017535724fdbd44fb993173ce50a96ba61e7ee6b64cb8c5914179251ae0b8df10441faaa1644b1da837058844a81543ddf7047b7dbfa4937b9ad804892ffee3b99607440f0e584981d03d25fac53a3781521cb35e1ae1cd5d3d8918808c20864b86ee045120e77b4c04aed5d94b36d927b587ecb07c137e1e08a09ddbaa4bc68d7674b2533afa26605cac1be1eb529e45e72b86c960937ed6742b040ba1a06cc034013a2d4f073856047e5bcfc9f9ad7b0def339df935066f0b642ff8da379d6f06b441b7d9c8d4fd75feda542bc8c3fd32610eec05dd1734635e468e3d7829658a8c29529aa6399a5f3e89c35fc7547f54dbcd67592454ead06b573cf84dc7c6d0389616047c54b980767473d99fceec6d8b5a891470f60d37ba5e657eee127c9a03ca26ae67dcdc1187d34cf8e9f0dcd1275066bd8c7e1c6936f0505f9677feda239e6fb2e3b8435194b9752636ed0fe0cd3fbe0d35c59e9fc434adecc4171c32dcd504496943f830a362c9fe940d045d9e8d2f3e1b123dcd378903fb1656b59646fb845270c224b743684fc0afa8a73e5fb521aba0a72a8aea6085b3efae987e45b2908743950bd9d538ea8047778cee4ff34f5a5f449e63f9606dfa5c515ee745cb98c7739ee55a98fa5d2e3162d9bb90bbf50b6ef4d0ec7ee63497799c82c9014b819c8f43ee89c536b8ed5daebf77909a1bd3feb7177c660de8fcf78cda9bc21a33ff5e99c264397b168ec3dca164b43603e1ba92ed88be8ec50e47d475f4637769f3874fd9803ec0fa115981d3a2961f7b2c6bb8994835f4d75fa6b6db958c969f6a149958e38e1bff35a52bbcd00f1903d7d180ee0747940761023cb9273538334cbd3a37d5b530eba39c06eed331d692d0f0adc72a3cfb13beef80ef71662e3fd0c8fc62f6bae10e47eb4f684ead243554a71d276feaa153cd5a33b1c3ca2731d3e26b314c59daa9f13d5189801c910edd740d3894efff9bfe5b982fe2bab997165afe0ce3b4ce7051294ae75263ef7287c43eb007656ef2acb08beff7d19a7f79d0d1ec503b0423dd4bdc7d32fbd58ec8e9a39facff2f5ca1f5c31a7ada4c320b0eab51ae26d88a9bce61f64c0d12de25769ac557ea4055603749f202c31621ffeec4c3e3741d3e047443160f6051dede3df5aa1e0afb3eec42a823f9c0d52b643b6ccc13f2c009c76b1ed52e4fc721ee6d7dce05e43700773b5795b98abb60cb1e7945c738e4830d70750d3429255ae63891a8bf471ab9aa5e32d6df020f85ac25708703bd9b02c8fc80062cabe935d0af8e09e3ce584a308933cdb115a08cf2686dcfd0829ba9eea335403fcfa58b147395d8227caa9584b6238d6f96c3ede00b582c76e77a4fcf8253f7fb289067c42f5bf9629606603711c2c261222ad9b135280613b3147ba70334493bffee96981a1922673183bfade8fe42bdf4774f6da38394822f3025305358cf26ce46c3f7b188c91b9ff93ae4e8e51a6705c72b15f06d8724736dca0f79fb14f2b464a940add0bb7696ca8868f6c5f7cbfd7230453515a30621537f776604b8490aa2c1bcba4434657100b21b71919070ea5c171b2fc577d7fdae92e1e2853ef3fe9e937bbf817850ecd4ff918eb1f0cbe5ad2641b997d92c8d1b7373105cb00a4917295d5716052b977424bec34cdad42c068770b26b32f43a9462954ee2dd4377fcdfe84c5864b5a46f03596e1f05d8380135fdae8c9ad214878368c70df6567fae8e63ae68422da83fa4d8c3c9e4f4db605804395dbbf676453943611c08efe331c238d86ba972e654ddd181fce551ad7e52b491ebf10a70b0634d234369cede4c5d42ed439527fdc46e84
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSignPreHash87(t *testing.T) {
|
|
|
|
for _, c := range sigGenPreHash87InternalProjectionCases {
|
|
|
|
sk, _ := hex.DecodeString(c.sk)
|
|
|
|
pk, _ := hex.DecodeString(c.pk)
|
|
|
|
sig, _ := hex.DecodeString(c.sig)
|
|
|
|
msg, _ := hex.DecodeString(c.message)
|
|
|
|
context, _ := hex.DecodeString(c.context)
|
|
|
|
priv, err := NewPrivateKey87(sk)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("NewPrivateKey87 failed: %v", err)
|
|
|
|
}
|
|
|
|
sig2, err := priv.SignPreHash(zeroReader, msg, context, c.oid)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("failed to sign: %v", err)
|
|
|
|
}
|
|
|
|
if !bytes.Equal(sig2[:lambda256/4], sig[:lambda256/4]) {
|
|
|
|
t.Errorf("signature mismatch(signer's commitment hash): got %x, want %x", sig2[:lambda256/4], sig[:lambda256/4])
|
|
|
|
}
|
|
|
|
if !bytes.Equal(sig2[lambda256/4:lambda256/4+encodingSize20*l87], sig[lambda256/4:lambda256/4+encodingSize20*l87]) {
|
|
|
|
t.Errorf("signature mismatch(signer's response): got %x, want %x", sig2[lambda256/4:lambda256/4+encodingSize20*l87], sig[lambda256/4:lambda256/4+encodingSize20*l87])
|
|
|
|
}
|
|
|
|
if !bytes.Equal(sig2[lambda256/4+encodingSize20*l87:], sig[lambda256/4+encodingSize20*l87:]) {
|
|
|
|
t.Errorf("signature mismatch(hint): got %x, want %x", sig2[lambda256/4+encodingSize20*l87:], sig[lambda256/4+encodingSize20*l87:])
|
|
|
|
}
|
|
|
|
pub, err := NewPublicKey87(pk)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("NewPublicKey87 failed: %v", err)
|
|
|
|
}
|
|
|
|
if !pub.VerifyPreHash(sig, msg, context, c.oid) {
|
|
|
|
t.Error("signature verification failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-05-07 10:05:13 +08:00
|
|
|
// https://raw.githubusercontent.com/usnistgov/ACVP-Server/refs/heads/master/gen-val/json-files/ML-DSA-sigVer-FIPS204/internalProjection.json
|
|
|
|
var sigVer87InternalProjectionCases = []struct {
|
|
|
|
pk string
|
|
|
|
sk string
|
|
|
|
message string
|
|
|
|
context string
|
|
|
|
sig string
|
|
|
|
passed bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
"B0E4C93506065C84FF147CECA1C78F3D4ACFCBD8E3F77852AF75A63BD6771F7B5E32A77F0CCFBEADBD4B51436095EDBDDA096BD9C217E58AA728D8F16AA040EAFD3BC16A939B6180853C63BDEEB55FC56C08B4C30B139F66009620C727D8FE1C6F1A576F74FE283656EFF46F6E53C7D03956A646B6405D51A0F25514964845458E052D3F8F79241E22FD66146C96B4478C28A443527BC72C34F5AEE064DFEBF64081E2C290D702E80AE6FBA3B53B8BE22CB5D2706A4A32C65753541906F49FFD997575FAE0CEE7D8AC28095F19346C822E43782577A47127934D04E115CC07CAA7266C99A3840BEB21804A26DB439FAB4B87EDB8A042331E51304CFFA425F2C77681709F5C5A7398262AF8AD6441D96BF7FF5730DA97A2232558394BB14543180E2F2C54F14B317DDB4DA59950DB0FD6D70B9A5C53AAF73650AD1A485A28CC20D58648BEF97E9CFEFED9E3065933512D84CB06F95094DBE4323E5A94EA7F1C63B0009DAA999085AD7A84705607480377C0A73B72483B8E84BC8DD32FBFBD5D32ED3528A8435D82E8E817CD479CB3DD4DA013CF73ABBDB6B8DFA64B9557885AFC3BC6F45D4E7E6FE9BABC57B87504F0C6AAC04A173AF73770805C4246A1977A001BFF8D3139A691E6F0BFA19F066557D4C49A61E6068ECE7720A7C6F48C9EA0E670247511D2525EC626FE5B81F27C5A93BB28FCF88D1AF580C07DDAC6A0025FFFEC4FE8EF687B5E834C1A6D1002976CB5039DD1A7AB09C6BB5846645DA24A5192D0B7650DDDC744A54214DAAEEE6E0A04465BFFF11DCC40538D29843FEA22FC4864C06948EAD3481E1B981BA22E48113604CF6D5021669593AB3833772BE9607A942E1B5B1387A158DDF37331D0FFAF8ABBF4C0610F8F9E5232D61417C6AF31BB7B61569E1711AD81EA5CF12BE1D2B780B4A8E3FCD1858A108063D54B48C3E0428A7F2147EB0B4D8FAC4AD9FABD2C93DFBD958F40DB67A3C66B4CAD0F290258329E0155E304CEF57FBCE7B085AAF2286C99D574B615D54C583EECEFF4A9ADB5C60F9E0C6105744075B1B08FD791E6B1D5926611C41CE4316A4BADF9498D633CB8AD8232829A3B84F32694B3394CF6F44460E4A51F951BA02F395B551AB01C1145DB11AD54235B4C101F40F0B2FFC6465035AC67ADBCEE0C1BF02B44CC7125826BBBEAB39AC3744C1A0B92D0BF9DEC256BCA75F19294083572BF1C23F3668CF6E3183E3F137A498DDB9670D9B00E474A67DBAD780EE7609015D60E1DB5E1DB1F47D7CE9CB33A9CDA82DE302ECD57A8250A0356E5236B450DA8D1A6D02BF42A7338EE3F97AA50444AB6C56CD3E6A596823AB65410BAAF175A03AD08EB4B54EAFC2189147AAB7DB833682689FE8F1DA0DEA2E21FB213D2FB2A98054F7FAB301A8C25BFBD20321B58D425182A0FAB155B1C1E09056CF2046B20A0EB574AFB647ECFAE87E4B83FEA951800C0474568CBCA49C7E0E41F7A18BDD571B5E232F0E4E4ADC7DBD56A7C1C8453263D59CD2A38C01D599F80CD06F08A007576281D0CEAC97E896EEBE32A761F100DFABE6F1D5DD701CED1419F699617D89BD083FED5F944EFBBD3521474207E9FA2BD9695B66BBD82501A48E49A9654CCD061571B1C57C26F79767996D8ADE8FA8C79AA8E8601C54D82071B05E10BA0C8ED75FFEED7BBDAC2F88A81132651073E4BD5EB06CBBBA4CC0A5C0C4895FBCB3ED7CC5FCE64222FA627769821B154EEC12E96E3E539CB426A12D6153F130ACBEB5468F5EBB2D517449B2845AAF34519E8D1465FDC9A0424CDDF0CD7287B78D3221438447ADEB960B55F51F638293A3CBE21D04BFAE6CE741FDEDB1CD038159AC70DEA5E34BDFD98B38F90F61CA4BF542FB9B03293C463DD857FC657F907C4597B7C6163DA4C747F72B2FD20C8E54263633C91864DDBB89B5F521B7C7403D6EED53A3BFF80BB8BF7BAE87171006D0022964B933A95C8AB80EC6FB19BCEEAAD3F0669C53BC0A998D59D970F0FB1FAD19F284198979FE783980BDDAEDC50677E0895310A7B46F7EC6E7D6BE7EB5F100DF92DA7D5AA6E0855AA9A3BC1CE8B079ACCC941162466C9CD9E6435E3ED88EC98192D89831D99670F0E1BE117520F59F12013E8269D0AE22AA4972A75CDFC3F0E8C94A17E3F148AA80C3CB40EB4E42D7CF5AC9E2AA48A164FA976371AC03A731EDBC5B21B8E96E50C9A9E8F934FE2AA5C22E422C4DE83278C36AF31D8F38290E018DA6F76273BBB05E43150DB96E863A7296F6540DB08E30C825F54FFB3EAC7C28893289BA4F73BA499E879C90A76F9B1B901A10F1EB7A37C97688469BF3A2B8EDB3178E762A1B27AE62A870811A4F9C2295E1EF903D4E964C29AA4F4A1AF9B757F87900C4877046DBB79941FB7F87CA3666283A6D90F70FC5C13A7C3E7F1A94C36264511E36F6A063016632B4AA11721484F7FBF50780E68576FBD2650AA41909939C9C86BA98E8FC1557E54985B08CFCC73D524876FB69F4FA67873938C233C27A830C3F379FF2537F0F41FC0944FF11D44D508C9A49DE89E95D198F8041EED648108BB8AFE1536ACC1D7F6F421D6939543C418028A526DD061AA85C0273F15633D37E7C1355273C06701212FCF74249C0C73A0AAA431BBF1E32250F8A47715A324F6397CDB8863496E1EF67ACF01FD1F803567EE07911463CF1A43DDFBBC3CC677BBC4D4DA4B4BE2EA7688D83F423A2FCDCCE332A06B8792893FC0E30F8C98DA1A79086FAD3C1297D1FDD036F8AF78D37FD361B97F78AEFD4000E324CD135A720F3FF3997EFF4E0342DF3FBD6C59ABB385C28FFF060D8B3D44EE901205CF663ACD6A2D29F9985B22882F13FE74B085C96B8BF3308156A8C9BF918BD96468AFB92A8F6DA2029A5785272D80F29D88A787E1ACF23C7F997C7F
|
|
|
|
"B0E4C93506065C84FF147CECA1C78F3D4ACFCBD8E3F77852AF75A63BD6771F7B1056CE8A44BB25CB4042F03ED52BD21E3CD620B28B1645EF43A9F239E0CF58D5B21A89E2A1CDCBB84893960066B7497D6658A7927F84EBE7FC82AD96CA7395E35063BA8FBF0A825CF334EAFE71984FF107D2135ED6436AC312BF7817444B96AC8A026E122306A0840CC4402208B30921B488E3022104C78961960180B4090C436E98B4654BA881643004403422DB126E9C964008256A04C38C0A351122190D23470590B480DC84045200051C2461194788E3008A14936C02454EE4B80C04A5500A8741D3300901275144066912108688A84450242423118A999210E180051A3321111426134521C8A49182166283184404324952200622270AD49641484428514665542431A2484E50B25103B37024000A631846239945218051844424008984A2362E9A108CCB8851488465212465402201E4B6895A106E932651A0122CC446305928810A2842490208821611C91665222871411884129144C4986449086D9BA010421670D9124E1A34664B08041B92614C24010A9200E448825C0829CAA22454A680DB466DCCB20843B840C1B411533844A3186C0C39910B836948A26C1289911C12919312064818459C40464B486659A291194620A14602D9A48119086AE3B88009970C0B281080223080B62013C109E4B82D22302D99860963420CDC020684962C0436414B8251593464081432920444D2C268A4342E039271D00088E1902082826553C4888AC271899004E0249209106ECC9801A3222689104DD3160C014246828610E4C42120B65143464803196A8BA46C021865D3046D24456289884981128CD3C64880949164C2044B1662DA48205AB4880A827044320D04396D81120C4B306804C24413192A49B864D486442284108CA68C189424D33242881891C2B2859AA630D0B23004086853B8204422240B1320CBC448CC8405010082E0040009888CE312281A276A541490C9366200C504908220D3A8311A4332C318406138090CC70D90B401D49611831872E4B289CA060D58B44D110905914405E0248C00344D50B86C24C56C094985C8920524282D980205C91071D000450C414460B22D9B4085D802725298054C400188C47121314C52924C1CB88808032A90140084340002874021316111B74C983860D3B86494180DA2002DDC48722189459B986060364E41C04024A744543601144000E444904CB22460220EA1081189080A5B202E1A40690C348D52A86903428414B941C31088C8C4401C230C9AC0018828108B342C1C142449A64452384A21C2509B0066C4188D81C61154C21003A82192A650E43672589460E330644A3682208548E4864409478D093182A2B060614260C222010B888DA4C4401C980159104D24946C2388202239451B112CD4322ADB30491A98892312914C8841034711C416049CA80D4C882C2311490BA3851807256426701285491B4482CB10821B2410118321842085C1B4100B400ED13464C2109003206151804C92288564044603A86094A42021927192064091228E91C4000B86491CA24103428D11B0659404490BC704911410E4242E4836654A0228C9126D82220EE42052A3A664D998415C243163064151442504A02D21C269501251A3A265022949180888094366DC146423C370A43271E3C80D53B2810B2988D8106D9AC4514A0265034382E0805181C88903A84D09A7214A9628224466E02652A3A02061064E1884116246008AC00952202013148809A020DBB610938804E39089D0088592124893A461884820101022D2A831021970E0220A04250D14298C1029200B022608341122A5511B494210A010020128801049A384840B906594020410140903B1808C0429904226048324DAC84483924502B8910A1348C88049E3381162866010A20923392EE3A829D9A8091A410A231340A1B4645B428C19274513A02C82941054A24084242DCB348644A68520332E10384944064AD0000E94123104414508856481445013C304C3366299928519A56924119022170618890010B549D2A829D0208402088804999001316A0AC0640237294CC06919A7308C880CC2882814408258140A1B8508C0C820D8806D0033121B4691E3964412162513450912B13000179208C9819B0471C02084DBC01021218E0AC6001A810D210186100660D836225194708CDDED41F38F59FD0DCB25213BAB1D5AE2DCF0520A6121B3F0974DB5C272F3DC386CBF8B3C53C228B27052D576C18378AD552ED9791BB6B749F05C739CC659393A97F45BF96FEB2B138D22D1B3F511C76863AAE85A624E68F07C9354A88B440B9FE74EC79964ABC32D89F166437433E0D2CD35091742B85FCC6BC9C0AE2CB4D6AEE9A4D961805232E75EA0B6A300F7CAD578121256B0E944D79A3B83C6FC1B54DB8A724B13BD7185D53F5C5797B35B4655887BCD79D9FA9B4D04E4B4FE2E1A296E8AB133C7B85E9CF3B6F779F01BC65388667FD2ABE3660C8E18ECD1CA0C6D014251645D6A5B5A0BB0FB058A9AD67A719525960C3042B641B18AA65A0F01B33153D6999BC3CDD91ACD32661037B475B681C121B0E614FC45B597C453FA6918E5BFF7F2A062CFB3EC14BB2FCFF300C1500076736D8E0D69383670A59FEFC26A250D6DEAD2E2D929D7CCFD3EA4050E8CDDBD03B146FFBA28F37EC7AEE50A4255CDAD4EAE8E2653411243C1A8E01D56B23C22EE39D8775A9AA64DD2E60EA11E9B0F659A2C52248E5DE1DFF13C9F491FEEDC81B632E007A89D7ABFC5C6918AC572FC428E7F831E1D50B3E6560088AFF748B6E397DB77B8F07BD711C862FCD187DA5AD8CF922304B68631C76F744D096B3ABB7DA0694DB9E870B695A7DAF619BE
|
|
|
|
"545882C0FB572B65F4040D8B89BD20F9754C52366559B74362F5FD0B7A2E7ECBD396AD1AE2A2DE38C27DD2D21E8102F42AE3827A4DE0B801726462D98FEEE2C7D72C0D8BB24ADDF8C7A0161E5A29A8C5CE8DF95CF555F7E1225F65BF9AA5D8D99B2DFBC646D182234078D044C1DB61D724FD7E68C77DF4D2F2535D346E1E7098E4D7F9BC00CCC24DF6C0DAEA28E9347F93D3DE0B3DBDB094E9FC93091F78E41B63F92EF65AF5AB0208BC257811DECF855C7CAC5339D39113CD53B1ABCFCB091B39ECC9F76F91FC402718DFCFD07EE79AA862D428941D072CF19E875735D21AE88BF6F6F97977E831A54171410083B155ABE67EEAB394122FE6426E57C2A1819859DF5282D39381264D87BDA64CEE6E60F64AF8B76A74C8DD79C98CFA9D35B962E7BE2F6EE3A79FA49EE85E7B728BF8733C0C8D7B046956894D352A73371F0FAC0330324561AA6C83C6FD20C1FE1613A43CC31AACE1BC9319039018502B66A1BEAA5D91852F353656B96F389783591A668656D9D8DEB90995B5627A980126F3FF95A31A187C99FA169CF866EB52487B7E291A771E663662C4750E1E2A4BD34F1F5A8BE0FFD74380FD74400F417E7EA4D48CC66B50464D8B75A2F25BFD966F56AC39E469F61C0844946BBD6CF1AC05B7D10CB599A2808904C482FD071CD8ECBAE031BC463650B0892668ECDA4B110D73AA0F34E951508769801ABAA7A62EAD8045087DFE1FAFC705F506E92AE9091F7E29A335C95931C35E30DCF6FD56A6900F93D5E46A903716DFD98D1B14AEB8457618104D363E40562A730D36368FA093111B98E22E80378E77DA740AAF5B366C6613859DE9B7ABA8760364A21FAFF153E33D774B1B1F58FCB5F905E1E6B65A8F152DE628E383D08866B402867CED887DBC5AC109EA4C994D3B6821B940125C788AE190A82CAEAEA4466298B46C9364D7B346F4432EE570A5D512D6922817EBFF696E1AE1C43CC3B09EEFEE5BF26E5F11FB4AD02B11C5E6A5C254E4F05E4D9435BD8B23CCA5602184710509158A33FAB90335DFBD4CA88A8C3ABF41E6C135B6A805798EED286347DB071DD49B522165043BA52514F59AAE4C784B2FEC3B29A246A05C36EF38365F294AD557FBF502D86AAC7C10637B56043C68C623878C91B05F19C99E2A8B11814B09A16BFAD617139CD3BB7EEB89BB0F3F86C201B98168CAB6CF2E12089FAB252A68991E8A968BFE6980A5F05647808D2BD23DD6B13CEAE4272C0185D4819441C311C66B17E6E17C5C733EA46690F6B85403939CE16E37F0D4B0056C12E771A8240C804C00D491BF6F1E44E82DBF952D98146D4629B94E445EC640A8A6519AA15B6B63FCBD8FCCC24ABC562FB296B71559ABBDAD89CD1488083EDCCC96DB7CC54DF77EE4D4EED956C1F6143D4156823B92D7832216E899DA5038EA96E68EB85EFA978635D149EDDCCED49622A864C0F3D5C25B4F39765CD32D502EC2CBA72A5819BDA2014958FDED27BD9972BCC62B7FFAB53E11E6D21B9C98D08DCF371599674652E9D4E4BAA914D342215513F5A3BA1F66D7640F71AB029186BCF36CD1304912AC6760804AE5D11A4E8291D4AD2254C3F9A0675EAC14AEB3691FCA8CC46256D3F602354A67B4C0CE351124205E6CB05048B7CE27043F15E2B2C7350BB3072C72A3F0405D739D7AC8C86B9DC2F6607A9E2A7D93F0D5F9C43760A9E7E17C883AD3D41A81D90BDACEDCA8A320C876768B99A9B193EDDA018C24C94C38417A226CE934143981FA2450BD6B6EF1621D8E8398EA6204E8716EE70D9C7CFD5C973A4B99053E56F90F76FCAD9A045CC20E29A0C7A8CF7CC5BC72278B0E49F8F7D1EBC1C830008BBE552B686727C05B98F9F5569473CF4759027C9A91FCAC2578DD246EF59C55B765BD1396EF297F415603243733C1D51B3FE15E1EE86649D1EC1A91E669175EBD3028186A8E0F28B7206400DACE993F0AC48D85545A86E07E28A1A618E09FA657DEF2D073CC99A8C535B8A4C9E4717392337286106F3CB0019BE40436D55E70C52EE54C412B737C4A9DF5910A877C632CD87B765065D43D2A34FCE649E446BBC7C32C46479E4B0EAAC2EBE4AD67E4FD822DE87D902533F1742DEA8D391D3F3682A2F8EE85FE9015550B9C8457496B15C13603891AC95DBFB2B144D8B3A1194646422E187CA53485B60346EDE5E5A3B9069D2E53648679B1BA7494B98447189CF98269FA0271B2F08A670F937A1834466BC920CB3E13C8B03D318A2F95BEEDC697C0061A2C0F8227696C672D37B6E244A42A77710EAF5CFF9C960985981C5DF194474A5C5DD871E33A2F7B9A13654747B7224BF2AF820EE11D63F39EF2BD56E4077A927EFE9967EF1D27F41C9179638F34FB43EE00646B27C649F6C4C88F0A2F4B0C1476F47B43FA114C571BA9D42A1328BB2DFCECA1F01CF186FA4193793C75429DF1BC8D8C4B62F72F90F1815DADC08A893E05044CCC3CC8A2023FDD3B2AA23ED9785794B59D66C13148B9DEB9BEF4C5D77DBD1B7B4EBAF485712AF20C9340E86FAA4051739808475A805306C1C23ACCF54B717B1212E91AC9CA2CBDE5C141854E7AA1F38BE91149F8D02E646983BEB22F0FB44E198F62119DCB3B85E1001888E4BC8A7F7469DBA99A8A0A752387E6044F0EBEFD492641D9FA165C6793ABD4034651EB4F880EC0ED0DFD755B685D27FA33CE30B5035FD9D00B128E3557E8A70FE672D24A8119D380C3C25C23F74DEB884BB4503BBBBA76199C6D685B8F84B069216CA854E573AE830AEC707A78753E746E1DB90752C97C8EC7B8BD309DDD6C333CD59935C159A605BCA30437493DD2599E0538FBB8EC3FBAA26AAE8B786A260E23B9B74ACFDC79A61971F492831EF87544369BC3EB90EDF32069123B00BF77B035885641B2
|
|
|
|
"4318C3522B195DFD49B792F71AB5D8CAE4C8292797CAAC66579AACE3AC88F741A1A80AD29E6C05A8C3A134D57D3EA500544E33F8AA99B84DEA62BF31C2209E7D8D1036C0B62C1818C0D4C14F1797C916CB6E044B068552D768C0FEB785C67D84F14B6C4755716E59993A7DFD71210DE91A44F83FA58FC9F9588B312486B2523ED132712580E35BC4ADAADBD07FAA6399E58469D7054EB76271ED2AB0351C03740AFCA7D4BBF36E831BFE8D5CF23AE7833C664189275C3B78062D18EF6777C23B07CD0B662DA000260E903441C7BD908ADC9228F7580A421563D574BC1A7C",
|
|
|
|
"31AA43E6CA0FC438092FA794CB9503680A02456501EFF9AB2F3B9F1E1BBF56E7F1694F3CBD3C6D2BFCB69CA62AE5429F606AAA33E6EDD9ACE95FD27B16945D32EFB73AB27DF650443D805A7F829D6F88F4B22DA2010D229518112FE090A23EF3657D0F04FED9F5739594212C779B33C905C0AC3896213EE1BB905EEB28BF94FAAFD44D1620BB9E62115A1556E220FD6BD93AE9B4546180CC8B96DFC0A29720B87ACF3AC5330ED94EE3E936618D18E389D3450D6A6F02921D2B56A3B4B36780662EF1DF87A8B3CDC7FEF140212A6498F8E742EA044F20002215633749A616B81B79AFA7ECCFA93E882AA25C68C242A302C0A8A72AB1FEE158DEBCC25590475D3E000D96BE728C973408B1AF2E01698342B3E9A461D27DCE1C74D7E2DD7E00863E4C02293C44C4D39C7A3C8DDFAEE2D1144286F00F52213F0C701350F5E0278AB0CE5658F94E8852EE2244A6CBDCCD68C77FB76B5FFD987867D81B1209ECED0C6186C0FA64E11DAC996649C10BE49AF3F15F213BA0AE666A67914A733DF4F8E1000A9F7CBED3D9EC7D0B79FCFC667923360EE001287BC143950631F18532C59D138D6EC44F4C3A6A563F951CC3E0AF0D4420B1E49A775EE8DC952DDE8F32E154C43E68BEA077B740A73A6384A0DA9959FFBB1E373873F9F9BAB341E76C2FB773904F7B9CE0042CD8BE9AD07F7012F1B30DB44DA1EC6412FFD07868461B13E9615ABCD30F13CD64AD2BFBCF901A9C4100201A4F1603EE10321334A35ACF9039DBCB6265A12EB020B458E7FBB73ECD5E06854B89351300BAF5EF4CF9FA516D07EE88C110E6B76333436E33AFD1ACF91A13E101EEFBD8C9399157DA5107242AA334A8DFF4C2A9B02DBBD5DE74478739A7D4B2121A45A3626D20D248ED2AD7A473E60313A470959A38B9114C133206BDFC81AD9FE5DFD82BCFF0146A8BE7DFF92742B780D7FBE1124280CE3B8D8BC65C48D603955ACB6F6B8458EB7991E42DDA2E17E3772DF814DDD23ACC0ECC51AA6CE52436ACA6E3E6E306C1D6CE6A4EE5842E2928EB85C6FA4A9B50854F01016DD6265BA850B3F78C08BA29779C835B8F0DE2C3DC071223BA9CF71CB3B0008E983F23C670222DDE4AEB4A53A44EED73CEA77DAF877EE50B042C041A1CAD19EB5530CEEF235F455B8FD957939681CE1F73341B6797799A419375C64BFE9AC447BD9928B180A01C49ECC436750C0D1D9D9814F5AE3578CA3CFDCA4A1E0DAA93D69B756B90D49E58308FC43E9155F390400B470F8C526B119D52DA7BA0799276550C94EB3734F35598A94CD74CDAFA1CDFF87E6E7E60E1F503E51DCFFD906AB189E3767C68F29C25AACB16EA2C939AC179F10D3E145D6C84F9BFC4523882986D12431DCDA5F46C0FEC842728CA41BCC88C9D771B34A6A2289147812C33499EB65D86612E6875F9A366C602719FEB11B3681A5DFE34A5E9E90A949B3ACFD5F5FC90D3D617CFCF7F35D8C3EC14DA84F493F1CB7A75407C907DCAAB3863DB9E60314223DD0A4E44DBD3B398B5BA57EEAB791F08FA277DEF8E6AA73F1D6B0B2286F48D39E4FAD5E1146E6BB353008A422BEF80EEF30C6C3553B074C630A9D1CF8BBE172997297D63D1A86AA6810412EC2BF1D5FB0E1CD5C4DAE6A0F24ABFF63169A63FE4BFFFF862E88CA39E8248031912C440366CFF0B2B443CB2C474B0972D8DDBC521EF6BE05079464EC14ECF9E3242A86AC659CBFC5A5148F6D1F582601048EF671E5EDC041CB2DC3E6A077A13337857E40396E74E48E20EE6B8FE39B9524A25DE32C47A7AE4993B90032D820F7236B5A3C4FFDC3C26307097517C0038E807E8E66124DA2189001D68579F5E2CDC35E7917F0D107C0A62BF583FBB45B85DABB975DFE16B0748118E4A08FE2260EEAE3BD518BFE6AB775D31F088FD91AF2BB623D9A61EC7D2C455FED173E0F534A751052F78C16976DD514AF3060B299E83C887BFA37F7202FB994A60CC91DF86A3DA2AAB8F94BE27DA6501F5526A51212C5EC094AD7B38BF0F8043047DB2B61B338EBD1DFE5A1D5D328C621F4965BC2B2F13B37B9B6C63223CD0EA8D81D07C84DF9AF243B6C6463651AFF81FECD344F8592F6F0A13BCD6C3D2E85A691BD553AA6D119335BEB6871CDEC0EE01C87B4DD1ECA84D48FF462F059236279DADF615242E731BD7B464E6762CC56B1433681E1B254F3D0DAE5A5CF0BDC0F452388F762E8DF9A02064073D658561C11469A857424B01678761574EDB561C1B6F46081026CC9DA0BD317AAE16AFFFF924A06EA9BC6B24FAC4FDE42E42AFCC725F56358148A1228E8BE4BB5190FFFA837BD579593E9C52B274F1C8236FD18FE8AA2B4725127E10DBEF475166CA0249FAE80D670C96D0D379CDC5A6A3ED4B015D67938261DDBDD38DBDD1432525397E10286D1FFC91A0CB1D5DC793919F0EACC94D8519BC7A1A06F0629CB37A808E5EC3F0793B019479B4456FDC1B0AFDF46457E47B70664BE32401951D2B7C50EE859C933681902B78E7B12B40C1663E956C66D8C7A63527ECA5E8518D2A82AA66C0DD18C445DA431800F90F7966D5647E37D172F7CE1EB889EFCC494E712CEFB691AFE00D364A8A4A4A3216290AF8D1F14E2B75DE1546F1D5349D882FCF1A923BF4EACA189865F85CD29E838E48B8CC5C9AA93573F66C3BC9EC44979BEFB97400AD0A8C9D2E2B039F7CBEA29D182FBB888C75EBDBC8906557A24CDF162333D5F8A81AEAF29FF9A2FBCAC58EE19E1B33A9D3D0B540EB9FC5802D7E478E84B6A034E40BC3F5A0DA5F583826D3062F0A47165AE3982A37D3793CCD06EA69428F1BA5C3A6917EBEDF104B2137AA4E24A5454959F3EE3E9E1DB1886977099F5375482722A4F0B0DDCC642FC1D4DBA7966CC0FB4C31BA2796C8706172AE047738FE
|
|
|
|
false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"44770F1D9EDBAEED88B368A9D58D98922496A74798C63A865F22CBF87045AAD46CAA4581069E1AD7EC00EBA6E50A22E2BD8966C34547977D5AE4557F60171C466BE38579C84DFE98F03ABE80631D6A48EF589C6424FEBBD5A69EBFCBE20D5091B19AE4D06490B56D2E60139EE47A5019C6B8A069AF17A5507E3E226CD9C348D2FF45E024A5E082ABFECB44B89EC3E4E1707F5E9DA916DA6A198D0EBFDB344ADDCF1C3A4F359E554A8C4D572B1EDD6EDEE616828C239277F10BD7C2791398FD928044E72B851009E9186FB81907553AAB59668D03539A47DB3CECCC3BF51CC698E9B18A2ADE60172E7C071DC48E6D38133B6A30B09A08EA56B33865DF784CED745AF0B7A0F7F5130854FFE66335DCF24ED530247C218F2BB794C36033D74DC7230ED6EADBA4688A7136A2FA3B33EFCAF20A2987E8DDFCECD9840B83B0A59955B92DE6130CF013F440E4CD6B391E8006E995A8F5ED6DF353BF06A48EB24D75E57A39592847169D5EC2050BC487151A58F14DFE81A3D396310FC64E2B2D0D484D7CBD69B904009301327F09D5C678A585337CD36437ABC186040C655A95B869837E9E7E3EA9F72C28046287B019E425695C911269084CBB2257587FB8C9EFA6C293E98F496D8F4033FDE4E91B141CBF1660834F9DFB221BD77475DEA58327BFC49F40BE04B9D55C03D17E5CC765E879DD29C94408AFD2994C51656F357056B84F6A4EB3CEE4797B1A4C79F3EF32BE5180DD0C7E7274E7A5BD5DC0469D50F6BA4E77487650A6D87313BDBFECDB30443FABACA9DC5E9DC71550D11FB19DF8E88F85E49E58336D034581D2C6F584E5B279D19792B3ECD8DF9D94DF077463275281BB984E11741259F019646E03A119B3EB5BDE2B4F76DA6A775B41C7BDE649AB357082646D059611178CB5B6C11235D88FE5FE7707C4503538EAD225DE75DE04B54FB40F6C91EE281ED5D0E1C50E782BD549F06B4A3B12F94B4FDDC81D35B1C4C4CA33AEF0E77D60A75F50B417461B657EEE73CDD435E64DDC55213F0314462FEA1D7A93FD1ADC55AC2CF5C370FA6142F131F4942A06F2FA1E2AE9FCA6E7F88ACD16D6635A3240A6676F20D4B93118B78BC8293527F55896F842D2E0F7692DBF96DC8E91F058A24628B3873B8ED835DB5AE6FC3CE5008E6D9F1A2356309292C41AE67D7A781D6E2B54741DD27E3FEA402941DCCF9385D08B932BFA680D20A8724B7F533D437C771E6570E5F627C0F3E83F250B781C5F8F1DD74FF9A95CE79DAC3A59D324F5201FB191CB5224AC38F7FD68C276D2E179B19E1ECDC0A7A9301DF05A747DA7F6A788FE92C2F51A4468EB0BED502B0646E47C6C6CD949BD64324637A9B781FAC7F1020F132D2C00CE23B0375C111E0D00513E99013460C5181AF055ABDFAD63A6A495BB7815B84093D1826D8A906F6E1D27F0B3B51B800B9C86F06710ECFFDDA849468929C3F2E631834EACB4D89B45DBEC893129F0FF3E0FD63B0A10EA8FDF3AC92465C3FCD7E1177F7C731A3BA565818FE64F2AA5E436110CB10DEC83CBA9AD32A6FD431C29E6328A49372BBF91C5CD5088F4830B1BCECC540108188AF28D93A8FDC61EFC212611528EA666504AB66FD2F18F9203EF4BEE8126174D832A5DBCFBA4A5127A75B5D0682C4D93F8BD134556A8AD4F34DF5974FCDB2FD2C4BFFE3799159B28F3B4DB870636BE139CAD891656CFC42C6F9128A538BCF8DC17E9A98DB563AE19A769E25825EE034A4EDDF4EAF9EBEA7B5E711A9EA0A8F1D84B432F60C27C96366998223DEE7F8191828979948CAF2434E7186070DA40DDB9DC15A90CD03CEB95B53C47515E90FE549BE69381B9FDF342C05EC0F0EDA12D2D1AEE2118E61FCACA7E1FF0402F43EBDE9A51809936C1B6D3F1DDE32DF96135246232F46924AB36FD0D2952DE42FB31F32DD1BBBB5538FA5658315F2AF59029BDB28A4DAABBFF0AF132F767312D94485F157C0124DEFEAC2BBADA85AECF8F9864487EA1FFB9D0E90A3A1D4FBC5BA9F2D343DB12538DDDC86614DAF8477A97A7265DFEA4B63F01995DC9C984F1D3A354BD8C5164E511182D49265E3125A112203FD5CB2D770A07E57DDD85A4C4AE1D2E175FEDA9D625638999AC1A41C0400C509364CF86F7674F3BB65942A47BF1E079C453C50DC6548E5528C2086261417E076DC2F06E098DA8565963DD43A233644CC8B5C8CF8206F25C6A55A180C19DC6E63B97F745EBFF03881ECC081B619921296DE55B0229110FF2ED05181E04BD9DE0CF2DB0EDBCE1B6BAC61C5E9937AA8962EF2B1D59C80BA03FE04F25A457FF2A9A54C19E333CDF47925CCD2F2C44097977BA2C7B60DA954D136BCDA7329ED03CE1E5D8A9F3F7DBF3553836282574FB55E5108A1B595218A7F8CF74F8C0F04B0AD0E62A26F31E991B20E138A611DABCBC9AAFB1938CC5F26F2512D75C80A108B8EEAAFF5C9D756E278FD3951AC4CBA4CD8F5ABF6B4FB028501BD279DCA3DF285BD9B84187A8017ED8B51787F22E196E36A10615DCFBDC16C79A16FD9ED7AAC886061EC5A89B800319930DE878887733825946BF3EE97CC9E5B1BFB1A5A52CBC6FFED62E6B9C31D16C4CFDEFC2664BB2E2F4215F549824C5B340F775462E5BC5697AE134B0101E5E7B8FE489D0B4AD305C168C9026EB9DDE5371A966FAEA8B63ADD146A084209F1EA637A0DD92311827AE2FCF57005040ADE72FBEBF622E1459EFB5291659BE699A53C8E342EDA108E15281F5BC05A23EE765219F16D371CF83BB47266934BD27AB4B4003033DCD0535A87BFF0DD1A22624B603A0466F280ECF02E46F0EC8E2BDBE3636E89F9A48A359C729FDCC8AB8309C56E5B7FEACA1DF254BDAAA45CE3390C5E7C958DEB7A6C9A3C2AC17897ABCAAF4029CB7CE5BD539C940FD76
|
|
|
|
"44770F1D9EDBAEED88B368A9D58D98922496A74798C63A865F22CBF87045AAD42E02341517ECB30C75538513297303664D1255EAE9922D40804465CC9C67B5CACF991C1016A6DE1574471E801674D6A12FC92EAFE1C5B12B221D5C7C489BE9608C3DA7FC770A8CD1B36E5013804151D9F6D6E9DC74E0CD2C85C9B18B41975661CA002AC3802D40160461A401019584E11852082664C3083090968911103021336623005214124A19A51011C64408883142B09163B204E2386413008110332088B290D4186A1C182111362DDC486AD048811121921A8291DB8208CC0806A4004892166C54140C0B890C1BB46C5148215030209B8669A22662932046421091241209D8100C61B60D01B25020464A10A42961926498162E64C0280903088B087108C4645B1466244100CC2260E3960C1141400292811CB82C9012881236405840615336929090411B434A50C0600987809922418C96802316308A0692519609190721C9805093826C9BB00C024871D890415A842861A004A1C651CC380A61188822364D93141212142E0B874112364D04A96C4322224CA06C04A0259A86506106491A424D9BC45163040CD128008AB661E1A85011034D230209228904D8026408218A641882C2B66D8188712045248B461123C951DA960D13498962324604379213301122A74114158114106E033289822422513869A34246C410400AA165529210991841D3C885A326264BB611DC30051023208B105124B80D0B832012386094061013C90C1B322AC8366C8A0004142064C09605A204524A468501068A48A409644244A0A47010940943A22C93B0098C321111012D03882D48204AA3480C219569E1166C4A000E994644092171544069E11624223172843068C8242C09354A4C023144A610124168901080D83040A3888421306921B66D998425122565892611603449229041D8405198360D22C40594040E1AC66019426882B44CCCA6051100268A42020C380E23C230CAB42521C251C41230533001DC20308CA2091CC800C3326901054C94446C029624D134329CC8310321652381080220251CA845123390A4400523472CD8140E081409D9B20C54A621E2C2110B308523096200398AD9963103230224007210B368E2B60812220C1AA68CE404295138221AB20C098861A0486D1B45305CB8605B368209A68C4214618C4865213761082301D89621D9242A8A82510A0746D848865A484C0B182C82422E24074820970CE1360011803008A36022396A8BA0644190610230091B33305310011BA90CE02405C9C024032300A146721329255B440DA40020E1B08189A02C594886981064E294680BA361C22060C14888208064019044C8166960986402978811B59119339162244912C76049A451412628CB2428DC80858892106212610B004A09B5090B244CE2C83118A24C44B64998486E6148459CC868D9446AE49444C2C4910A24301081282132410A212113C17001356520C9819C18200006868C026C61222998386D88446564B84CE4B030C9366C802684CA104A242560C8880DC8C02D1284281CB24C91B261828005D4A04120A408010421839865DCC4015BB8645C428A0CA1600B250494A47023070282C0294CC46CD80881C41205D10469001630E3A6445C808D41226C20178414A6700C284A43344A14B869620841A4362503072198B6085894111A244D12386D11B9315B3488044261C332510148448C400AC012618400409820885A4005C1B08054B02D014064E296840AC78948C231089280E338849B842CA4960C10449041A851183708E40265E29664D340526234800207050A879011174890806C5398496412090CA7706440489A800401384642348CC0244489C61102B204D2380ED8C83089384E4038720C998C02412C09C58DE4008C98A829E4986899382918122824414424216888C06D22216418A46001150400816C499444CBC248D9360E1C16302185601CC40998006459823002C8090BB640534491E418860C942410075082424002C47019B38D14C0680B8270D124620B366821162118B95103240A22A8718C260DC296000CA41162A24489422900A965E44446CC3091A0A030C8C4689B344819B52909A92C6420105AB0880C17304A024801084510430622396AC13290E40881C2A06C141622E142819C962C1C215108B49012270E44162198C469891230DA906081FBF49430FA82972C8C8F23ADAEDAC6B813412DDBD8D886827C0A6C8682D12F59CF44C6CBD3AE3D0E0ADB50AB2E1FFEDEFEBE9D63DB4146F45EAADEAE08A7ACB254CF4F84906421C47815A1C5E31915E064CF479D637FCB3581BAD27B80996BF78C87DA573FA14487F4003C5CD83DA097C88783C808BAADAB523C8F31A6241F2D63A01479AACE65A3345C33C1D67C91825891A7D2F99052B405C9A30313B5DBF3C7823A7DD135208BD7BD9E67EB172B918FB85767CDFB1F0F1D98AAE225C4A71CE62F3FC4B7C9AE1A68ADF67332C71D22A830446EDAA4D073C7449FD5338D8112ABD1492C168F2E949E89141ADB61EC5180A2ACC6E52AF5821E3DD67E7FD5308780A25F599DE83325397789DCE2DE544594BEFD394866E419859EA7F8958887656E9BA698895B23483528ED1816BBFC574B360D612ABAB62D369C04C0ACCBB1878B59B63530D3D918D52BD0FBEAF9B16EB5AD754590864ED69702889E8FC1A5207C0CAAD3725021E64264DF66790D8E3085B99A3E12A2F613FCDEEACBDBFBDB1AE50221C4BC576926F5B1F6EC1EE101C5230BA3162F6A193FE4C391B721F7FDC214AE330ECB597D9C6D3DB13F99295AFCCE2F2D43F9A626EBC42751451D5547B0AC166163AF01C7E0306E2B910BFE36430D980F800FF343BEA5FED8EB49
|
|
|
|
"80458BD14FCD647F66EFF8CFB3174D2FAFB1FD62503A9480BE8253EFD887348D5AE726ABD6FCA32F122140A684AF762701CA32296357A1A6F161CEF3FC76A1A6967C7E293E4FF9E1DA61B9F1E085E28C754F66792ECA0AD81164FACFDE7D91CC13202B663BEB76674460F36E30B20AEB31AC708D43B4C7C2E3B914B5B73D42CDD0EAA4EB711338E6DDA92EF58CEE922519B20D214B61B6B80C9D7973D154107256805CC2D8249D3ECDBCEFF96DD35F5D2DE609C8B0984E2CAD7D0F0F5106A2CCA29BC8EC4BC00C237ABDBA9A8E63351BACCB797420B30E1F6CA783E44818FC87567D5DA2EF0B29A75A2A7BBEB8BBD4306257274E8DF849FF3EB8F77467674DF57C725563939873D31A076D6AB34DD7641CEB4C960D78F9ACE0F13B63DF43AEC7952E0B8F20F11BAEED35C787A52AF0791BD7B8162EE32488027654AF466108E18E1295A4C6F23CD4017A793200FB2235A081C4E8253DDA2AD3D2825CC61C296767C883C75F91FBE0BFDD53090DF75A84D31ACC6FC970AA11DAF535C2D3FBB25583872A5B80F5506CF08D58CF4FB41F089455587972ADEE912303BDB0FDEC6E17ADA3BD2D00EFDA2B943E1CB702CD1598A532AE411360F841B52A4A5B21E4AA0D455A9D654CC53B42976BD96AEEA3BC6E5FDF94A8F9B3724B080AF33B3172976DA80B5BBE3C757739DBA7F485AB004BA8667CCDB8525318A019D9DAC3FF16EA8CF1856B3A4C23EA2D97E6FB12548B25E2CDF2521CFE89F31445A7E226A20F20D7BA4911D0E3199AB998CC4245675E48FB007CD21FEDA5D503564E53E6DC83F9DA2C63709C87255FA01240C1D48D4962998EBEA99CE94D3A2BE599F642BAADF95AA0CF8FCAF7D6BAAA18BC6D28D0BB9D4C900E94D6DD99A9BC2E687241CF775C7F68918F2A96F3A7229487359209699358DBC6BA172C62EB2FF926BD9EF84F314E4E7691631378134A25C138C9C9A3E2EB076B9001C6ABF6FAF5A3A2A93DCCE3CD50FF35EC549AC46CC780C2235CE1D29CD0FB6BDC1C814D8463E6FED8E4DBCAE7E495AA9B3FB3E67248AD83143059E0F47B878508B4C762FB9B759F3B0D0C194B94F37C3DD64D2355031FA47E7CE8FA02220CE4FD265FDA60D280E96308EA92EC2B00FC2A5C03005F85AB678F28347B84D8A826A0F8444B911DD840D7ADA8006BAECCB2F86DD2AB48ACDD4272F0F8381357970B095541B8DEF96AFD074BAD3CC71D58876047D31CE4B17CE1B12245FB1BDF8C84EA6F1EC3362DFACC89B75DC48E8E64B7EC13189FDC817B281977E5D8C6F4B464103BCB2BD5449B79E6B09D60DA955997FB0BEFD0439CBFB69BF308D1A6E17D2717375AE7265FC2DCE35C3B9C37171C22498CBA431BCC9B6A22F28B97217ED5224CD577F6B8A324B54E0B9CDF06E2A8278B2A507C03C9FC8F2D128A4A1511E7803B417FE03EA74C9A09BD0C185CC97DAD3CA0A908FF1164CBB5B59D053D2D735B23F8A88490E5C73532508E6794B245CB18C877886C0B79E4C60FC506DC7FEA9725A1CAA1949576B429161378F62ADB7BBC7A8528C498FDEE9A3D1A0699F04B46C98492702D01469DF03C2169F91322E0165FF727C6B31CB711F8A2DB3367F14A7F0D8C190AF1DAB3A24BDBE1500EE63C194D6D8A3BCB53559E9C6107B4E9E9CC1D7178E0503B2D84E932F21A09BA54730056C41D330FBBF8EDDC553875C3E59566E49CA482E693DD6AA199F6C34132F3D4D7CB997E4FB1BA16FBC6E31998268329B65B3BAE284BCBF0426CE5C9D1F3B4C06ED19C470E4CC1204ACDCDB28420D78763C8B7F5F261A57312A8CA11D104E3C879683970ADE6F26D512D10CEBEDE990D7EB7CDB5BC2D28A841492D00B9134D5A9C8C911D2D553E307E73231A0AE6BD40A984241F5F7F540A8567C5EB1770E174481AB57B1F4291A3D72D351038AE0F063545719A8896755108B060BFF8155EB3845BC81AEDF2861A1FADB6D4D15CBBE627BE01752465D01134A36EA55CB1508D02076DF39437C536BA950058A7AAF57655BD7048A260BAF14F5D51B32941AF1F055D7EC7D310A39707A4D5DE571F6E865797E60CD055EB80CE400437CFCDDA9073577816304C0D3CC9419E8DE189325394208003D123777E74AF13E14D6CD9A631B767897303A6D79BB82F47D45F30E22151A4A8730C48DBE1EB19D724A9F4F88973ED116B54A438C9F4101AFE586A8E86388A416562191FC8D2DE183C6FCBABD22DA03FEEB61AAC93090B8D2B10AEBF045547F055C72629B2DBC885003842D4813C2AAC186EE4CD28DF098B8CCCFA9058DF507E444CE8FDDAB9ADD284428B9C95975926A1069F54D48B3C3DC401E260AE4CC88BD4D76CDA62CCB3B7C3B859651CCD8D6F2CA9DD206B2555B0274BC98E70718BDDA7A769220685CF7E270A79293B64888D9053D139296F333EFA725F324ADBC13DE294C9A45A1DC2FDE206909E635023867D136932AE6D72704CC440C982B285B7A8DD7A5FEA06A1F9867FA79CE080023B3CE2E5D0926A1A5CF4B4ABFC17487D8AA2701E668B606963E4FC9DC8CA6624F7C05812003D2828C74305BF546985F6234872020577C3934FE222F8BA325D62B30814810D6CC5FDA576962A1EAF4B86DCB7CF262C1A2D0C42657EC53ACE9E5D6D236EA0EF62ADF36F9F1D328306F9CDA85DC65990CB8522A804E4BB5F349CC2A81A30177DF4E3A3105FF2B23CD5102621DEFAD69047779E3BEB94D205BD5261525908942D1AACA23357A00769C10E3DD7E978B296EE1CB1AE5D31299617FBB1675B744A13E8109A9090C5ADF826FB6D152BEA006FBABDC6A41B7C3DB43C33F804992E652E2368C1EAE86C53B4C1CD2A9BE666CA0FFF4A95C1A26E7CA9FB82FCE4796EC55196537BF6F900B94F7E691398253936391872
|
|
|
|
"",
|
|
|
|
"4C8C2FA8073AF0CCC603729E60445F04012322685C6914605D23D028683732A010711CD2E75DB52D7FBF9080CD96F171EC9EAAC0C02C9ABF4AF8CDB472BF86DCFED0A333EA7DD0D4E242839B513F87E732501E2886D8E30D7CD157EEBE708F3762222FECA920061D2B26F0D678CA4B2EC221D4AF5B19A881D4A4D8089DBB1690B6530EB5F0673D8E05229BA6EC53A854A54C9E3486586A96A1A139805C0E261DE1FBE6F41038DF27B8BBCD6DF735ED6F40F5ED015483E00AEF33FE555712690C18BD851F9E8A2CA18F4DE543B68EC67E590BC1558E7A883794BEA8EC1CF1F4BD4B109E7853C7080858ED5897E321210E5FECF803BCB59BB251F579FBD1FCAE2BBC0B12A196E6F320596DAD871AF97EF11E2E7CDCE056ACE48A9791F5D8A490DAE6764FBBE0E95CBC852610ACC87BF9859B3A311D4B89C4B6D03276E668F102DD374D05FC7DDB49C3D129EB41B4D19B14BC24C203D5264F7A85A5BE9A58C28B58C4205A2B9D60D80958F5E93E66EEC31FEBFA819FF4312301EDB89F02107C615E290959180BCEE1EFDCAC71F307D5165B1C876990649FC484E7EB0B9A8987A9EE0A4140F38A5872AC2F8F9439BC3FC6A9E56F2F93CFDAD5C28EA8B08810EEDEA824661521F494148DB1B7C6671E2398CA00E9FAE81447D632890D39713CFC982C58D666583CC7DE230BF7BEE50CEB382B40F191538D0CBA3C63D2B866F2D5F219FF2E7D902A2D88C2286FB5F7565E67DEA1E461F8F68CD536C15190BA4A434AF1D5E2722D9C5C3FF05378759448B01AF5A0A735411C61F1DE4E95FCD062CFFD058A107ED5068D7F3EA4B0A06BD9B51DE240ECA43A71B4344AE54F365E4DEB20CC9440212076B26F56D0D45FDEAE45C923333702641D48A9023C883B15BCEAF304473CA9CF7846F63E6AB74A2731D86E9EB2683E1911B6EE703BD07440F6123A313B95D55796B08A24B43C240A0059DCE4B466F05149470C7F658725AC5913820B4B87AF20677B7BBCD8CF5F36339D8AB4B7CFD89D921E3FB4D5F74B361C650F406DC59367DB82FE4CC69888CADC19414D950D74FF8F7C37930FFAAD46F532EC982C0B9EC5CD2CB4C6DBD2EDB1C7CB5E68C304CB4AD7A280960C14BBF036FC6FD81CB19C92E3B227827E79269645695B61672ECA78697767FAF727930325E67E78558B4E5C8EC4AEC1B0BABD87F624E02E4BBBC4C23349079D2B897463137134A57C32CA6073D2F1C9302DDA9A804934208CA9E2FF452FFA1A1528CAB49CC7B01BFD042B6E7E1C05A3ABA9036536ADBE203E7CF5108606C5F1E1F7A870F33D92C68EB75B506D0AF7F74466FEB1CE2C9FB733368C0D5EC2629791DA1DC8521515F7FF4461FC1F28CC2CA8F19EEB4E7A0309BD85B1E9FF972C912D9F05D6B47C82E39C44ABE0A7B03D52159CFD90142CE7D709E5852E7D75D5A974DCF824CBAAD17E3817C81BD6673898FC4BB627079C47320592BB6EE258B0952AFE18035D100EBD749353C9CBBA4AD4A336AD82B7B2745CC1059D65AAF8A6984EB1FEA3F35C86830327C62D1A5BEA9307E91C58F46D8908EF8E3FDBAE82E5795236F84EAAA318D3852E950D3D65974EBE0C00E8CA2DDF537E9EFD1CA6E2719187CB0BA37C55C2B4825A841DB34EC4D667C18EBB2035805679C415E576A75DAE6C4E913A03BA5CE8DF9D93F95C6076351A6D1943B0EB2571BBA8B9ADE3F095362C6F22B7510C5E86F9BAA03E891BB361D957998070C9B82507931A2EB6DFF9E73D8B9B9B5D27CD44E0FC734CF99E3C7314DD4634E65640650E9811C26A155BD85DE990A49E932059B58C04D24CA1F8B7A6E1DDFEA8DCF4338FC81FCB93C2528A0C008F8C44DFB2A8D5242C0F83336A8FC47224F821981E70622F94BAC51357E968396D512368DDFBB684487569465981986D0D96004622A1A500D16BBC248CB9C157F5CDD3E27EBAA03A423FFD0201B3F5BB36C7E916DECF74723917E0C80ADF8F2205E2A3A4E9AA1B5A1FE37046297E90A43A4A9A893AC9F147EF23EFBBF9F5EDD59089C66C495EF45A9FC5F1BA617E0769D0495E89892A5FB7B3BD51C6434EC960E80F9B2C24F38BEE9A66201F4849FD845406FDBCEF787000836EAE813325CEC19602BA86F3537E74BE7D8FB48F5729676BBDD8227CCAC36A4C7F906DE516D0844618E6EE9E80965FB0DC411BADF5760AB828058E32DF1CC9DD5BBA22DEEF386039D25A0929C3C57EF2BF6455B1C0C1B3CD1AFE33382DCBAB3D8372ADD735B3EA134885FF181CC30CAE6E1364E4D5A9281E503B94EF9D73FDEE92B0A333DF30646853CC3887771F9C5B5D2FE3BCACDBFECCB32964652B61CD98F9EA5A7DB60139E10FE9D6C3F792B84BD682C5116FE4271EDF08F58629AA211E40A4D7009D6B643FF4E4DB8F989D435CEA67C599F8AD3933072E905265BBDF6A6FB26192292738FD86499856FE98B4EE452A0102283063940F92F236B3D683A531B805F200C5F69503C028B84A0718EE7F74E27032A4F79717F73E53DD633C616C9FCBD1C6C6D35A248DBE3313969BFAF51E3E6D902FB12F08FEC94731BE4F120039C785F3DDF549A403EA990DFE7064014E516E52A799B37F14F93399E19B40D4CD374C20693F6AF61109987767BE8C6356394D245E4C88B8D92076B5764D4AA4ED8D5C158CF92DD764BF17A381314D7ACE9E69C3AFDA5E333EC7CFA149AF78D91BE2F94552F2DF99D2989E14F55B13E0F6DC761CF555FB4C22E2BA404A916C47618187D53CC199F298C31302450EB746D0B72052EC7284C6E24B6BF2B6AA6F619F3334DF1C68BA5789121A1D076F0C6511C5229A3B5CEE45D536352FFADA5061224578ABD899B2EE97E3A0E28D72A1F20ED10D21EECC6F649BB8EB3D1016D2DDE21E346EF2BA733F7039
|
|
|
|
false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"CF200E5C65EE485B87F4E56576921CEC6A62879D0AB8C3EE6380DA6DAAE56A1E350B6590A8C6449DF0D251F94C963A09784CC312A903BF408651DB681704EA9BF70F95A786583FA5DD2039F993FFFD361223D8D5C7CD3B120567B01C5593C2FDE8F0B65B84E81010C61515679BCA49AAE6FCE5633D99B2CD905C80B7A86331E225C6523B07699A7018606ACEAEA4003BC468F47D3254585BEECB10A474D3B0A26AD08812EB78B6C7B7505CD23CB65267A7769B3514E142FF11BC72ED29D94B6E5AC61F1C9F5BE79BA363B339788C627B95240ACAB021E62BA2F2353D4D3FA30E19E9CC6996949789A6319E1D0C5E33227368320E2D2D0739A96CF4CD141D36CA69559C7AC5FD9A37D7937C45663A0A7C3DD86C1A048621E192FD0DDBCBC0E762C893E1017070C7A71B5AAC364BFAC4E545E6361122723C18E92EDD2341F024ECA779B4892FB4495C842F535505BFE023115E455EF55C53F00B8CAD77F40A8A85CA77CE8913C9C83AADD167B87BBC2E669A1FF14A30FB08372B383DD3A4FE53F91BBC82B85E21CFD77F1B92CE9B9183F78282404EFAEB58DBF3C70F840671340B40AD618749EFE52DC54BCABBC69A8550576C81F4FAE6E17C4F3595AA44FF357990369A28ECE35596101CAA99005FF37956857C8C49490B77AFB358931AE6E3BA309889EEE0E014289D4C87A5BBBC8C26575FDED88FF20D729C03806C89A94944197A9646EA903BEF807F1A6DEDC7D97B7B222D2DA9348E136A6DC26B92B5EAF1A13E5FC68E89E6BC9D544D99BF190CB3C5BCC2DBA328F09E458DE78238693191698FC68AE88DD69D6E7780B0F81CC3FABC680E18B10635FC3F99D8DCE73BED11DAF63BE21B78F2416168D73E9F14E909365C08E2D2680B78AD7FBDCC98DEC73CF37EC69BA4380AFFE18E79A0813CC52EE957CBD5554C5DDD18DF6034C1A09B88EF6C96879EA5C671D57B2204EFE078FDE2ACB2878DB57E6C48236B135D4DFB0047845D3AA6258E938D066ED12177C616AB8A528BC254D0497E1ED7CBE0B4136DF30AB9F244F5847514E389A5FCDA4F2513F927EB9D213A586B4ACC0C8C516BBF4F65A13E6F27456D26914827BFB2EAF996A2D40196AAF24AE01C5C3EE3AB3C85C07B051F6C5F17F2BA998CEAA0D498C3758529CFA4A80728EFF0012F4F9A9B9B310E5970424CBB6610D8AD9E26F5B15A2EC17684A2B69D820CA62F3E7DA4A6D2B072FC0EF99C77CD7B4EC6AF64D9EC1E2742678F5411F5554872C4DA7FF29C99E3384733E69DDAF42ED60884B61C07E1494D9D0BDF7E7A8E4F1337081ED9D14F084BA17C46739B86DD83791735F5A0FC87D6763F49837A1394D3B5FDB5A9371AB3AEDC83D7E8FCEA22A0580C43CFEF26E411B88F61A4BD47EF297E49EA13300888BEA0DB3BD76997F31C6FB07B94F23426B4AECBF9E9EAFE9AD2B0A9B03F24390A9B3359796D5C0C45F751B57F29482CC1054D42ABBF905EB18C537012F3C75E155D0447995C6FF0A9470EA7D1ABCC6C267D566DC444358CD53FE3CED1D4708A65E185DD3DB1E1D382CB949218120C407154B7CE058BD23C1EEE66EC6B29EA5D321CB48567972E4EE0853494D4D784A09E0F05DF78E491644256C26EB34F17B354F775129B54F0EFF00D2545A6FDC7DDE9BD44E6D6B9F63E7A9D0CCB65338BBD9F54065F15E4CEFA0B0EBB321298537B40243DD28C1659A771DE28CC8F239A522E7F2BAFFB58A7940FCC744E7BFE43F8A7C3125EF7B8B5772B41A80017CE8CB1EB9F0001B6532500F9D7371A24B3ECB5A4C54A2A43C02680282A6C2BF43C7B5FB48F89A4808392AD797A45B44679D81F694A7746CF097ACF93CE40964F4F5B2D66E92E3DB7E27FEEA41DA582AD1A8D1429E151534D374BE6F958821CADC363E0E4FEC79A269AB1BFD558F6EF3BED95C700AE04FB97EC9404008C77DABE3A1A37EEA26EFE1B2194EC723441A2E4DA5B53D9EE612AF63AC720BE9DD793B32D1386A90C37611DCBB1CA8F534ABD697AB9B0E7C74B5FA32C9B2BB5DE5C458E920EEE92CF45F7C6F45C18D9F2B1FF99BCD5AE233F3F84C0B4B34E769230FB5B5CAD77386C8F3AC5994E02342115F9CF4DD6BDC88C470545613A75F8DC55A3C2307764815B4B18C1999706482FB184424288AE57D755B60D6AFABC8ECDFE956E1799CA7A524D44230FEA429EAD2BA5152E214A345BB0F0F82CD55DBDC4CCA3B252A76DF6433591F21DE92AC67E4B5288DA62B0274C681D3A0D8553E32058B8BB788693FDAA6EAF98B2A49A78E438E8B12E4290687BC3E230E27BC39F520D7B8B1B620A1468119CE5410EAEF9135F91F1A5362CAAD6DC886746B82411220A7AC7705DB0642FA697EF17DBC79DA50F3905362FCC4A368F550E789A729C7258B0C2B0561C429016C2D0E166259C55879AF141389C205413B7988BB1C69AA965F173F7BCF4E0B889C5F7B901214687F740EA18CBF8DA9602CB778D30CBA2ECE5204695D55DAD2D5D1E9FB1F02064FC613989D8868F6655FB0F64BAA62AF0420A2938EE2D67F9FBC316002C7B18D14E1E0642E8EC30F3529CD353C226E0E2A26BD87F113539D92A17A63CB6F9B8E1CF7DB2DF05BEF5D0CDDDCA75121A9D32CFCDFB1BE091AE730777286AD2FAFBA410F47C9282940E8B3E1ED3012E4330C5140C9D4EE490F2909F10DFE6C3E6248AA536283FD92088389201F1A87DF9B7CC527295B03D8367778F916E793E74F864EBB8FF4B282E945DF505C71F945D4479172CF0B0505B74A1D250A0AFEC19A61A9D9D09E606AF4C983158822EEA5BB3671D964BAAE6A258A262CCB6E4DEAD89A9405E9E965D8BD1DF4AD656E957CB1107BE638E27AC7D3A6CEDBA607AF3698B7724F56CB02F85AA75B5A7196F6C56F68ADD8767D86D
|
|
|
|
"CF200E5C65EE485B87F4E56576921CEC6A62879D0AB8C3EE6380DA6DAAE56A1E5F01F8ED4379E25DBC3861939ED3C9A4E140470F9DD3F171E36987BB1A02A31E7CBB58B0D82BE391BBDA4309B52AE282D6283DEF4CEB66188374747385431BDE0EB022C2B50648870C0135219E2982FA6412026A21A70A1C4844721F070627C7D1B00808095163B4401A231001034A613831443881A11222DBA8444826500A99700BC091C2B628A48430114140620669E3A24458826401B84549128EC1840012842918A30453822003213214054804078D19A7050CC38558220D1B468622224D01388E5848114A3246CCA22D04C320C14205E4109022928CD0062D10382601182241408093A428109505D8088D24A50C98C624198188DC82000143496488640383710A33494C0681D0A649D01048531002CAC42840B291842864C914658C004822B46842326A54969182326C04068D4B86099B44248434905A340084186AD2A88588A885091612220105D006680809428B38029A30715B0640093622A3109254B461CBA26D01A82454244522070EDA180C90C204A1408DCA32660C894C23987092146102462EC1143100002504B52819840518B94C60480609124DD8240A103492E4040E59C87048A2401B070691848D21C69102212C82B66D88B87189368052340E5C444C8392612131254126050317245122841A0331DC16091B06248B4284142645E4362C521409A1164D23A38822234A08A26D1B90016088489C12409BA6901C058511498D23B109222342E30845A4002C22C94C0C854C412031D0A28013468D1A313108904562A28118A78D1C414098220D23033151A2111A376194102A8C028122C748E0040224C271029231511480C8146E12066E93221298445201C6811BC700800608C8824C0023895308699B125060182E0C348C11A8899AA2441381100923311BB3241A1541D848312310910A4268E01600E12490C4B80CE4020C523281242569DBA49013214642B64C082601A302860A0540E4466EE300824C384AC91864D9123113B96801499218A6305B42451A338E021651E2383218802041C04001838C199680A2041009182419B52C609081033785018900C8A828D9887049386A0BC90482344A03275144484223C9689BA06008082EC3240913A625E1840188868593104DA3A64099A24480205152004453C2080349850C8850E2C48520350E92260C93428408930D0098104C308C4CB88859C6405C94688B346852C26943908DC00006909084483831A3446D59B048E2386648988423072E21460843A4810498090B3469A1226901954D98880DD4484650864884200880222E24291250801011222A8C184149968D12030C84946548C06809206542166292005002240602B02DC2408C0C93498488415A184021242D9B481009086C912266510620C9A244D3C84124C2890C290A4884909B224D04C584C19248DC3049228644D406020AA38158948C1106824304820C029112208E232562130825092641D32801A0826C830850604491CC9030CA24718C1450223085DA286811276853322A124946519810842406C4902122A1491AC68550B0284084484202454498014914265CB0114AA68103C8852330320A886911B151D3426E09A4709A3889D13022613600E38231E120099A327298A4889B2001CA0608513031214548881082E2120C130242184229C4446DCA081043082808C200098711C4302C53027221B764A0062490162A4AC8680C92494B46450C9065D2086A4AC09190A889D908805AA0910A392A40048C1CC38C51C24C93C431C4B8858418098484289C448518C049DB942DDCB490088501D3386983084883C66009429204C2911007212402249142480826721AB948213671E4B8041CA08422C96508302218226C9C242AA21486A13206E3380A880206A2008909452554B8114BB62CC9C661E1424821358141965144324093489212910D913690C2B68D90060420010D0917615AB608D298298CC090044301C4022D614624CA90100CC58CC10612CA248A04312901484822094AD3A44059B821A4240D84306D0A032CE1420444960152B6851245121A0304402642641664D0967059B809144624894689DC426A01C400E03468C31089D21821CCC0010B34015B426180A65061122058C2514A107281362858302813C88CD9B28844122013348021914007D67EA63A376458C0BCC4844B788090FFD845A12242AE053400D09E62EF8B3EB6195297C23DA9285BF925105E0160FF266F2884D7A616AEA1412E18E2F6AC860371CF8A722D65DA5A98CF5A82B8FAD97B61A951C3AE4B40A2D3EA5C39441DC4ED940FDC5B60BE0F27C82D84AACC28A04D0C8A3DE53BDC2F86FDBFFB96A2F6ED74791FE3728D5854ED0E9E374885D30FAC1B88F167EE169B2B6FEF02277F0ED6921466E3CD8B09649DDCEEAB4EA62C04011FCFDD7634C321C0B0BBA604DE9B77A02FC874EFDE25163FB62E571A35FC70CBA31D22D07404804830EC6F0C9E9894D2C7BCC17626433C6A0ECCF17B45D0DE93CB151B5F321B251C92A11B2065FE78C22D60684817632A07470839725605DE7473FF8C048514578B90633A2828CBA86C891AF751D5A114C10B5BF814197D99A10B645E60988A6484764019E889D8115E218F8012CC356931CF0138ABBB22F58147BEE1ABCBB993A5BC45FB699C7D676C95945A7C0F0357C2230062DD251EB7FA9B5A8403FC99C2600879810F9FD197FA340E75B7863296866281A817E9F13394748669AA8F0DD17C57C4CC49DED6B301FB08A1C7C19679AC357F327518C09601D2DC13EEF65C81A4EB0BC5CBA7C858639D0DFE2E5FDA3BE010E1D26DFDF5CFA9C53876293C791A54B4D6452F04
|
|
|
|
"E113489658E12D81D39C66A0DB0541636DFC31AB3C4CFF84C38155122DCCF846DFF5F91B1C5038E18C1D3AD2647D036293B7D11041296DDA2E64E690C2B99F0E6ECB1DDF67D51B3F0C73D4A9272EE9A91118CBCCDB6712FDD461F0388F445460C762004E27157B5F84AC775326423B1E9C76D4171A67716F1A44F4E234A0EB83C6FBEB634C8620E630E5344CD62C41C94324D87BC81B5BB2C54DD547FBAB45B8F84E80680B7F4375F19D32761A36BCEF8CF08E7959E4D24763F6E390FC1183635B4E83931CCEB9D29D315F9A62BFA9A8DDD1587E0EA0067BE29D36C551E0A650379535C3DF9AC1E46F9D1A5F60B4E499BB3571A262BBF89111622EDEB2286FB791BF4F475865DD4E74BA3A073218DE107BE8EDC198381086DD8E29BDE9369FA9A44C783FC45F82A9F60ADA7242D61F3B20171451D114040AFF13A6DB0FD4584F2D7CDD5154FF288F3ABFD59D420F9A836938914285CC25829DCC3EECEEBD68CCA71D82DC598973B259991EF696A2D73D00959977A0006CB05937DAC7B1822859B66C3F194D9B1902B03242F17D7EBA7894EF6E17171F39E736CF78738B23E59C8B9C75511A6B2D6FACB097D9E7A280D1AB66EB961EB3F62BBD5A857A0BC6B2470C2A94FD4F65DE7F868DCA0D4AF741BB49833A3E6AF1C71F9AC5B6F9EBB3FD77BDE1D1295ECA55E5A45688E5D390F07453702D083E7029DD53F3C8A44A83D50F739E9D3B6B952B778B78AE94CF1B12626A017CC0C270165A1D3CBE8A41E05D53EA5800E6F25B75D031F07854CA461A127D0A85A8D7BF6774848F96E0665C6704CD79DBE92D906CEFA9538029E49BEAB41D25E7A9E52BCDC5412E765F4B1F24B1195DEFB5FB373764B36BD3A485A8A3FBEFE2008A0E8162BD2FD62165F5205A7DF805D28896D9961DAFF62B47E8FD9B63946C7FA69C1DB7ECE5868F9255E75ADFB2BCA1200C38676E889DA7C66E4843BF69764D50FF0D399A26DEC0FE481EBB57BC99902CBC05D9E2BC7FB3D6B7DECBA685D8B1103F177942E85E25E51A24EE3B745FA539EEC9971A878C68785021F84CC4DA22375A2FB762D37EF5531F606E24F804F8B02B8F81A70F0C3FF67A4CC1DDB245468948E6406C0FD0C96F71A726C682E2C512FFAA920A646B1E9B9BC6329CEE66FA4627F107BE17F75BBD99E5132DA7DBBDADE9B043AC8B6D7B4FA557636A8D635484D4CEA23F8FAEC242571E77DFBBC3F2FF31C0FF43EACF14C931966CD93AB2DB11C4CEF09ADAEF6DE9F32E7CA036ACE611319D1D69741952C5697C2EFD98B671D4BEAE8CA1D5249C4F29745D3D957E4660940490AB879AC0516FC6BE773E975D506B121F7D0D7A16C148A403356AC28B27F36D95F507DDE6DE2B991CECE5E5F42DA9C80021A63ACE29FA97886D78EBEA8CB2A45C33C407196C33C5B7DBA41158D0127B20554F3DCC50A05AFD204919A3E275C1FD3EB607A8CA1E4F5E728A6F83F8B7D1871BCE604DAFE3133A6DD237BB9237424A280A10A29997EFB69CEDAF64DBC7CF5705ABDA25C0E9084F59A03FBAD4EC4C21EF4A4BC80FD632F5F32036B7326CDAAD8C0BA8DE59319573D21F79CC8CE3D6D3A5E1D1B6755C62AD8A3456555DDA6ED26CCC9EAAC0F203C000C0247184BC2A4A759492A13F477A2AB668D15DF29534F791FD89B72E4B67388210FDEF8718155B9149EA91D100D0F583CCF6272A86D1FEAFAC8A9A18BB93602564A1103DFDF7AC90FBE3C393E3A41B98A172C2AB8D9C24203BED7FC5A557750D7E75751B6897F68EA2B5C7AAF2399C2B4F406F30A0DE9BDABD78D4F4864F46C28EB6CD80CF6BD811A3628A2976E19910E10514EC1A03C34CF6458740A899F12DDF3E8B8B4A7E31642C8934642A912044B97D8D777C25011A4117FF00D0049AD7C7B5BB9725538D6E7C91111B1E0564F54657454370B8E29AD5B1DED7EDADF63DA552698F87669CFFC0FE305FBFD6CB20EFECAEC6413F29304442FDC1524E6DADF1D0F1E92653E2F51E87839AE927DDD27331255A5BE70E963C8FE2695BBA86439819879CA93F51154609AE4FD665C027AC597CD89105C6786D9A29786928FFCCD75900A94F892CF009B75F215F7B3165074C925B875D9D98C3D626D52F5BCDA62B0ECB08CBC8733FB403352F9E894E947058D336CF2ADAA262CB71C3C9E0F43EE7FEABAE0FA1BDDB8262866100FF643499EFB6239AB4A5D7BCDBAA88A3F6A13A65352F02BEE884267B6DEB7402977E0C5415BA6A1B59741601699793C839496ED788F97E0CB849545AD17D0ECBA641546F72C2EC6578C25FB43CBB083DDEF8F97CB71B43ECED7F16011FE3DEB92853BC72D472C032C525F2CBE56C8CCF4B733EB036371F62B329E233F5B28A6B8E4520C88B54B01CA82FB3D67DF615D0B30BB3AA4E6CFE481C47C6858F686179FB70C2FB3C3FDBFF1E8C1C34803BAA79AF719C572B86DB50405C086653CFA9C56334112870C5414F63DF3129BD3EA525AE1954382DC5AD0D9832C17D8F3EDE4FB6DA732660589304A9CA1CD994738301DA98A5321E5F9FD65A718004C9EB1A7FB8C59D404080BD534C7398CD9C087F19378A69AABE9714531BB3A61DABE0774297B8E1138CBA8C434263CA32B3BA8A018F2CE4402DB2389AD829FBCDC400B616A54C8826090F451BCB965CF632ED7D16806A1E62F61C8E1FDEEB22D2D657DA9E59FC1F31D10A6BAD8EDB5DBCD21685FBFCD1259E9E0F12C57D593175BDD4F629522E0DB7E87AE8A509BC7109E20C790F60DFA6CD812DCD66B408ABBAB0746A00E440C84B26E6DBA39FA6CB6C76C6CD2913E1EA27D4DB691B7A349EC31D874BD429E8CFAF358DF14A077BA8EA48479A52CCC842FC4993E8B3EFFDD91830E31E479013B3101899F156DE33BBBD8F5919534C
|
|
|
|
"B3C4558FCBA8C92EC456A5CE50151142F5176E102BC843DE01EA64FB93465F50F0E7A9A6FC930A413EC5AE5699168AFE75C6FBD0C655085C6A5222D6E908F472AD3FE5DA148709F0E835653325AE3123C04D0387B80D8FD5C1BD2D0683F276A4F9D305CB3A4A4C794EB3DD562BC91A9859A6C860ACED45B30A1F25600057A4C68C90FC40468ACA89AEB074FEC09AF5E61E2D5E27B90335F6134C5504D4FA29C2B29EF120AF39C5B8CE8164E2E359FF6023F95B291A56647EB1AC790C42980B12925858C0FB19DF7A56797E1E82E7A38D",
|
|
|
|
"16B382D1035542541885DFE718A3AB82D7CCC3BF7F6FB48AA3FEAD8E40A0FF73B36F42525B0E2018B7C2E5B5F4ACB1411B6109A8519B1CFFC44EB257F340FF95B6E73AAA8143918EE44C19EFD8E690671C8D0A49F6C2506D96CC75C5541001BFDD1A837F52B84B6A6BE5BFD5269FAB02BBF8864BCC14FFEB72405489C7019E19DA1817DC9918A87B0E060743049E96D174849A784E0AFFB9B4EE990995B658F91BF8B2478686FF47C35AAE7B8461B1A6546524B3556685DD47571FE0D3C53A416EBEC422DB79A33745AE0322DAE2226615C605D6194AE3A1C275E67BAA1D8254D054E90F0283DD7050528010F73C042D7C02DEBA76B9871C5721B9790B0D20EC5C64DEA771E0993BDC23484124B8C8970368E9B572EF2D9240E32B82DE06ED504CE22A715C362BC0439CC1D870AD73FC3309F48AF33147157EFBFA48D0624E77BAC913DF8FCFDDD4D5AD2519C0197C963EDCFD2881EDF4321926182D069983E79F98DD99F6E2BC4810521D64A2068F87A3AF23A696E8F8CB36673D1A5B55B837704A208A95930CE47CC3712F5C079946F764FD2DE86D201F5A11AC4F6C4F2B81979AB1470273F38ACA3707961F44D12056E9AFEF7820928ABCBB1A8BB205ADB7242BB9E68BC117D8DF912857D06CC61ACAB62778944358BB3D7048F4A697346C30158EC74E765B8E5AF490FADC1E30207341A110C1324E6980EB240BE3E132EB7B0FB1E3A9096052A64C099F7279BF4D83CBEFC6267F8D83BB73BF624CC2E252115CB7AC5A87D6CAADE47BDCFC7E4F41274001B1BF927F2B6C18951CB3E7144976DCFEDBCE61EB50118B6375B9408D763B6B1063FB8D744157F7C05D59725AC01B931EAFECB868C63F976FEB0402B096C8BDB3462408A427C86907C59A9DC7B4256425957EB2685D606F5A48A1D51EE439EC514170361AD2C6DB2393D2D0F57A7B263B6CB4C253014DD6175D858BEC36B4CF4F3EDBB67A8DB36B20461226892EF94C220A9C643F46F8D69AFC622FCE9D39E7C25264434B491FB2C8BBBEB5C83C7A4B69B47D83123ED03DE80299C0AB626CF47248BC0A358714B887B4D3FD877E201A79D49D086782BA39F70A32E0165A892066DCF98764E83923C114E7641F86AB67961F32C0196E28BAC698CB4129298447EAC42F23DBC437BAD2C78243A9F3AC9EC50E77D05AE9E60121F47265A53431A9C374EECFF5AB34DA7F6B54C1342EDE7869DCF9DB64DC0DDD9257CD5102698697E520D9A7A6293F3D80CAAAB2D0579BC5A77CB383121E1050A710E3DABF71759EBB14C5D80DC60D416216DB8F69B6A2E18D8FA4AC680B9DAFEFBEBF9B47AC373C0F0706FFF05349A5E94D9B38FC557DBCBD4FF3819A82B34935DCB5C17374D5C1820A3D481506D2F5BEBBBCC7CC52D7C4162C0E7351109C6F5E5A9EBEEF86419EF7BD2DCDB4EB05B63E786E130C96C16682BD21ACC7C7917D1BDFE954B40E63D33777BA555BE9BCAE1151A3F1F754548CB921D3ED2D8E95C48F2720DD5049DBEB35E780FBD3CB6A71A21CE73C0D7D659773EF2ABD842BBC062831A5EB4E9CC07AC2CDF0195CBD41D96AE237366E6AC86F1B0B1C9729872D33C03BE9C90E3389C6E8BA07B98A366DBB2EE6E39375B60FAB459B7092EB4EACF87849CCC17D4656061E4F51964E6BCE57EE28E1529FF40B30451A4C32646DDC1AEC66B925516C2B4F7AB1DCD0FA49E4654674FED298B6AD76BCFC3594C318E5AE55CEE755F29E864CF86754172B324BBD7C982B220F2A4084D6C912356538EE41C0FC742FC5F8A30D6CAED7A9DE2A4E70FB2194F6CD6388C7CF78DA52C93E61A23ECBA6134E8B6ACB6BE7B5DBF746856BE2E93353D359230B291834382EFD2129CA38EE7FBCCCA17B8D0D7A99DA13E435B79CE5434B5CA364E6D94D3E87911D9619B478932B80D88201581CD78911FB6C4342622E6CB1056E21F0CD1E6DC1AB212ED3945B0FF6FD780576887626B80B3F5C7181CDA086410395374FE0982892D8A4D9D77E908A2C67E7ECAEF040DC7486B2AF9A2B094B17EED631BEEC9EA2BC429755E7BE7DED3D125FB4C434F12412ABC7B1A015DC51E4872E2E9E5EE0C89BEC34D38DE3E9C06D839D7BADC1892FF3537C781ED5E9AE39F182F29AB3CE431B0F0DA61C2A614B5609350551812787FCBB090B11AC91660439B4D381443F3E7BF19B005F0B4AB973A2A7958457EEDA5F1DD8E25F8804FC808E6707A9A7DDEBECEACD0C538F0897DD09F6EBF680080D2A17DFF0F4E81999669BC141569BABAB12C066953D70841D20D6C336F0816D883229EE76B8C72DA6FEED773189BE812339CD1BB1E531530E1E678878E2CFC563683B4C98AD660E3B02A565A2F433C27EA3323F4D7C54E653913C79FA2D39B02854760CF65015A1512DF2C83329555D2AB893458437DC6593BA33D0F607C6FB412E6791E2DD49C8E1812165B18B0B769C0AD3C68D6994306643656684C984B836763252B2C160A9A860A2DBCBA2DD9004CFF97F1549D81664539744063DE415FD06E5761EE4F2E830FE9BEFCA314089AE8AF3E67AC981ECD917E2D9B38F97953DE4E2A04AF5E205D641EB4280DDBF5B5BDB5FCFFA9006F0670A55BFFCAB99611BE4F706CB76B9ACFDAA0219EC0E1527AA4DF536C80956A052764288AFDC00591327CF789A88966B002B6BA4FD8CC14635260A2DA4E5B6011181EA6C6F502A07FBA7B36450C5EB07C73CA5FCE689C3E49F18D1D7461460E37540019E0DC98B6692CA14F625B94531AB4BE14C224A899C6B810BE39D61385356F362E2159C09B87D69B628ED1A5279CE567255080BE503B93385ACF93AAB821ACB5C20BD3E83D846C8048A0B21149EC821D38F11FB3F67C91D24CEAC97BFB00FE46AFD01B89574B13071567D6CEC
|
|
|
|
true,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestVerify87(t *testing.T) {
|
|
|
|
for _, c := range sigVer87InternalProjectionCases {
|
|
|
|
//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 := NewPublicKey87(pk)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("NewPublicKey87 failed: %v", err)
|
|
|
|
}
|
|
|
|
if pub.Verify(sig, msg, ctx) != c.passed {
|
|
|
|
t.Errorf("Verify failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|