cainiaoblog 23.2.186 → 23.2.188

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/appConfigs/config CHANGED
@@ -1 +1 @@
1
- 1A399589A7FA0F24D60BD94F13E5AE8115690C5A589A312CDB7990FA047720BC82797471F64DD1F668BAAEA97B424AFC036B654B211B783DBD8EBEF0187D49B74FE42AD36551C46026A4763B7D2C5DA9434AE8AB15CDFD43FC924E60FE0F53BA18468531EF46D9137414A3BA203652DA5138ED819550C8013131BCA455D9DD52218372692E708E2A9A9A6273F7495DCE1CDDFAB4A01F7986FEC02B993AC0130210257B818DE3A4302A387F4224C0941C0CEBC1609C68A74DD2C614106F1ED6E6010FD1FA3F703D60016FC52FFA1D5928C480D4B5AE83FB824319ACCA8AABCCA056CCFC7626E140FDD7D93C355816C9022345D4B500F2DACEDD22FD2B73F92E038FE12487D9B3290AAED27160B8005D3CCEB482E7797823990C7FAA3C55D54DC373F6AF71C5A50C4EBD7BCE0D45AE006C24733131F4E3E56FBCF6AE2337BD64D5D5996EEB65FE7F7247E0119C19D2B0FCB201F4D6E70CE8552B76B4B7C13CDCC3219F5E62C61C3551A8E683888862D247C18EFA2B958654C68EEB6B70E0895FBB7590725BDF2DFB6B31F41873D38C08564BE80FE33A86839E1D1F8FCBD9224DDE5411DDF04D48FDE3481287EC7D7456DC75C2EFD5E7F2FFF2150AC310C462032C4FEECE38E827982419B02F20D0941FC909E859E8F2D34ECB2BD0F28857A14490700542D4DF5F90857C4F7F674256928068834170BF4E7EB985251383159125FCF0057C9A80AF7E4181A39CB0481313DC23F86B886D63FBD1D71FCFE962F8041A660E7D46B58FAF136F70B190060CB1ECA335CC044F4825E90DA3A79BE88E31480D0BCFFA4B921724C693049A8BCE898F6B77B1B3085DE9AA3CA43BA63CC580A2DE0D7FD4D0BFBE903683CDBAF92D0D40B4432ECECE5CE35E7F7A2CA9242AB15CEBC1D3A75AE20E1E35437FC615B39EE45AC09AC9A16EB5CFBB7787D4A8B9C0D56A2B5806562774F9494750E07D4BA0ECE4EB2AA7CA8D0356C79E01E339507118BA49E127938CD91C132B4339359808B861373A99EEB6C1B1E60015957BD22A4916872EE9360A6270154C270E9CB7E535071A3712D647DECD43F03C0D419EC9D9B98EDDD8BCB7634415FD68FC6B02DC0DA71212C3F10BF8E9563D83257617ECAFD050470E82BE3422700486F70D94B6960E2E6DD048DA3A4456AC959B5BE4A4C0EB647B5033A50AE2677BADD14EAFFFB43EFA97B209AB3B203A500A1728A986E55F09BE7923B90DD58D42758A76350C24AA04F50E4BBABC9DC0EA1926CA817238641B1B450518085D2E4038C2EA338AEA225AB59C29D6CA3A3F77F06A678E8056911657A2CE86E8D7B0E347DD6B8E2B57CBCE4B68E8439FCD7446BDA5F78E15AA6684873DD5B7A63D6E03C1D3B707A054BFE36BBDC88C65AF690FA169F5889E9A37DD751D44164FDC32AC7758CB6F2426229D00B8D2AABCCBFA3A56A26EDE96106A3F19E653E3826B499B2CF9DEBCA2276B9249307AE2CC97E0FF6924005645E36FC2A1CA3EAA0238A63AFE72AA996DB736F5FCA08B76FDADFEE41D7DC91DE0D3FFF809A9A111A310EFD333674CF9C8D7402C31BB19758AF0206ED1839F046CC3947B99E81CBD989F9662D9F201C05EBDC531563433A5A1CAEC5F7255A69C784BF9D536C30BDEEA5BDBFC86FC08A6C2162D1B06F64607E5039F6641BAABBA23B7C7A33C8838BF2285B69FCA892B64A16672D571FD4709CA7CC88AF66236A09AABB16AC759ADDEC3AA1CB484DE19B85F9BE9A4F2D5BA08BA9B1E6A3613FD033E02206D99F68D670B8198AB2BFD2754C085118EE994C496ABECED334D38B278B30F8CEF97C2679F5E4B6390338638D510756765AF0FE20FE3116DD21E15238AABC24F041A33329C3E58A4E47674E820EFA99BDD26B0333718491BF6399D7515684D329E6C1C65E5BC2FECC2CDCC13F11BF773A4BEB8D4E7248101912C7E50894F8E0E65B12BA8D6E4DC1A457630A6F5D888B00B749033FD4FE839F6C37E02CFC55BEBCE5DE5EDF073A064C8FB8D1E022F499C2E51740450325C5C49553008677708C2852CF6E905602C51F8B51E010E0F53B9E622C421A04CCD8827429FDE4CCB916F0439C63931ABCF4C8A0DFA6A88100AA5E6D4B1F542BB9DC66E19D3163925CA044E14567AF10F723EDC3F3E407D20DD8A312D833F3C491EA2B4ED2AB157415350F36762AAA3D08F4BC1DA8958958A49F6B13529AAB74FA924657B628C0858B7E29F07DF0895B1F3E5B756D78163DB7C0070DC87F30C53C6E1EEDD7799C8821498A74C21105CC9044E37B7AAB68341A801E55918BFEB19E8CDE0F5986D5BBE62C27D2032BA77564879117D7BE14E129C80E75187FA68F0E28E48DED2E644F3EEA05895E63C517227C40C161E8373CAC52DBDA624349B299FE54925B0324955E9196AC93F215A7509AC4C0890799703D1125DA5A1E344938D9920E9E53940E7F101DCCB564E619139AAB75C6C2DEFD924B6663535A6E547C22FA6D0CE69E1EC03AEA70FFBC53A764FA6BFEA4C31209589784EFEF9A9D02FD1EBDE0EDF713029B0136DAAA523C92102918F298FFF2EE77120F2569F99B50EA18CB5AADCEC9D92CB2072E3F1DF0C4DA388B473476F0C972293BDD6481CEA31BB6A561C6567DCC31082575B46D90936AFF5C64F0CECB9F4F4C84FB875CAB0F4A9EDE4506267F3F770B901F5095C5D1FAA7E1599F58B08A904C83246E9DC82E7948F8F6588887603479A0DB7A7E283D5517C818E88C9D1EB73A1E675C81DFFD4E287D74DE385D9600023A41BAE018AB61188E799D64A544F573CC73FC03345C5FC7E25B5B0FF26105F3715C4D217069278B913541F18B43A3BA02A93330286E567CF15E6A97D6DD973082BC8534A60CA8F75E23B52B5A209F87CD1F3528CF9393A7353215CC8F08DEF0EE11F8E537098EB25FE801EB02CE55156B78DBCC29F4F47E2BF306CB88C96A27F94241F1C6CFE127F67336B452E5248E8579B36DFDEFDE3644EB14B3BEAE31B3B5DFDA97B82145BB091153BD8EA7B26727EE1C2E86F4FEF7B740E65CBA2653DE26ABC6158977B9B10C58B2B601150AE1D84874B125EE98D1C1A9B6D8488C4585AA8917C6D405ED1801150F03B1FA245C238E7B5C9985D35448ADE86077758D625D7482145454A8827C3714B7255C17D09D1B91417893165296628DC27405B621B2462C0EA6CB5F3A0871760F9648AB04D903C6E0B107FAD6D22A7C4F7A0D587CDC9215AB3FBF244DA93A3EB08C04841AC1A1023E8B40931F4B85998FFFC5333FAA2BC6AE9FA9C1FAF993BB63B0F67D63EE2E7637AA77C05ECAF72931534954A6D8953B38424C8C7DC5CF43FA561030307A75A823CCEF784CBFE984AFC9D19F909439D392D6DE15D2E230BEF1209BA5DD4FFF82595824F4B6657D8BEBBFC52215066AA344A22EF7E73478239E37CDA9D23DA3AF20D223674F4BAF709502967B020775784131F25F25F29A76AF5EB2ACDFF3A070110D5F5F508B06530A382EBD760D6A601AFC20F9BA0066752B406ED357220017991BD5786A92AAB6D3836C3F5D05BB42E40FAA45A7C59C0DD26A0AF8F2EBBE5B06A41A6F7F0A5863FD671A24DB77FD59BAA00FB4F510D3B554395C0B5BD794E9D0EFD00EAE31C7F012E1800DFCDB943A432C2A6E2D1A974C2505EE092F23D55E1CB27B08461D9F84C97F6D51F21C008CAE74066CB5FE0D701BC5DA72983554AC4956DA2866CB8E3C56C3D3BCC1C56B67F504FA89A46A162C4542AA39CFAAA28940D6BB1855B6C7F31ADA66414844F09B983966BE13C9009F5F1DE0C017290EEFDA9D3D9FC40D0C613D991EEFA053C1BCE1C860EFDA59F783D239683BE3B081CC23628E3DA4B60E12FBB2257175F9023D2E304C083E00D1062D42D0A3E8B85BAD5428EF8777546A9367994E210BDB271E03448F50A2FAD7E7B148C8BFB906DB25168D1DF04724991A882A589C6554A8EF0C1A1113D3EBBAAA81A6D1A3E0443C16E6B30100A3D03F6972CC6E2F8847EDECF6C16608E1E2F844129734ACB0082BA9562AC0647081A2E76C4BE0F7CDA1A3E42F0A0D5BFAB4986F87482F9EAA8D72325292D3F81A7F6A97D1786901BEF5D795FA4606B95306617EA336389796D7181BB6E8B7F2538328CA7DE7EAE29FF4C334C42945B5BB7C73FE109D5AE83A36AC901CC7334B7A8EDD244816317270F0583B280FE5121632C4D8901D4C3DA1121CC25D4D92A670E6A93562B52F14FBD2BE3C78CA14A07BF32E69C7AC96A9FF84477CF8B38DE80DAE130D9D94B00B57AE841F080E4228D57AA237C34A1DC7D65465A32785E03D984D6B451EBE075251048C5419642D6609456A8BE0EDE3DC9602E6F69A3A6F1694E0BF4657C17AA291EEDCF8DDF0AC103DE825BA7EF4DDEF7C812B123CA2571AB65550611232787EB59178963D8CD1812C78AD08E45BDF7A84296DC0556ACB7E455379DE6E0B2A6C0149AF5FCDEFDBC19AE3912B1CCF2FFDF8830CBC4D4E3F7A2DF5E73092A2DD6F1CE331F0C1FE9D926CB72C16EC0126C77C3AE73B2C84E3EF4E5E513BF7042200850926C508B0261C344F25ED35F6716AA7B9C51E16929AF7797ECDC8B8748E2DA0AB22AAA13DDDCDE6C6F61875361632DAB3318E2E2227E4C4DAA79D412BADD93B2491D860AA253D4A1FDF6CA43C495425ABE0A6358009F3F2F050B66BD22E925CCA38251A5BD22DBBCAF75365F36379EE9850989BD63E7D8AE49EBEC3858D247417779E14D562152B9EF9B767B0001028CC889B827C9E4709733FCA43D00837DF928ECAFA9E8D3D3CB5FB27E6F86ED6552FC2EB061279C3D1AB513CBC3AF41174191D7896E292D9C12AA070B910EF7997562E41B6B82FCF1D36185085C03C2C5E7E68FB0C672F62A9DF0CF9201B226E565E2FFD77049D02B60BA67EEE3C08563CBEDF7CE7E0EE6B332EF17245CA35A073C83B0AB6ABD2C8D47145117ADA6E5DD99182A809F30A3627087721DDC300A49649F381F1409BB8DAABC8E6AC1080626431642E0EE5954071DCF1C046EFE50D41609A6FFA89D937DAFD7A44B29C91A8D2DF13617FC8EC00ABF9C4F738DBA1C473FB847DD0688C8FDCC3D71A70EFF17DD546A54DA5C4233E6C4C63EEF65FF741902B77F9D15C4039085525425F594C8D0D034F0B1964401A4210B668DDE6054332D55EB2EE2B72A00F7EBAC6DE28F03B538AAC413B0299F439DC5838DE9F59E50FF7D7579262EA17446F2FB5FBD581730668E961F2B022AEEE0EB962353667666D2C16149A7542566B6667C30B5088A0FC72F9B2405E6F15A09C853A93A07AF0A29A59B3475C42098141FF7B5553F5FE18F7764830F7BA5263C090811F067095344C68FBFDE06BA9B3DE20F768F12202C145A82AEEEDA9E2F6BA82FFF266DB7BB78125ADDAABC3E342DFF05909EC6CFA7A78056072D42F34851983588CED4F71B59B41344F44A7BF6A05CA96327C014F5BC2A834DCE237111C8B51336A12EE235C58AD7855C012813B6B05F6487CDD28E4B30DBF449C3DC336535FE51EC161CA8E91B4F8EC2488295105665351FEE6E1CC3D5B96CA1E2CEF80E324A5E86AC44CC38714FA4E7627B6313C0FDCA683F31566767BABDE2CD3F918046ACD73B57D89BC028017F33DC6BF5A9ACC4997186D393FE1539AB9114169AE2DC0CC271E9AE5E36E4E2EDE019B1D110010060AC9794081C557B8B4AD75FA9AE3B5F128461C9525DC309D645888B84AFEF639015D570B91DFF351E1E215ED47F2A8F06EA4A8762D92832E987139EC3AF4B5DC94A8B36CB53FB6BAEC3C53C36275D9F925CE9B4D3334A8848D733E7F5DF165A7CBA4DF0ACFB4BD291AC1D19C98187A9CA03F8C654F7F54424C7871CB1544A8C49EF52AE7C85CC85860513F2141A2C4FA7E7F05C3CF5775E29E0CF890D779F2119FF83104351183B749B3D1065E6F5DAC9D3A284B7DBA2CC8EBD81D3FD4FE745430E7974D0744E7E3E09596D6908E83168E164F4FA329EF4A02D16286D170CFB7A34B74A091F7F0004C966F9794C058AC3F82F9BA6BA8B80E1827D0E6BA10BD6AC5C159A5891D3833CED30A8DF6B257CE6EBA8A23819EC99F7939CCB4ACBDB277B96CE53115C884E085EBDCE25D8150081980C384201946555EC706D3974CB1F2A7B61F902EFCB330FE5E37FADBEE7B1102A04DFA8388179C00794867E097C87AED4B39B345080BA8E3C89BE1E3709B234FB1EAD522B0F56A0C69462BDDA10085AA7EC86BD93D98C5A9A818F21F7558B89BDE0372D673FE015045E0847606ABA7102134ABB1B41AB581AAE5F27BD7EF6E74E00E345C6AB3E8A88743D22AA2958F5194943EA07C3D2D84DFFCAF61170C5365C0083E2BE901BC671B799577055718AC37D1365C21626A3A0FD06FFCD55472FD1E58E0C0B89AFDDEED5EBF75BA35A5F79ECB9F84F2461D064ED33BFB2481AE872467089A9A5834E72E2AB15D06CAF3E9F0DC88246B8BDFD8AAA242C163A2AD75437151833F261EEFAB49BDFAF23A472BE2A1ED6A63E1977BA8F17A6EB1B5FCB03DA340500C82C719BD25892F947E9B6C3574E0EBF6E7BFC2AB270E5369B02311F65E73C8A779B66546D094F15FE135E78401E4109DB6873CAA68D38DABA9336B04841541AC880137206A335414248791CB0802A90236DD934872D838DA12F805FAAA47F7A9CCE3651419BE73EC2CEAA9E1E3CC83659968BBDAC270EDB9FD6B1AFA5D39CA5E4B85F9AE9A522B11BD1099DE5704C245306D941E1D8398B090D997BEBB51040BF0615A1D7D6597E8AFF1FB52FDB5FBF5950A2B3A2CEC73FBF8C7F6BD83B0BC8B22F9CBE6980D716F97A9A7F61A17612571BF32E6D686027AC5308C0391A65A0DEF5BCDA4A54BA7BF6E1F631A36A9499BCCCF22FF45843209F2A9D61827D8E9FE10A357444780015835AB6690652FA4B8E3E81180936938891AAB150DE7C79EDCDFA1014721E004744EBEEA6730B945A6479E9665941A486B4870252ABB82FA7FACD484DB275747E717DBB0283084144CF3612D69E50EC1C96BC70EC447ED15D2540B9128ECF8549896CCA53CAE1A0226C2C297C39737D31E809F68DDD2C1232D5E455FAC369A102A1AF5D17589C389E3B496F87C12386B9B1CD6AE5E270A34152E72540023416A3502A89364AC187D33F1B4235C408FB827720EDC5371622B586C16DB073DE2CB15F0BD2EF67430A24ACB24312FFBABAEA83C8F6FAFEBBB6420F2436124F786E5EBE7229E7A6FF89D3E3DBFB5AB7195C6265BE34F35EDF9E2F83674192B6D77AD27EDD88E99ABE09A9BF93A330B096D6623E4C8D4402361AAEECAC80274970B87444A2A9CA547C0B266268DA3B75DB7A3B7ACA6C00A2F4456840355B1A01C368574C913DC0C470C12A050C6A821EBE87CEDC03E8E9CCE6B94E56FBE504EAEB96F2E7FC391810D38B4EA497376CDB5DE81515B978CA44EE4088B09E60A7C62C1718A33E5351597848A06BEEB442BA89EF94D120BD5C318B00E75E319A2E6FA0515EDB878DA84C1009C19E1058AEB380529519DE842C563FE38A8A154431EF69AECAA5F88FD80377AAF37BBE163BB17629BC2A1E9486396EEA81D7F27EF24EFACC1E7284143181F1BDC0240D08540C157750A5030EB49C655695F173A27F9BCB6BA18692AA4BB15933BC7F6D2094AED3FE69267228D20CD0C99709ED31ED34D38B4046837137B1A269E490606E61649B14AA07027F24F9ABC980947D3AA9FB7FAED174FFF52AE352D092CD85DC49DEB119435045FB50E225A18EA9475C135CE9DD9EED35BD50C0B94F065BDC415624B771096F3D960825CD0AA2B22B68AF2079FC3FB8EC249CF031B6FFD521ACC8AD8E18EA9525FDC0BDA9BD0CE2573D4B2CFD4D735C3BA97287337B1ACFF14410D7DD0C0DD853C250DB800036DB42EDAFE70F85B93DDDFD56F4207AAC0ECF3279C1C54EB00AF8FD7897A52FAFA241D6FE48843072FBB1128556D8D8B7E5A0BA36FB23B5292638B655A8BF66B7503ED216CB2B7FDEA8BB8ACBC6EFEA1537BAF3DEC79EF70ECC8225BD915D62ECF58292CB620403CA9CC03C9B69480366B7C09BFD07975A6998CA06779D9AF6F076BC242784C088A01B5CD37D7E5903FB2B6BF1FE7C41C7FA0590E5B32B667EB8BE0B2F23843100CF3C1CBC5066885841FF018C3637A31D790EA74686BF99B49EECBA0CABACA9F3B3EF137A08C1286D83CAFA171C60CA7F061379349CFFF5D0C94CF6B7EAC169584063ECA2A6EAD49E0881FF6558539B039C5E2AA07F6910993D48CDB650894B408528280A82FE765BAA87838C2A6A741EED77D3C58DE59BEA6B96AED885434D25707CA9DCE76E62178E90C50FDC0FABBEF1DD36F0DBEB836A09511C38A62D43D71BCC7053270A000C512FAF7D51A73883B134CA36B3E16045054B082E9A2D802D4D237DEA54C87D66125F3A0CDED0064EBA8FA59A5CCE41C5DB15B5D49B96AC98479B28F3EEB065DD524A912925F15E9F5FC7C250EC271F30502E86F55EE23EE78615DF4D9521BC52E6081D6A951193FE1540E96F47E3C55C5827CE028570528B7CF2B0C8E6B9331FCEE8B2E15CA3FD76C3D008EE02B72D8DEC6A203231B02BE6C500A4DC747257F6AE61D379EB879573D4F42C7AFAF017B58698B0D6B606DD2CCF47460A61F4EE4E74BFCF76E3E5CC45EF24AAA3FE261922A9BD843C1A8899BF710CE6C5BAFA1A201F77EB8A862C97A1E4AFBFBCB7CF20EAADC6C4D1E315FFA7DF52D45D94D4C47AFAA83392B6508445E19C46F68CBE9413879ABA473F691FF036A13019DD1D0BB5335F2274CD9E0477176C5260028CC25DC26D3644DBB15E04F07897C5CC23654D78BF03F82D23D2FA358A74F0E30766F0DFBF630E73BECE51EF6CC5F52CC46EAD3EB5F584FEB54938A16C0CD7F23674976E4A6E6E7D02A3C8DF2A886083ADFF8AEC67166F3A33909AC282A1A1087C3BFCBA3CE174C8087DA85062BF765A62DB1A0638EED0B5B1E105EEC563E91C7A5AF93E6DC214CE713C6B4827139AB3E23A70B6A4301E3AD29A3EED5B965DF446C0B532D4EA4D429CAED7E14CDC7200BEBE1A194809BF116608F08376DD9A99CF174590A1AFF598637B0AB2961E01FCF5612858A153B0A063303647D0E0C8A2B30D1FAF6F38029AAA47EB0CD19A8D253223FB89102A199360A8317429965F030710DE87BB1ED617E370EDC370FC5FAB262238C7073E2598C85DB55CC2A508D997669D4FA299C09258184468F699F4311E56E60FB4BAE98341A93BB3FA251C7A0772FB87B104B0334B30DF0872B63C967ED5E2FDCF748CD6F77F4BEA4F96E05C12B00745ADA2792D9C9DC575C1B6C69E1C809ED0F4430BFE47EA34323208CA0AE4AD539505CE40FB0F4C777468A262F6D2077A7B19683348C7797AD9DD59D9C69C8545410363AA29FFD45A614CD16E6317BDBBD70B5B5DF7235B4925B01DEDE95AF03B42C9EBCF70248366621FEFF957F012C424AF62A4438446ADB8D3F0F8618DC50B00DA57495C3ECE45062967C6C7C2ADBCE1FCF947BC9C4D34E88EA8F739EEEB371CA8A4A082D1DF51B1E32B1A9F81B6BE014E9DCA1C9E6A18BACA16ADF234FBC8EB0910BE652ED50A97395263F1B5A3F61605FA1F7E638DCFAF174A0C54FA522732B33319F36F3A54E656D917D501A131895E6DC4A1DE88B945DC59B01DC4CB96B654CD29B1B6985ECB0B3F7D5A3CC3698DFACCBD0F25F9A679B12FB0B62BFD95010C8CFD8C583FB80372DCCDFAC8A1A43BAAC1C83747B05079C89CAD51D0E8EAC26F756AA79137F7C08AF2B3C77E512F30D21515728B2BD60C72FF4F9AAB0863132E5E4D51FFC32391DF03090994B00DB9FDD7D5ECBA981AC02F2FF1B50195BCBE56E3DCB02229DFE37C2F151B4A2BB38AE285BECDB24656E3C504CF9ECFD22853B7FE2DC0B7C13AA079D9377DA04B761D44F8F4AD224C0F8C69948F4DFD3D0D376CD435AF143AA50BF60105604043A321CCEF3A0D067257C7ED8A65818AD78146A81D05E6205613694D4D556B314D035922796AE5CD2E56D507A83111DA6B857EBBF9A8ADAA8571E5310EC365C2BD8AFEC13FA41A30951971DD55A026268A1C56610B81F1C1A2631EF85CFAB4A2ED45EFE2342E6064032D7DC332692E0F2AF8C854EC598A34ED25A42F82813D85E1805C3E45DA8096994449EAB134DBA4BBFB76A2EB314D02D65F862BC5BE2099CF4809B26D162C471347407D1840F4A615B78102CDEA20E63FC31D33AE0D1503A9E58F0C0DC0F4CF1FF04FA4945FFF017A8C745D2F933864679EB4387FD3D0F4F5884D557A6F337DB46E81FB4179E2E96A51952C2C5972C12B3C46A2A9F3CC364779A0E83308ECDD05D3C4A6F6B4CADBA810CD6347903B58FF6A47552F7F30286FC9102C91DDCBCB0320FC7034B479A035EA4C4958DC20D03FD7F60531D9BB6BB8978169E1750C78F10FCCD2DD81834412A4CB4F20531F3C42CC830675C14F0EE0A099A068FE14CA5E1EA2291BED39AF346B8FAB8D099B8F88287A547FC543C976891F784C40C1D8753C5206E2FC13E213DBB28962E86F424EF0C4420B536EEADABD8B07DC24AF1AF9C5A2DEBC5950EA80DD4E5343F5B632333EA65C53CA4A0D737800FAE7E60EE9E4FCC63338B50EB1E83398F89D4919AE680ABA7CBFE6F2D6F7EBAF66531E657C05D1FA48CD3EC1A34B705FE0B4EA8420BBA88B32EF7EED029E34D2E0A4697C435E59A23B99B890D2500ED3F77956BD7B45705AA3CDEB03936A5667AF65D1C24D88F9FD5BC0492269A090553B45AD90FA351DD98CDC373BF9DB07225535BFB41642BEAB24F094A5F67CB227DE0B624D046AE5C9810C5EB3CF9D2D14640AF2BFB1D82F8810FF36EF38780BC7876AD7AF8DD13CCD93DCA29F385E1EFC41B8B309AC2EA8DADE5EFD6B11C4CF4DA06191E9A8D419F699BAF28BF2AF08CB8F938413E5304162FE9996CC062538711E65953D242D811096EC42CB067239E1FFEE7F33D3A97ADD0B1FFDE98C51BFB3BDC3B979C342BA1B25F9AFFCA6CF7EF8BE6FF786C4073A57F6D0D98F052B7D00A1CBC3CB7777CDEC4730AEFC9819CF21BBD0A4A5F2024A6477D37F5ACE6B021BA7A1E6528A3B8B07377B56088419DDD636F159C035DFFC5BF5626CEF45015D08562D84C156B3885C3DDCF90868B4F7BB0D335971A86A7653B153AB8DAF8756C0A0D6BBCDE3269C98323D0A0DE4000465FDC24BD1574E6DE64AC09D6C190A80439BFAC0138A66119B4A6FF1163320E730626FD2EFF740482B0E76438387A52EF8FE83ED1A519B69E904C97407654AFDF70A53E7DEA868B3D9D0C6F56D23A4282F67386A8351182EBD441977EDA6AA1EC34A9E9E25CC45BE686B52181837350BE8B653F18C5968CD4614119EA79B5B3F57164A8779CFA6A07636F7D5BB6E2231A820984EB2375ECBBA634C5A8223870B6591121394F766EA1E178C99942A7B06E47ECAAEA88A1B07AC81584FAF14B19F08CA9D6DA1FDB402B6BD7F5260BB67D73548AE308452FE40D49AC5F2463FAC06CA16BB3296EA7B5EC63D6C6B81B03C368F905F2FD8036D7BC4262A0832F31F9F3522346280233A2D965D12162F86760DD535E812313C57CA3F47CE732D27FDFCD81A979931B03A83A4C2B734575693652A0620E3BFF982FBD47D678AF0D634D2112BB9C377824560EEC3A98DF9EF655B06D2792FBC4550E289E8B9989D1E14D8FE4576A270155E97B3FF5877DAA1C872FE165AD05C5AB6DD17A4BF754FADD7588234CA2F747984974BA988E17E96E43334B5BB02F10CF56370C161A29C29576F8813B263C32E0B5AC0F7AB39E8457AFFC83239A186838582E8AA43891B679F403596684D3B76CE354C706FE73D1084014D1A1F33FBC4156DA539E6F37FBAAE59CFACA57309865008C9558610819B825FC9E2DB70374D89B03E67EAB0DF61148839B771B5F24E407A36B76B9C49F76034B3659DBA5BCC444826F36C00DF56CD10572FB3C256D8C342399C9139CD49DCFAFDA49BACA2A45148CC9E290A9047CF1617B18FD33772EC1F10A5080A9529E0293BA91BD5486A7129C9675564136EC1A450DAB2ADB084B35764D54F8C00313D2B5D7BB0EE4E0FEF268D7C32C858F123CB2A63E02E0C8D9B1B48BBEC50C129AD20D0C7B6117203349857A3FAA13D920C9596607C044284ECA65A92BBC6B51AE8DEA57DB7DE03858694508F91399E8789E59140FE2E1AA215D102FEF6B5E63E11F996FD861BC22F00A3D988F60E7D8BC777C5B383528166373EDB951E6B9605A4742D4E8F34177189164EAAB8FE5DCC5A3FA4559D97E2AACE3CDEBC68D3D184EDF0D8FA304AE85906B4697061FD23C91B28D4754EA9953AD09E042C98456280359F9D4A273DCE186377AB4F0EB07D65E26BCB8C28500509442B69C931FB64DEDFB4F16FDCF76993087D88363D411E0C14E4D5A569991B3E123A16C64EEF0B435E86989513F0E4EF8F1375F4A4B920C67FA75CE938E998C8546A790B5EF28D76E930A68E4A49DF412FC463651E88D11D2C8FCDACF7A5311EA57D31A633EE5B0A7802B9002C6C54EBF64892C6E2647E59BEC47A66C0ED4CBCA74E0FD342B2AFB21AEF2F4FD9638A9FD28F606F3D6AC66AD1B88312D6A4D89C28F4DFC05EB5D030E6318CC3B56260F44B7CCCFD0B1AEE5C5B40248D0F883C639CF53C37D6B95D09589F4CFACA3BAF3EBA0E79658A263A484C9585B3A870856684D25EF924F6E7C70E7971232B26112729A33EBFD479EAAAA23CA0BC7133FB3305CF0ABDCAEBF37207AE4953A9853D56A12B1F2CBC1D112E53173C319B9F6BF55EF6CCA149E69812040EA261BA33EDDF5B3904126D95C7B4B0120FEF1771E4AA4EDF4554185E71825FB2AC078ACAE4214D86BE4A5EB3C2010B25C86BEB5C3F6BE897DC8BDDB7DD8F14A27C9D1EEC639CDA8DAFBA34A5BADC82A76F92BAA084319B0965FDDA2F12EB838CEEEE7360EC6D5B0445277563E99CF837D08E3171462B98F2D27FD336CA12A727BD07EFAA2C0609A0A402463F3882472FC29DBD9B111EB6EF3752F23432949572D7ADA79C8D05AF927454E9564A37B9CD779E7E3FD7D8EECF959E1338560A2C50C96D158C6002EA821A448D529642D44393330EEBA5898BEEEB2EF86CC795A20F21A559532EF1BE7C33BE76BF305C88125C7C9599666995AB0A2B9C2A4DBD48BE16F32BFE8E7CB535E4AC274EEEC3A10355559CC84855F82EF6C311A121391EBDC2776B8E78CC3E7E5589061F8887506E51674BBAAE7E805ECB7367ED80885E390201F19815260C71B100B059BA2C5C4C17160AFAF8A73C675381A7474682C11BF44B34DFB5B23B700ABED93A9807D2B17BD0CCBAF69E2876B71CECEFAC85ED19D4CDA05A5379A22EEF77F55313B2F78FA18A298CD521232F6009D9DF1AB65902A2AC4555FA9CA819B662015060655B1C56A3C9195B7EE93A8DD31239C2141E88FAFEDEEE81480C8F1A872DF9A2F5D760316638FA0D1C2F6FB4F813D73747E464DC89A65B13B4E424F44BEE0DAAB31D18F20E0561D9278A7168042842115A807E558E874CB6137417F7404AAAE09B19E5AECB708401A882BD5EC03E6A1412FB8FA796E5F3D05B216E920753A794711B7CC0B72285C0CB411E003E30549B7D8052D83B73CDB0E3831761E332150ECC4374505F66933171F6EA42C2AC24F99B877A425786F474C61AC8E712730014EE1F4D8B77790651538A889111FFD6757DE55BF44CF45D01315676CF1E7BA517CE0BA7CFD0AA11386144C340A83DB1F359CEA4EC5269B651AFF47AE3F0E34B8613C4E85E1874C7AFEAA7D79EA55B26969232C9FFD9EF19F44F7E97EF51EA98B82747C2A04C2A980AA46EB443675D165C108D1DB402ABE5C563B33A731265C89092294A221683CFFFB38502C1E6D11B40E817BDF0968FA794D76C12586830B3A3C73AB3B9E14AEF9A22B57BF8C79AC0A9EC8B9CA4649B56D1802B62C2433916864E626BD325085F8B8BE759592E9A5C7E9C8B42F1FB14D0C6988ED894D88FFEB37FB9E16C9F712A8CF6DE49CD4986D28BBE40BC4CDBCF25DA6162D4B4ED379A2A13DC40250AF3CF93C8EFF0FA573E5947704DEE8525F104F03319CAC03F818662A7129223003CA9995C78E7F3E6B1371CE760F4121CB39A6701F261153957200C52D71CCF0D840599AC3F985A51221354A18BFE78C98DC613C0551DD0F1628084ED75FC3BC2410F7F7D63D250E0508FC56986442848EAE34C99054D181B1C9E7772E01FF5E365D0603CC312AD8BD865DACEFB8A526BED8034936EA251D67D29D1C9EA2995B55BE9537725343EA32462153B6F1CFE3887D57C83EC682493C1E7139489C5C51D82FC7CE971C5F9511473C13941777CE85FC1CD6AA0AE5F5AFCEB518481236B784DB8FC969DA7CF753D9218E9E2244836B04980E3B18028C7EA370B820F3F1606C8C0496E9E73BC7A8D110A1DA35F1EB6F663C684D82C30F048AE16E4D679DF4FE1E66C308C64850DE2006443098C54C024206E8A05B48EFA6B4FB25227F8BB79108A7E9F15BF2CCE43F48C3CB70B60700106D7D436CB198DB4EA12B9E4B40648509278759D8BAA85BF3BD3F1600C6EDA4CC845CAC5394E0B0E749342AA9ABF540B8A3B236CB6506C926BD1D706AC104F8E0A7EBDEF9A30BBE15AEAAE5058D1F5FF0FD749249F2DD876D40649E77172214BE2B14E24DAB825D25C065285E1595C46D2C2B1DD6A72E792226F1E355C9A5D78DFA0D4F3DB7FBCC008BC6D17C6691169232F66B728ED5E383AC5D0BCE756AD9DCA10AB35AF9801AC566A3084987A563F3E054AF238E85385473CCA8F93DDFA056A9CED0C7BD3D934946B8D64C09FDDDE9E910E3BE450A552CA756DD97F5FD99FA58094EA8240A2EEB33DC65F78AF1F55EB6F06B5881292BE40A04F17D97DAD3F1E5030400FFFC1629B3A701294B7B204FF2746654BEEA52915429D16DD8C5FF18A7858632C45DC31C2009B6CEADBCB75F38E940CA3D8E73A7746232122D515114DAFF9313E4037218C2D6733EA47BFA36B85F6F55E2C31185F1986F9969134BD1310D2D47B053B25232210F06D32702FD22BBA5806A7CDC0A383350EC77CEFAEA910005F1F31726C223D52B826A4EA3D9BCD435B306872A5A90F897F398CA27363C3DF3E1D69DD8FDD426B12EFCE0D71786BDF59CE131DA72AB70621FDD031B14020693A17DF3ABB22A2290E6EF4F8CF6D25844F078B1EA4325B2CE393407866825471E34E4642CC96B8ECFD0F8E654F8349AA137D7FD03A1D514D1899E17847B3496AF5105A31DF4A4A71CA3CAA07B11829DD22E848EFAA23DE0EC77A0CEBAFA22924809FD54E64F9219AEDE66EE6D19CF0528641854E22DB18F9853017B7C0B5954170DB7D96310FAE8CFFC92CAF6478DBF4B265B9CFA76D8699AF733C8A4BCEAA914BDD4A70734CD9FA2FB94B59C5D6A206430F5384BEBB4E74BBC9C16C0448D5CB6EB3AA77C17544D5D6C8F504CFBDF246709D33742990AFA77EB64188936F49FF82291BDE58E733B1A7C2FCAF2B1014393EA6B591998CBD0910C9679D89C0A66D186C6653C9300B5FE5E30ECB175FBF200413B4A0AEEE699B59D7AE41962D01747E8F3B8EB4B91E92505212ED8A6EA88E48C1F3B049B86CA42A9054C2177692529DFB2E77D617A850CEDE9556051E6EB55FFD93196FC3DF28A112D7BF3C2E44AFC52A48538ED2289B8E35F8FF2740F79A62ECEECCE7EDA20468D9BED9609ABE7989D776D13B794CFF51A09F71F94505B93AA28119B83E8A69539D5B5A530390D4C0914DC16C6F41A12EE9DD586ABBA36FA9681F51E3A5CCF5BB1BEACC0AA9FDB377EF2136F48B6BC201D16E37D3E41CF6194F1418C9D91F5A71049733118CB9EEA6E7D1BCC26C319F2F88B4F1FB6AF4A4C5F47BDB117486C7A315C2BF114DF9DCFBD867D26B886722889DEE607698D354954E6AB9468AC07346A5B1B52CADD96C1B64AFCF380CA67BF02806A047BB496D37BCC264F09388E8F624AB0E806E75F3FC7A3D0B21DC65F8BD814DD2E08860663382AFA16C5268723F1F15A58E4785B9441D8CE80CBA47FCCADA02441A72C7C67308AA80F9B46D8F2EE5211A34327B08C315A862EC0A8FC560F8BFE71A24E0C11E0D87B186DD915CFB9410EADD96C7E472D50EDF05508DD9E8E557DB2E0F77B87DA61BBC49700CE46CDA0BB6E3F222794FAC93414E7BEE78915F7338BF97F117F9B3E364B9F0D3E1DC78B7AF1C45FA2054821EAF05220C533E2BA86FD6A2FE1AF64E2F7D25989F3DE44C5592327C3CCF464413C33FA73D82A04D04E394690608B0425FA70AFFE106369F5515A7A026564F4B7C0409650D9B02DDE5E09FA833C856423D524A7078DD1B2CB513D4974DC3A08D731A1A6A4383BAF92BED6F592FA605638615ED93A9F9D8FF1085403A2B1C54F0993E7C2B2A8CB5A21B18B41BB3D9546443DAE7D073164B416F39DAA4D34D127EF8F664AC896EC29F10EE6E2861E6A1B600C863ADF18E92E4F39697303CB8699A803DCFF98B594E4B5476E86D5FAFBFA8A79770AC56071EC4827AB5C066FEF1CB6325198817E598EDF1DCF33B4DE4382BE95A4C883F211ADB5079EA4EDC8A172FF90D0C8D7267361E84D8D19635F0873FC3C3CE9A17F34857282A105977AC175D40131E88B218D619722E4C6F9A703528FC470627892B85155300CF5A0C6AF13976809217731BD8F963BA688B3DF9024E941E3FF4851214DF88BF466484B477E0FF9830AF338DFABE56B2A37558FB7500C6226D1E29D586F37C334FD5AA3FA37674722CF38A5EF814B38E99533903E076E19371E95BD0B38ADDB71D0B4C5D95453D437259A785F5CCF9F4A6B314786862C9E517E6A5A1F5081D36ADB6F8E2CAF3F648DC06B0D1D23A8A6D64D61C8C1A01A9EBA2D73B07D5A406ABF71B001164CD295C7966D11F2AB3A68EB828EA67CB3DB0006A3A852996EB8E7D44525EE2FC945B42BB9128FD341093079C26ED913A20458D38AF65E231B0528096218B5BF4AD27C9DA3B294656E391988ABB08FF656E6C8216FA93FE97ACC7F5B15B7C81336EA12EF2D7F1603DB8FC1B9484BBB25CD76B35264A1C99D8547FB636C54201CDE0735EA81C5FC8EA29248C809B129A46B73CFD6A2A180D1804947FA68457341A2521013E57677440D5E8937E6696F5A6DAAE353D57AB97D3F27276327617604507096E2AD3071CFC2DA9D30EB05E9A1793F525F2A98F0DAC9427391E7E5707181F66345726E18C9961E263407930BDA462146447BFD325BAAFFD4E0BA885B761A4ABDB65AF3635D4FEF92BE7C056DE999482C304D84DFCFC815BF0232056CA4BC4DF64E67D68EE40CE5354C1446CAF9DE1C02988050D24547C5DB4DD401B1458A6E102A160DDBC7DA31CD7F2417D1854541DC04C2B7B76C416F1A2934F1AA9E58101BEAB141486B5E8D152CA3F3E8531D3E376B5059CD40BFB6C7A67E96588370A43E83CA66E69BAE419CB6D318670E119B436EA8949E3D9246DB5410A87325AA997F49AD46D64AB291EB61AC7122A60A5D010F0F153C6EC9706AB2A4CF38783B7E7164696117BA0A227083C2938C93FA9A3B63ED3E59D97101D13C8D737B8064D71BF0D8114D4DA7F7A48F8CA6D73DD33C3F114C8ED1FDC5ECC0403402AD77E35EA23B7AEB24500E55B77C90FCD2EDB067672B32B887203DF18A6BBF0AF2965716AC36D8EFE5D1F6A04CD1227DA93BC9098D187572E1CD75D555D8B887B41B1507FF595233D7F83A3711E3BEC2045F003E9B4118A133B52CDFAD0C6B9B090DE049AB21E470C2B93A1D6E87CC948798B3DC6E3A2DFF3B0A399B31D4E873463D3C876ECDE7692A9F5DE180DC7E18C39BCDEB7BC12D001FF1D41722FE09FED86EBBD293ECB2D5C13D7F2A2F4F2DA1105C82DABA811B37A67049DE072488BACE0A9FAF4E268A41EE0DC44CCFAC8514D893546F3A26B4D96841D1ABD35A939242731AD33796E7AEDF1A89B0D1027F51827787B97D20F72E05710544CD0C5826CE0E62244994816520D8F4B06B8B71B7E7AFA1DB1CEA2572DCA47E0666AE2E49F7848D65884742DF4E4BCEE4E25D270D7ACCA24E99D2A598845148FFB7E0D10CF9431CF36806277D1590397368B4461E248B3E45A8D80B6772B1643138915FE9B6D027DECC2A3C58457632805058B1C40B748E803EFCC77AE9DD1DC019C76A74B1F0E07E20679D7084F66892734DF226CF1ABAD2E71D5CED8BE8BCE5B4CFD4A2D6791280558DE0FD66F7EF6E5CE7F77098B051A9D137E72BB597C1CCBA07A761373A871CFE6E410D51A004A240722AD130CA1D56E98A8AC432B8EEB557123DFEBDD260E55E0394361E2148F8955F1199E1712AEEB308B23890FB6AAF7C78A06BB91ED8692A02767F6A533F00CF9B6CED291267AA5EBA11E2587EB5DC3E0D7C5DE118E46FFED52F6F174A08F4477D1E2D96ABE5A00E9AA01FDE74F44F08FEC88D1DAB4328502987A1617B660FC10F2903F0E3FE7D83B33CB25CD3C785EA14B383B0947341FC9A6742FE077D4F22F6C6D2737DEDF756F70B61F810E6DD2C2EED05D1C9C10AC1AD1E623AEF4700A8A4E5A29FA756B54B7E59EF3E0097CE4C09695ADAF625D4FF72EF48E1D7E0D2588AF3F939BCDB38BB0BBDB66BF850EA59DAFB33B293E2ADF286989004B9E4E385374680CD4B268E36899D0EA5A859717C495DB7551B1E75C83998E07C3E1B33A1A8AEB4CC2C4144E8F08FF02F1DEEF71F47E0C5B925BC753E14439E6B9F0538B759E28F8EC351F92FAE289F63F1731149ACD20455CAA65EACFA7DC5C3439A9CDC1A706B04949EFDE0759CAF71EA50821548181250630E394F65E9BD1097BE0707CAD6EF41F8FB8AE9C416CF61FC63E5A8404E595C3BF9DDD0DD7AAA1386E4D4539749CFE437552416C76E928CB6538836616746353D20F326A7B00F3FFBD8984F0A319D05D0519D5AC49116544612244F22909B9BD3F3150C82FDF571CCC4D1F068F2C23B656F0C733CDAA42D2103F8628AEAE44F97E9EE9487A97D54A6434E36CEE0AF3B26594A780106CC7C4E5A2BFAC6DDCAF1C5227F9FB93F2DCA85D5E85E5E1FE8B67E72D30D34C7EABC88241CA0C4EF85CB32345923FF98FA6C7885167342DE0C90CA5844D4AC2D380195EC3FF1DB5B3AC927C030F68279436A3109AD42F966C609C1AE88BE1FC9DFAC589D18F2CEE3F56AA4E32040068877FAA8777C4EA6CE8E326BED6DA84D63563AA5F9B696D505FC0D133314221C883DEBB14C70C569A83EE315C97D9BFCD3A35B0B506821CBDE661AFC51A90D751F4F5F04BF4B38C9F5D08715EFC1A8306848FA73BA2357F845D80A7FC80C9A38AD13339EE6F9939238CAE449202C5DC1F471E4D237D
1
+ 1A399589A7FA0F24D60BD94F13E5AE8115690C5A589A312CDB7990FA047720BC82797471F64DD1F668BAAEA97B424AFC036B654B211B783DBD8EBEF0187D49B74FE42AD36551C46026A4763B7D2C5DA9434AE8AB15CDFD43FC924E60FE0F53BA18468531EF46D9137414A3BA203652DA5138ED819550C8013131BCA455D9DD52218372692E708E2A9A9A6273F7495DCE1CDDFAB4A01F7986FEC02B993AC0130210257B818DE3A4302A387F4224C0941C0CEBC1609C68A74DD2C614106F1ED6E6010FD1FA3F703D60016FC52FFA1D5928C480D4B5AE83FB824319ACCA8AABCCA056CCFC7626E140FDD7D93C355816C9022345D4B500F2DACEDD22FD2B73F92E038FE12487D9B3290AAED27160B8005D3CCEB482E7797823990C7FAA3C55D54DC373F6AF71C5A50C4EBD7BCE0D45AE006C24733131F4E3E56FBCF6AE2337BD64D5D5996EEB65FE7F7247E0119C19D2B0FCB201F4D6E70CE8552B76B4B7C13CDCC3219F5E62C61C3551A8E683888862D247C18EFA2B958654C68EEB6B70E0895FBB7590725BDF2DFB6B31F41873D38C08564BE80FE33A86839E1D1F8FCBD9224DDE5411DDF04D48FDE3481287EC7D7456DC75C2EFD5E7F2FFF2150AC310C462032C4FEECE38E827982419B02F20D0941FC909E859E8F2D34ECB2BD0F28857A14490700542D4DF5F90857C4F7F674256928068834170BF4E7EB985251383159125FCF0057C9A80AF7E4181A39CB0481313DC23F86B886D63FBD1D71FCFE962F8041A660E7D46B58FAF136F70B190060CB1ECA335CC044F4825E90DA3A79BE88E31480D0BCFFA4B921724C693049A8BCE898F6B77B1B3085DE9AA3CA43BA63CC580A2DE0D7FD4D0BFBE903683CDBAF92D0D40B4432ECECE5CE35E7F7A2CA9242AB15CEBC1D3A75AE20E1E35437FC615B39EE45AC09AC9A16EB5CFBB7787D4A8B9C0D56A2B5806562774F9494750E07D4BA0ECE4EB2AA7CA8D0356C79E01E339507118BA49E127938CD91C132B4339359808B861373A99EEB6C1B1E60015957BD22A4916872EE9360A6270154C270E9CB7E535071A3712D647DECD43F03C0D419EC9D9B98EDDD8BCB7634415FD68FC6B02DC0DA71212C3F10BF8E9563D83257617ECAFD050470E82BE3422700486F70D94B6960E2E6DD048DA3A4456AC959B5BE4A4C0EB647B5033A50AE2677BADD14EAFFFB43EFA97B209AB3B203A500A1728A986E55F09BE7923B90DD58D42758A76350C24AA04F50E4BBABC9DC0EA1926CA817238641B1B450518085D2E4038C2EA338AEA225AB59C29D6CA3A3F77F06A678E8056911657A2CE86E8D7B0E347DD6B8E2B57CBCE4B68E8439FCD7446BDA5F78E15AA6684873DD5B7A63D6E03C1D3B707A054BFE36BBDC88C65AF690FA169F5889E9A37DD751D44164FDC32AC7758CB6F2426229D00B8D2AABCCBFA3A56A26EDE96106A3F19E653E3826B499B2CF9DEBCA2276B9249307AE2CC97E0FF6924005645E36FC2A1CA3EAA0238A63AFE72AA996DB736F5FCA08B76FDADFEE41D7DC91DE0D3FFF809A9A111A310EFD333674CF9C8D7402C31BB19758AF0206ED1839F046CC3947B99E81CBD989F9662D9F201C05EBDC531563433A5A1CAEC5F7255A69C784BF9D536C30BDEEA5BDBFC86FC08A6C2162D1B06F64607E5039F6641BAABBA23B7C7A33C8838BF2285B69FCA892B64A16672D571FD4709CA7CC88AF66236A09AABB16AC759ADDEC3AA1CB484DE19B85F9BE9A4F2D5BA08BA9B1E6A3613FD033E02206D99F68D670B8198AB2BFD2754C085118EE994C496ABECED334D38B278B30F8CEF97C2679F5E4B6390338638D510756765AF0FE20FE3116DD21E15238AABC24F041A33329C3E58A4E47674E820EFA99BDD26B0333718491BF6399D7515684D329E6C1C65E5BC2FECC2CDCC13F11BF773A4BEB8D4E7248101912C7E50894F8E0E65B12BA8D6E4DC1A457630A6F5D888B00B749033FD4FE839F6C37E02CFC55BEBCE5DE5EDF073A064C8FB8D1E022F499C2E51740450325C5C49553008677708C2852CF6E905602C51F8B51E010E0F53B9E622C421A04CCD8827429FDE4CCB916F0439C63931ABCF4C8A0DFA6A88100AA5E6D4B1F542BB9DC66E19D3163925CA044E14567AF10F723EDC3F3E407D20DD8A312D833F3C491EA2B4ED2AB157415350F36762AAA3D08F4BC1DA8958958A49F6B13529AAB74FA924657B628C0858B7E29F07DF0895B1F3E5B756D78163DB7C0070DC87F30C53C6E1EEDD7799C8821498A74C21105CC9044E37B7AAB68341A801E55918BFEB19E8CDE0F5986D5BBE622F037C644D0C81AE81BE4E18405BD0B46118A20C81FCB646647BBA9F946EFD90DAE409074CEBC4D3B55DFA17F79A1B4141B7DD69DEABE623C6FFC525908A627DB31681BBEDC6DD53DBBCF08DA2C076226C19C6FAFB603102F6F78000C794DBAE8696C7D2DFAD2A5F30F4134E55259F7A0E2841EBB2361E64328B42B19B0A848CFCD99C26FCBB47EDD9B7F3154A8078178FD651B90797C649CD69950BFACF75724F2CE7BA88C6EFEB9084C5FE68FDB594924593789EE3C248F4A1D0C1E5577C734923237177C6FA89DE2ECDBA0DD1AD520544CE6C2E22A3AB334411E4AEE1F5548F42DD71AD50BFCD3C8A4C0A6ABE9DE29BC9DDD68E2E3C500CCFCD2BCD28CF1F523A7D9C228484DFCCFE4793B86A092DA6C4E03A1808BF108BDEC8F1429BC813DDEA51CDBC28833D9F24DD263939338A6782766A39396C2E2CF886F83C220672FE7E300DD36265926D0F1A775E622D412BCCCB666C82C9BA91C516314392773B08E9C8E197597EB3E481181BF39E3DE98F8110332C944F9BE01D5AE865BF611E85928C740ECFB33F0FAB640D62721A77887ECD521246DC02DD8029BEC5E1D8E69A961548BCF1EC98EEB9F8752632DAD7ECE87431BF42A3D50B41215A45F83C53DBB8E935EE8183D7E2778622297C8C4AD3F2BCB063ACB61DF15E613078C386B3E5080E84B3EFE0A79B8D3AEE2FD1A64571CD91FC31B9EEC610F2CE5D063119B0BB9736FC75390622511C07D3173BD52A868774176CA4B53C1F03613A37BF7A6B9BA48FF377D38C50B1458F2E2B215210A90CBBD804FA305CB372353B3E8FD842F01E0AEC35DCF01B81C17C06AFE20FCA610686ED51F0455B0D2C9BCB69D114EADB930A663E212C3625B019BC5D43E7E8464006CE609F90A58B7EA721356DC2F2DF8BEFC18520BD9C8475C471069BE4ECB7DEA3779D52584B1B9153E78967032DB9C0E8158E99B3022518B42D0CFE897A43D4713A0208A0F0277ACC82D8BE4C5C203395F612D2ECE3CFF9938B00B8F7319FE12B36B5E70BF20C4B272AF3105364F72ADFE063002E08573EE8F71DCE0EFD494E8C00189EB97E368E0F785561123D32A681880268E8A90ED75A25C9D83E40987559084106ADD7E0C31D4D92BE140FF4BFAB87283B9C7B8EC77424C83A1E44A7A3B4A7CE1046C1826973A496BED5FD53188769B518CD4E94D4F23DE6B69D822F1A1B13838731252118A0643FC8BEC513B54EC1262818A57F4FE1C1CAB2FAB5A074718DDD89BC0D39B535333B95087E8BE0F20CAAD820C5DFECA584D9D5DB4142DB13E4D8B0015200587734C745B69856DE2EB21EAC650F21F27FA6565F5469C424D54E3D91C3C9F2AFF7C5AD99F0611471A726C43CF2AF5632712BAC6E63BBD485BD888E5E1A584BF5A66F1C7FA0C47DA75EBAFEDDF146211C63205320ECC116F4A4964DDC66C0F8D429FF5C14B5EEF75EBF2594CA23558B0BFA653E098880697FFFDF976B4BB03EE537DCEBCC8228958218A6A9C857A04EBDE93218E95CE963D28A4B025BC0032C57F056E99098F29EFD01530C1D18505143F0542E20A4B93C0E406BA4120FF375C4B22FDA389ED1E15A2F4571BA575544A0657A38AB1932C44DA3ED5D9172CC705FF02072EA65B8F61385EB09C376022D9B4661F9F22C330B6FD41A219185682296F9A69B73C531264F1E2C7D05A767EB83A653084CC777AE8A576367AE5074CBC8C26C8692949ED3D94B0C61E0F0C46F2D5E9FDB3B70DE2BF60279682AC26D529091A709521B7C699646784CA2C8015364C6146D466F7394DECBD0A18F0722681E384FB5C20A9A4A8E40EEA631BD5B3DC320B3D455B76B5C3DB966AE2703AD90268827084742E4AC7F8F5C8892D57BEFC5BAF789D6B16424F9E4058417411C954DC622913CD905597825DFC364159D96722727810BB5472C090B7547CE2336A9EED763B051B02C4C9978D24401A2CDCA5E5EE5EF6BBF81EFA35E80CAEA8F4BDF116E3CAA20B9FE99F715E330B4500427B5368987365AACD6264D6D634412EAC70000A4728213F5379D81C79B8CA2E63F644CA9753C79DF7B154EED7BDC97D90C3E41D0882A64F7750D2A0DEEF05975BF3252C4773DD2E819C62812FC3A0FB119AAEDC04B43AF1A732357622AA99D966E2DA4E86379D23EA2706F4CE20B00B9DDEF08880274CA7A23CD92B7DADF664DB584B2C2B56D4FAF72B32177B82B109A6B82D40631A061E164BD246E45A27A5CCD1F66EAA7D36DD3C182D3264BADFB6665C15539B3388A52DEDE7403C99033308043EAE392C0ADFCD6F17CC10A7A6933E70D0C555E0E8C85864AC731043A814D99D1AD2D51CF95A4A6D67166CA2B58704B6B04FCA24A72F5A58D6829CAC0364199661E9C7797E58C579D7BE47ECFDBAC8DB8BCFA64CE40673CBCF559A38513EE00E629BDAC2C25A110E2F24EC5A92503E66EE12703152A87C1E44FF982A4A8984019ED54BB4162013B1C4484F868FDBD02612930F9099F4BBDF5BBB38FF47AEEF57C2529C5EF8F586646236B2B7A66ED966913FD59C986C489FBAA9A4CADBEE3BB05A652F581AF3DCC9C8ED5FC89844F3F917A17B869632642BD6C9C682BBEF8359A8ADB75D3DB3075A60B23DE47B5C295F16AD5BA1BE1B6EB3628D33861B652A77084E69CCC035BEE80FB4C461C12F5AD606475EACEE39EF77481C1999550B13D9F18A4D278FEB74D74350AFD4731F26C30CBBDC687FDD8B06D505967747EB15B0859C7A60FEF1A69EA0253088B8F497AD5042D9A6E335327BD0B1869E2CE0A712474438CB1A259DA34B1C9D028B29DC860CABB0488DA784528046AAC348D6C0E9F426380612B83FE2442E91E8968227854AC5E0A28BE5EFDDE03FDF6CB47D998405723506B032611D68EB162A8FF499C65645049D8C56DFBF9D5DD5E8FA234D9D37AD364C4C3BE3F7130562C9816A96945CDF1A7975D8562CB8729D8511AF76B1EB13AEB386BCB83A8BB3DC44BDE40E0B4139810075D079B394E114E94BB720028EDA36B4C69824EC2E788ACF0AE339DCFEA267855B851BE19E3EC9B040B386FE15F1E895FAD88383F81DCD60EDA60A85AB11CC9F191B1D954C32042C15CF703265C54030D0F5B7A290608592B057CED1640F295B564A6CCA643D7369DD1BDB4FA2A54E6A074E7DB443D5651CFC901CE16F4ACD3D54D14DBF110D9C4B731C569CE9A5C7D9B1B657860D3553F84B675977479BBF2B59F20A07436245932F94AB7F2A8E3BF95FD867A2F57E4FD75781C89ADCA9F7880AF4E026E2A69A6A78E8D49511258F2EFFE701A423A18BE4E74CDC9255DE2261B6DE7C1EC1E74DA94A8253862E3397D4D0B533B9A192D2EFBD950F33A2E47572A9E1AEDBA2D993E4E563491DB7204B7E401F1662196CD9E011B0E3DF23E080459599CC02D5EE1E58C12D169244BF5F47BDD340F79FBB0DA1B0ADA3DB591D86C00F7A16F6785E4A7BE0EFA68D176D88A41B4D6730359AA52046E6D97E55CDDC161C37DFBFD3512D8EE1109420E39FE766701C6E2557A01F85750209163E263690488C698C396FB4BA0A3A289E470849BC7B7CF5712E17E48BC4ED1F6675874D08EF12B2E59A7A1826643CAED6C5DB34DC011F805D209F6215A0FFC0A1025020E5237E95871835E010F0B90E31BA39E1F38D062C2A0818B3CA9C00400194D2431558C6267F0A594F4EE296C341A0C17F0C48A4F6134057216880D46E259352F19CBDEEDA58B87C061D823E773B5F02B9F8255A78D86B532FF605555173700DA876FDE3453C2E8AB670B0FD18DB3906BEB454EC8AAC7DC4A9878C8F452F92268A8DFA0B88A5EA496B33F5D69BF4E7CEEA44005FEDD35ED6C723715AB36E7A89245B60BE4D1CD6DEB89B65CB9782287C68A07044EE98063F3C6026BFB9DBAFB1A34121E3A4A58D9B76B7F5ED686EE882EA6D20D30F13A684819436E48285BD6F29D72D5EAE34AF1BD28082184D5D8FF8A71B70273AF3E7B31990AA1BC7C17A6BAC263DA6E18735F4FA1443EF8451B05BDFD2945AFB8AD49B97004B4E0B8EC2CFF8250BB1EA11C2F2E72C86CE381FAA8BAE668C6F1AC0E83C67A1A885CC9FCA9F146CD7E23E96C2AFDB5AD43FD5CED77C0AAFC5FD988851EE7E12065F94AC764B0CB8BCBEF3FA0A49E72B3C6D102ECBB5CF1DF4CF211DA1D90C7DD53347F5A9C6AF5CE9525F2C8DF998F47834ABC67D8A656F11457942C2A4290317D185094741BFDDD94FDDECBBA1FA19635BC9A616D10C636F39A70870BF891071DAF8AB0E4CE3E9E91F7423300E31D332D68A8B2648F06E801E3048EE0FC1DC26EB4D962367C52D4412C952D077E32478CDC0EEE0E3A9FFBEB22A639EBFF12C7185BAFD1099FF528CC5B5E22F90BF5BE2A605ADD51D9E42CECAC1D8B11237FCD1F8A6FF0238B2B94E25325CE14440A1EEF7B3EDCB3D0170D4A8F5DD3A329E632047029D16CE7ED0F0395276D888E0284C9588B032F456FCD03C596557CE8075CC5719FF8B5323B48141CCA2E596056A3BA0764D6A58588AE15ED33FEA07CBFB8FF0FE21B9ACAE3BCA822D609D2FDFE802D1E0E0742B39B013779935A4B142092B6B35946C3E40B4F603635DDD8C995EED480D79473BEDBE1F982250C9ACE6C2ECB38FB7F5E3E433BAF6F8EF94C1AEF148DDAE7481301C5D644B4D71CC6F468DB5909706424EEF048CA258A1C35B15558EC09B757CCB8B569046F01F0CBD49DAC1F55130D884FFACCE9D2BE0C8EF4854180808F74EA9386A58D6B996F5765843CEE256B2D6E0DEB10D7BB72947E392144FC049397FB15B473041E92EBC8BC8342569D62413CE7DD79C7803B84AE27CD5D6565DFFC91EBBE4C8CDC11564CF42DC6DDF28C6E533796926232F3BABC07EC77247E32CCAD42216ADA54EB98EB73BAEC12AA611F55E24C79876543E0185985BBD8612576FF586DF6AB2F7C3A06EE93C97CE60123A0101695659CD8F98AA79F4732762338627E74F21D2D2B88507CF3BBDEF2AEB254430C2AB1A3AE3C9A4941A3E6C4E74E1D42BEFB41A3A57AE5E7D8EB1478FE91717CFFFD1084B8AD0315256077F31807574C5AD795D035D12ECEA1CD410CBF1EA0E68C0FAE6DE23A49C96B476C9FF73C4F68A6ED86864B3393A092E3C6B317FEF2761D7A40559DA5F5F9441DF2A1734C2DB4B8AFEEC0E66A0B098694E0FDBF5FC9659325EAB3AFB7DB87566D3C1CCDB6E29F892F5E1B1FCDDD7942DEA554AA53403F6B5E3B7D49EA9ACE1513026659E46EF0EE94F8CED7C7BE049D8C2690718016EB61F1C2898B7BC0383164A82F74EE50ACAD27002B78A6398295F3791E5C54CB4218D83560A04015FFCD270687374D54676626A1641FBB9D42334683C36B3DA86762FDE98CE8332FA5B8B0E5D84869BCFE5D3229A78BB8615DE7C74D6DFC15727F82C592BDD3BA182FA62E13DF2852B5FE5C020F2574D6001AFF685EA3B6AF118B775B9A9E7314135D4B90EE51B990D4D3456974817C03D8AF811412676A0BB88D62E97F64F09D0C594153714577346E41C9092A27134FD81294D3625235DB93B119BFD256BFDCFE090AC1ED81FBD28E4E621537337782C3BFF939ED819A447EB7EFD83140ADCC8622266AA9294138DA800E954F46BBED2ED6AFF0563AD6E86A5B55E1BC52BECBE5562ACD5E8F58B54876028E7626C6ECD0F12547F2A484CB046D28A33AB4D1274A0581809B326B45603BC5ECAD192EFB67ED21A3C9188294F7ED387C9062E0E1D6E1A35D30F270255AE565EABF52A1B533EBE96936D4CFA013909C638319A0FB47AD61D38FC96B4217D9E774B586CB74CE9F96437CAF538B12BC4A3735B63145BD0DF603344564B9CE140F8884E702FE9A0722C28330A193572559A303FA8564986FAA3B7FC2CF563784CDB3FE721B918C503A5996DED5853B211DDE62205BF1F1FF798551C3CE58C52380CAD50CBCF49F3707DB01D7B3637F7916C682ECD4E407A1A169D96978F7A5B7DBCA70533CD6D072DC85C58E5B051CB12FC9A942872140A07AF45B18676E03576BFA2CE4B3664293D3146553CC9FA1BAC9DFF345C21F58D2E37A5167880013E0EFFD3B4BC76727FC8FE33E21C42B4F90AC5686F052DE419653B4B8AD5EFAB71ECA041A1C72EDD4F85F3D7C0AE6137A91A373D9632493DEF7420D9E0DAA4E775D43DBF42A71D59CB584A26EAEEEC9C3283780538FF9D27FCDE3D47EEC9F95DBC9A7A904F7BBD7B085BA642F7641C8298AF6CD48335EFCBCF59C65629266BB24D40446714FDF05BC12F7ACB9B41402A2588555C89B8BCC1D2CD4877EEEB4F291892FF18283D8B9ABA4736B6DC5A410473D8E646CDB79FE975B0DDB47D0ECFB675E7D4A0FCEA2D396F4CB76CE9B03D7A9381ACBFC4610953E0042D4133DBA5F9D822CFA2B38BF603DE5EDC3D4E000784CBB4B1D032E9859A9A7B6BD5F131962A6E413FEB4E2E8D56FF24476EDB1EB87DFDF6A6978E2B5A8436228622C8A58D31E443D611DB5CA0D553BFB325C4011656293D0F00FA5C11D46782E7015AD92AFEC1A59E7CCA02C191672F55FDC5A0E5B83CE6F3549CBC9818448F906554F0E6937A5E85CC1C17F3BD1E672EE81E80747B1ED679DA64E53CD1A8574E6DD58763BA1F1193E0F5D66D28BC5F88109BF58DA957459DC4D733C6C57D55A42B80EC5997C4A488F24C7C257A94E70E54BEA1C6CD174B3DC913DCCD4D926689D5687E17087D6C5D71F63E69B992C179B24A1B6F60B7F4434B9F90D97220C2411410270EA34FC9B8ECE561F359EBCBF78C7AC48F91A7E2DD5E97F5F8D5589EE9ADA88D158FE344604EFCEA7007D46E7BEDCB22DA142E77160F6F755DF71524E07A3B71D303966637E0AD4537F1C0EC1C7A3FC8E1AC67CA2C0DE31A9354BE072531654557EFF3AC0784815E96A8510BA9B438DA80DB093354EC70731625DD34C1C58654B2062AA7B21137CF12267FAD9CD7D01E077E95C3AB8655159B306077B92B5B301E06118DC362648EC9201876702AB87FB73748C821DB97E132DA0332A4C8F6D479DA2096F787B9423F7BC05A539C5AEB43D6EDEFF4F012AFB4EF9BB3A72EDF20C02AB2A2805D8A49B660F66FCE06809D12540D00B3AA65FD55F689C171C379584F66E2453843FE44E0BBD33A788EA377E69198EB250719972BA53AC063C1ED2B1D57B11A6BE0A69D806B0BC947005BA1FFA38DF051F1BA0E275809E8CCAEC73DED5DEDDEFB611F677A3DC9592CFE1B3D9E688663BA337FE31343533023BBAFBFCA5D24B10EF6B291AA048416B25032BEF1F4B1F571789793AA5CCF1366BA204CCBDE16DA8A907136F27D107443F31E8F89AE7D40B3B19E7AD5F124AA75819FB234E6BE12707417B9A9F31B38316BB36AFE5C5A7EB9523CEEE687B42C2038D04BFAA04E5AB31A10D49E6E64122BE48D3AC0DDAF4D2DEE5166F374CD4DCAAAE98168C4C3B4D45C6BA226CD08B6E1361395C9D1D96FF1B147207CB80377AB54ED90E6F7A106900947720BA2CCBB325E67834E20B7E4B53489F507627E03A93DFC447C1481778E2C9F220503703D4F3AEB49E3DF0EA06ECCEDBA7C61C08B4DBDA8C0D3EF3DE7DDDE6BA6E92D80F700590772E3017742F926D03D2B471E10B8DE5EE2807F080718BECE16F24A69DB8C4F9E49007E2746C927D2CD787B041A638D9BFE3DC99B5FEE54730735834ED613C4EEBC77AD7F33E291E07D44F163981DDCC695E96A31092487A2506D0E33AF6018ECE60EFB2EA0D1B648F6DA9B9003727E040D24F288AFFE6C8AD08226F1B3829FCCEFE1EA132FF5DF56244EB498349B98EA8CFCFC9AA14F9BF4365DF086B9167671651122C78C41EA5DFB04BF464A4E8EF87B4D654DDF03B3FA8D087E2E8021F3DF084022E3F309540F118BE23C63484B067C0429E6ADCB8FB2A9401366D27702E8EB94F6628928F5EFA6E612F83A23B0B804235671FCF993DF7D47302D31EF64D6A71B3C0F3E99FA6AD0F69836557FE7AB3D1033BA4DA5536EC90175F17EDB296E87709F8D36CE70B94521262A703E0E044555C869BA6912022BF0C72D5881148CF3CA5ED57F8E329597AB63DAA681FAC07E9E32794B91B754B148CF606CAD5DD537E96DAF2A25B06DDEDA067F260C5D1F53FBF07E8D0F16BA05B3EA3C69986521386C2F3343FE9CCA4C5E47F052B14C053856A7506B408E91164B6556D9B58F6AD916C00BDB6A3622F75F618D8FFCAA48717AE71DE221A120AF7736E3051390BC4FF8330ED2EFF60438100AB044966F6BB43A6C1B408C517E12C4070C4F53CF66274D39FB38CB420C1A4C9F7EEDAEAFAF53BE9E508DC7726ED872722D5C5306763D5A35F147DA5E2ADDEE944CD86819B206F96A4A62208C30DC3BE270B4D46AE630D39815C94FF9DAE7BAFFB14123A1919782CAF42EE2FBAA4506E4743290CDEAFD2340BC8E35C54BD8782EDBF5B4F6CD7C85E23E9A300771B2F7C50076C9E5C2401EAAB9C288B7F00EEED4F89DD8EB9B1E5394350F768CCBEA3246C5E6F5EC882D2BA9D9348CAE4BD2F0F835D5B4076563228509451609FFAA89F046B42AD7026FD0174ECA5C1A40AE25A4BE1BDE1B54CED1C8F5B921ABEE28AE99223BE10F1E418D1EED4E31167A02E54848D995E1585B953A9F50222EB44FBA23CF122BE0DF805A0A3EFBDCC34597E2373B549E1C48722DA68E888CCB709EA1615827C068EE52D97702C7987F9E5F01138CFD41120E5F7DB6A6548CF6653903ED7D5BC408E3276445ECADFAB70FFC6462C405CE6AE57376D090C599EDA82338EB2C20E812098E5C94243C3EDA17FA28C9B4CF690B382DF0209C5ADBF43D8B0CBBDFFFB40373299FC8BFBC41DFEAC0647C3A955EF3207856B0D093CB0102F0889D81CB8E811E4D3811561D91F4B65B1C606B6AC9AF7A36D8855F8BEA2129AEE3B457D2E992F6949A6A0F754C1392AB649DA5B6C66FA86E07215597EDA91F727A5EB15FCDFEC30B2BF81F19FCA1B5C941147701C3C97849A599DB4D633D694D780F013196985796FE358515ECD55C47DC722FE5B10AC05424535774CD46AB1AD700B42892A58FE5B11CEE83C32894B9DEFB22C516039148A1293733F1A588A8BFB4B84F504A2748D1B29BC657489E15BB59633C99C72C4C0661D5FB2D7E0FA33AFDC3547B0D4A59DBB244348E4323A27BEA950404C7C5A48A7CCB5C10DF4E196269ED938EF1ECBEEF989636FAF795CA5F264F22DE8D590149561583EBC2EEDBADF59349CF4EEC7DB17B2A240196AE7CF1A60394AB97B7E9A062211E931139E235E5DB66A4B51C73216DC4868D51867FAA2E95E7FD41C20DC53FF807471F560BFCEC05752D811D35BC6A15D72CC5A423DCA0874E00B5B38A88C9F27584FA0E79D6287C46E74A5227DBC70D576E8E634F46295C25EDDB550E6F277914EA0AF1D846D96A08F3801F024641AD64A16B1F0B1632FC4B25F7195CF14E63E515D752D037E86698D1665492437D6C19B9E3B54D7A181F620DD7A658B639DF9998412A78D3AB5C0F60A459688A6DC45862AB25143E3A5DB5BDACD6E925B8ED6F03AC8799162C0B14432A700FB272317D7C2B4A33F53CB64556A37CD641B022C1E15F9E1147EDA18631AF785047FB4DAB3E0AA97348413C94B6CEA9EE850436A85D885E91B9E2CE5E00200D8DBCB9AC12255A7FD2B576234CE5CCFDD5F1160256F04DC632E3AE51114A532EA00E4817B61516A17DE67E6DF6BD68CDA8EA024DF35A215B6219EC349E388944680EE363A44CC2F85519D82B89884CDB42C8C28DE0E767C98E217752880F8B44C299FF00285CC6467BC399A1210878F32FB6775900E154EC0C88A03736458B110A91D40F8B16590F77FFD1F5F977F48C6F8788A75C9BD44FF46C0ED92E91C4A0327BECF339DD1995A0A65DC81FD7D3BACA69906CF293539F5ADAD7A7CD6F5F646E86DC69AFBEC60C024FB4F5E67DA922DBCE8D7ADD3262EC811600E49A364050D07DDAEEC166070E9808C22406E852E0DA2298651A7C015AD85081E89C98E28411F5BC003AA4F25BE9F7A97B8C8087311A2B29993030CA96D999B3F50AC7AF5B8A3433236B2ECFEADFB63C100C072BC8DA9ED03636B317BF74C401F80D7C52FDC0B03F7E7420A5D8F07F3A12C6A8CC3790E6876FEB446A68C79D625EC343EE6C0D9582F7CDEC405E91FD40E8DA871438BF30BFED24F9E490C738B0B38DECBB9D64F6CCB51050E27482299F98D0E9B519FCE884B880C75124EE7DFBEB62B2C57EFF26B13E192CA8DFEA367677F78F8280139ECEBEA7C1F82CDF83E3D6B6EB893C5BA687EBE56125FCF2CE76640BA0FF0284D9E7089A71A360FF9D02842C3C4150C7ACF49ED1F2CF2EF6106EE1FD85F01987C23871CC3F8AB7BBF8375F62B10861923BE573C70153ADFB015CBA667485054BB3B3C8C4598123E5859440AC85924B8A4EFBE3017357B98EABDFCA7A4B224974767771CB3517499D1CB685A64C054CABB71430E700FF9DAEBBF168AE02BD349490CFE4910E1B71D6BE79A0DF5CB66E42761A527D6B0C79FAAEFFC477555A9F2D505084B89506D7486862E2F2E77791809A9CBEE9303CCE2B20C4B7A11A526ECFC8073F165EC85F933E37B616F681A6D2F8D5F027E6E8BFCB3A9AC5842DB74980B83F80CA4076FAC7A4B61E187A702A56F89EB6146131A4A74F4336D21FA39D418C38A1B14B689E43F2E841BDCF1A6C822071E01D9367BA5DCC4521020923663349E398B8D584913C471472F0DE019822BD37C37884847E11F0E5B5358614DFB9E55A844EFC1FA28DD588AF2FF29EDF71297D66740D6D420CC017C948FF23051B6E6229FDF6A536DE6E48F703409B948CA54745CE9259C99891F919021A6F601AE8A451708D3ABA8C5F747C98D99DE477BE8F3635C6E2B804D0E93038E8A0A02421578926FF2025C647D1AE51D1942A2E74A4854A071D55982DAD0FF71A06204DEE54E7D7D3DD7350BC823AD1B02BBE2A7B58048675CE48BAEDC042982E881D5FC14BD43C3BC8ECA3711446B3AF4EC47E9321DBDD95C7D5B4DBE687DDCEA1156BDB8303E12F7BA0EE20D247D4B1B7736A540386AF6EEC639F2306C65D449562955F7E3A8B0AA691BEF3E6D495F2BF949F4C5CB0CA3B8FDE9A53D81AC0D4BBC62E24DB3BE0590C57321B7D5704073431675F2C4D2ABE1E476D1635798438A19E107CAEBAEC8B97BBBFBF7468F3B4E7707B6853BAA81F182C6F6B8004CD34D3DB05ED034CCE736CA7BA9913CC7D97F75880124223FDBF7875A27C5EF212A6B53234D8945CAD6E8C99A09E09C701BAFAACA65617B0AA9375CE29B66185EEF703DE82094422D7FB897918FD1AB873EFEDAFE60F7ADB144675A53A31EFFD7BABD6F1B358964D22D4F6470CF154F763CE929837180852CAF803D3B1FE41A22B3528576BC9A38354566BBFE476301B802B8486E0F734771B07A9B82E7CA62F03AA329E2BAD8AD0FED65EBBE78256AE518FD00D036DB07778B53398FF55E25524F230659EC7048F55DF1D04F9D45899D369B6B37AEC84C7928B63C5611866FBB7734372714C2D7E6CB40C54A0C21A155B380D242D6B7A239CCB5BC17BB039978E1694BF1B0E9CDC36E8B2B95CFA5A7AED98DCE59DAF7D646D950480F1C0043CFC05EEB56237F0EE9B129957B94E12462CFD448EED60E89C474DAB6AD809B4811EDA67FC7654EC3CFCAE118167ABC86BAA921FEA4FD44D1873BADFC5DC09DD1FE93DC2898CDBC59DEFD3FC3E80C5BC033F8567F8EEA7860A0880B29F3DB926AB8F3B77EE7279865F708A249C2BD23F4F97E8B4C9860CF85ED4D36F9782953BF8FC626639C27E0AD6F3B4FBE00AF1D2EB78812DA242457EC9C0272BFA1EC73B957F3BBE3A09379CBBDF6CBA8D4C8CE4E4EB5AE286A8ED20F9582B061E594A394488ECFA77D0C0BF401223CB462005D78EDBADFB6091416952BB16B3B6BE00E4363B1A6FC1EA2FF28BF2D95E4EFEDC89036A72C488E5BF98B909A21117DD8AAB2B6D457B864EAC89A14C859F83443A066C9353BC2EB7249B0DECA6208A218A1F1460828411E345841E795BF86D80EF8DFE1EC8BFDE0D3F96D1AD7310A3F1E6B30EF0B44307484FF20B9E528370162B1828FCC949AAC2E6DA02BEEF108E0D2A9CE45C63478EAF985829E1A250C7020DA70A65728990E08CA69A8CD6CE2FCDE9021AF99E3E47CD6BA1A28061D777916420B4BC3E2ED89CA6F706FC0E5D84797E67F548126B931B9E97F09EA7BD6DDC33B78CA58747F04172CD7AA34E6D3C7F02E0ADB19F0713587611E2EB4FF6B57C7EFB78FE8D11CA9D50D50B9A983A53382B62112E3AF360812C586AF4AC3FAD83A04B07B258EA845ECFE374A6F8C0B6E3F9732C0ECE4791A15077A885F11C7B51D9F042C29D0680B7ED8E419D263EFECF8DD2AAE08F89691FA32B0933534938F9185FE27D1D6C86F25840CD52801A2E612E43A8005D71DFC08BFBBB53D06B1C5B2361DC464BFDDBE448ACFE2975B635584EA55396A0E3DB274A94B37619DFFB0081546B954D3B50716C3F7C56641CB1956F96DB03B1EE81DD2885A2290AC822352680CD77938AFD6BB35933388917415E9762ACF82FB2191722C4C59FD0C97B0F2E5B75548604D0DA3A2930648A4F286831B75772C5554DAB51698542890C890F16710DF0340BA709172ED7A9CD81C7D83890DE7691ABC11196F21BF027DA59C779F45984BCC7DDACAB58CB870DE3A36F739E0785A547AFC90C287DA5A5280B75DC7B8BC085F36C65FBE96E567993397F71D25C8B1E4CCEAEAE3484BAFFEF1CD9F64318A73BC2029EDC135230B051F37F795194524821C414A2539F5592D51283D5667114E3AA09F5350F5CD69CB6FFD3AF289962BAD3B428926C00FB07B83990907A065FBC1784B4D96DA112A7364AC4B91FC508FC20F2ABE78B1645A170157A7D2F159C5BEC379EAC22252F5601885DAE191DB3604CD8C20D720BC614AE3377DF4E1E61E2D3C01C02E7F72E0C9888111AEFA258FAA5D98BE982019B2776564D3E68E7E13351F4F94A822CE409D73B756EA28C7756AE87B5985809CB1FC8DC98D560409F1ABAED1CBDDE7468EF6ECFD53465FB0F098B14462D34EEA7B872D1425412A427D8657E4D4F81510EEBB36CF8BC0C9EE225A00CE6331C49E5015DC6DBFC8C8FB8CC738422864438F830226E1029383975782DF0D13976DA3385C2B91E3EC4CCF464258B3BFF0E4AA8250E0B65A75AB57213DCCD3DC8D6F02D7BC6993A45247A2F8C5D10A9DA8BF9F6C0E06E625681258B565C64CF323419B3899FC148D9F7FFA025CC889677E2D21847000ADF5590B164991B9658D0D07F325E4C7E6B51F057D7B8928575CAE02CBFCC4C00DF7D234A3BD1B8209465E68FFAB8ECD1E4C2A23DD30A5491E9E72100962990A34AAA9BFAE07FC5C47A6FF10C822C6EFBF54771A3F90690FFA02B3EC2BCD15EA51B0800AE1C9D8DB64C93FD4A59C1F77A7D862A2D4852E3D98F9BC96CFB31FA50DE5F8B0AA6956DFB60689FDF18A746ABF53DEF00E8EE51724A99BD9DB0DB5856CBA4E2424839C0FEFB4949A30A25CD5B0CCB6A1046BCF794893ACAA2753627B8C8713DF39A32364F6530774B04A36CD59A5E4C0DEA7A82859D9D84EC9D109420B1812D2188C8E1F7384F73D6271DB507E02B6512197067DDB9A9A0292FFA9D5202B89F94EA618A6691F535D9EDB9644B4BA91AC89A4F11C50205131E9D05F9B7F15D1BD594A6C7A89124E577A1BFF88B777B9DB22E1E994B4660ECF924A26AF51EC7554CA60A2E8E77297B01EFA3ED43489A87296A53827DC425BFE169E2E3686CE2D192E993B5C5F9AA62C5BAEE5DD1AD40D0B15523A352006274F3BDACE23C317394D05136B21F284CB1B6BA0DD2C7F39103AF50744685BD8781D800E2C48B6EFFC1D5476E3E717E2E4BF37F288E4F2E5227465278D1DFE694AD6E35E65F9DCA7CA3577EB269855554E9ECF33B05B37F9D4706133C7FC2175389D506C30DAFF0F4730A88719FDAF530BC30999D74E246B6925DD7147571584CBBF278BDC1AC85790B63DCF459DC10994A0C9803B09369195C2CE51563CC676F044BA33C8AC8B38211C98E764FAE76967A7A95400DEFA192D7FC2FE3A1EB65F521CE6FB22175D3F909ADBE2F2F744EDD0F03781A35BD7FDB320F6176052BB915E36D453AE1DD2F52FD278BD4BB373147EB8993639EC2FB7B4DE4F3217B7EC67D5725EBF67548B3D80BD0383DDC8DD6A07C156443FB3254707D25348418E9961E5D63E0082A4FA45A549DB3EE442E7CBAB21D4309871C8DBE55540165AA84A403E1EDE42CA818C48BD9C47D48825C22FE7027F579CF2501555C57C35DC30F122553D479A6BEB0F614BCDB2F06310300EF07E6634BE0D9AB1F069D8C11A0268D7AF1DFBD02ED4F09D985A65AA9536C285FCF6A85A2CB7F32A168B67FB9D932D1462847C752CEE27F0C77486A014F0E38D23B38A891EC3EEE942517A6DF90F6D1A67259787C220013778FF29CCD81FEB7B6E252D43720D4448503B35936207906126E141572663727D9107DCE114816F894F9D3D280CB55FA50183FCE8CA71306E807E88C6096CE64CFE33EB28E8C52EFB16DE3FEE6E209ED63229E5C4D8DA732131538670B00F161D6468B8064033B740179ED460696EE67012924E29671404EA32ADB72D22089262D5C73E320762CCA6E7366C038F0AF4CD5F376E928C0D8EBE9333C597E6193D30EBDD9D162BD236845640E569F13A99FD8F2EE1EA3DBA4AF6C7A73D27794A22220C72597B05BE97C48AB58847B2775DCDDD886B588116C3DE8EAAE8BA015C0566398AC4F8FB1CB7171F59753D1B35C3F745DC806113D65B7383B1984A558793219C26BE6AA3A2657886B1CD96503D47F8B47841D593C700BCAFD3F3C02E17E05C16FF6B59AB8013C4660A521201EF8DEAF6B65188B3DAC24A1841B00A6AA0BCC223728696B386EBB2647FF7C36C0B77702D5ACF442782582F9000A87602108AB438365258C053E8D6283C4C1F53911D4A1701B32EEDCABC857EBC8E5B9585446AEC96E8DCFC15A724450489B80A5DC604881CEBF99F2971A85ABFD0F000C84B61D2EB7A29C29B3A8C476F40A2560239EE657BFB5F4B64592C4CF39D57F931B4018BFB3D8714CAA067E05DFF19674089CF432F6FFAB69292B5B89EE65F0AAB4F91BC752A4D3D52C9CAED7A7FDE3E961778576B4AC9AE5D80E5C582D21DC1D3B7BD8D977295E9AC051FC5FE9906196CF343DA447E6D96330A886508CA575128BB49DDBD7F9DE98F0CE66B43E56B7045D5320E932CE285375207A756A507225CEDF692313CF294976EA767C2CE4A8C4DDB1A954473EE4AB98261E84E41263A9792EA78923E13097E54852EF3988E68BCEFA2AEF676FD7195326233818BED93393466B87E0AC7E6D384D88FE1602C5F38E1E304B1E16C26032E5E92EA9DDEACA3D8AA1E570C220EF947982ACE6F6870D39D08DDFDBB2CB7A6EC9C777A1BCD9F2E399C244C8FFF9C81591AFF34BE21E7D778CD7A9CCEB404C9BE21B1B9F67631470680488CD167E29A0C7D15127681E190C027607E59FF1AF50A964F5B11539F83FC2885CF9861BC837AE31E9E1A6DA6A1B16890A304E769D95F64BA810F813FF6DE394B33CF6AB26C8F8556B816B923FE6689F9EF9B7CA5C8AC08B944FD07F062BDA9D07E64912818FF747D15943A0349918064E5241EBCE91598E7887C02D519C10A1EDC0AA5317F45816B6D929E712CCC146B971FC23347525A94188BF6B8A48B13EFF2412BCD72531E8E04CDABC00C75BDE0F95C89160F51AA795E309819CC4A3A8AE798440BFA7872EC1D56EFF9DB2E1F5369B7026E8BF2E041CC805E31B083760C2EF8BB456780D1A0317C1C7DCDEED21CEADF72036DAFE0DA49BA817357293B632E74CAEED64EF3D9FB455BB5BE993ADE772CAE58BB787EEC95E6D50833455A7D15AB14EFC368A01A1A7897C32FC084B076E2C370756CD98F498B0F60A8DE1B889193B281B293BDF7FA8DF2340F84FEAD64A99FACC4DE9098A74091AAD383A657DD50782EBDC6108E833347931E178E8DDDCF8704CB44C7E82AD55BDD91888B4E9F06892FB3B45533FE7F6EC9005FBA8FA44BDE2EC332E5A6D4EBC2015019463B6B35CAE2DE45B9357D91689CEC9F794EA18911D98F6A8846AA352CACEAEC721A77330653275DD123DDC979A6FEFE77409C294DBB53B2E3FCAE680D7C31B5357C766C9C52F8AC907D99D5C65BB0069EAB908C7F1444D43D2A242E793A6179045CACC4E6BB6E7A6E847A18B624A8C98208043367289C71AAC1E183D5B5CB97737F2CC59F6E3E66A820F39A49B909CA1585664137C08429DE381574B092E77E2B519B512DAD6F721FF095F248391971EE46DED599FCDD79E4DB09083AE0818D0D02302261F9E88F906316B28297FF9DA0121AD42447C9646BA00196ABE090B26FC1613000363238B5BC32E10747F1D5B8B6A4E0BADE701119ED61BE86475D56
@@ -506,7 +506,7 @@ server.listen(3000, () => console.log("正在监听 3000 端口"));
506
506
  </ul>
507
507
  <h1 id="源代码"><a href="#源代码" class="headerlink" title="源代码"></a>源代码</h1><p>源代码增加了一些按钮的状态,交互更加友好,文章表达比较晦涩的地方可以跳转到源代码查看</p>
508
508
  <p><a target="_blank" rel="noopener" href="https://github.com/yeyan1996/file-upload">file-upload</a><br><img src="https://user-gold-cdn.xitu.io/2020/1/9/16f8859bdc09fa25?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" alt="xuehuayu.cn"><br>谢谢观看 :)</p>
509
- <h1 id="字节跳动-EA(Enterprise-Application)前端团队招人啦~"><a href="#字节跳动-EA(Enterprise-Application)前端团队招人啦~" class="headerlink" title="字节跳动 EA(Enterprise Application)前端团队招人啦~"></a>字节跳动 EA(Enterprise Application)前端团队招人啦~</h1><p>坐标上海&#x2F;北京,校招社招都有,hc 无上限,有兴趣的欢迎投递简历至 <a href="mailto:&#49;&#x39;&#x39;&#54;&#121;&#x65;&#121;&#97;&#110;&#64;&#x67;&#x6d;&#x61;&#105;&#x6c;&#46;&#99;&#x6f;&#x6d;">&#49;&#x39;&#x39;&#54;&#121;&#x65;&#121;&#97;&#110;&#64;&#x67;&#x6d;&#x61;&#105;&#x6c;&#46;&#99;&#x6f;&#x6d;</a>,校招内推码 Q7QUGMV</p>
509
+ <h1 id="字节跳动-EA(Enterprise-Application)前端团队招人啦~"><a href="#字节跳动-EA(Enterprise-Application)前端团队招人啦~" class="headerlink" title="字节跳动 EA(Enterprise Application)前端团队招人啦~"></a>字节跳动 EA(Enterprise Application)前端团队招人啦~</h1><p>坐标上海&#x2F;北京,校招社招都有,hc 无上限,有兴趣的欢迎投递简历至 <a href="mailto:&#49;&#x39;&#57;&#x36;&#121;&#x65;&#x79;&#x61;&#x6e;&#x40;&#x67;&#x6d;&#97;&#105;&#108;&#46;&#x63;&#111;&#109;">&#49;&#x39;&#57;&#x36;&#121;&#x65;&#x79;&#x61;&#x6e;&#x40;&#x67;&#x6d;&#97;&#105;&#108;&#46;&#x63;&#111;&#109;</a>,校招内推码 Q7QUGMV</p>
510
510
  <h1 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h1><p><a target="_blank" rel="noopener" href="https://juejin.im/post/5da14778f265da5bb628e590">写给新手前端的各种文件上传攻略,从小图片到大文件断点续传</a></p>
511
511
  <p><a target="_blank" rel="noopener" href="https://developer.mozilla.org/zh-CN/docs/Web/API/Blob/slice">Blob.slice</a><a target="_blank" rel="noopener" href="https://developer.mozilla.org/zh-CN/docs/Web/API/Blob/slice">developer.mozilla.org&#x2F;zh-CN&#x2F;docs&#x2F;…</a>)</p>
512
512
  </div><iframe src="/donate/?AliPayQR=https://store.xuehuayu.cn/store/public/alipay_qr.jpg&amp;WeChatQR=https://store.xuehuayu.cn/store/public/wechat_qr.png&amp;UnionPayQR=null&amp;GitHub=null&amp;BTCQR=null&amp;BTCKEY=null&amp;PayPal=https://www.paypal.com/paypalme/OrdinaryPerson" style="overflow-x:hidden; overflow-y:hidden; border:0xp none #fff; min-height:240px; width:100%;" frameborder="0" scrolling="no"></iframe><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者:</strong>雪花雨</li><li class="post-copyright-link"><strong>本文链接:</strong><a href="/article/14192.html">https://xuehuayu.cn/article/14192.html</a></li><li class="post-copyright-license"><strong>版权声明:</strong>① 标为原创的文章为博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接。② 转载文章来自网络,已标明出处,<a href="mailto:cainiaoblog@126.com">侵删</a>。</li></ul></div><br><div class="tags"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载</a></div><div class="post-nav"><a class="pre" href="/article/45157.html">新型肺炎疫情最新动态播报汇总</a><a class="next" href="/article/54313.html">70个JavaScript面试问题</a></div><div id="vcomment"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.min.css"><script src="//cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.js"></script><script>const origin = window.location.origin
@@ -67,7 +67,7 @@
67
67
  <li>render()</li>
68
68
  <li>componentDidMount()</li>
69
69
  </ol>
70
- <p>注意: getDerivedStateFromProps&#x2F;getSnapshotBeforeUpdate 和 componentWillMount&#x2F;componentWillReceiveProps&#x2F;componentWillUpdate 如果同时存在,React会在控制台给出警告信息,且仅执行 getDerivedStateFromProps&#x2F;getSnapshotBeforeUpdate 【<a href="mailto:&#82;&#101;&#97;&#x63;&#116;&#64;&#49;&#x36;&#46;&#55;&#46;&#x30;">&#82;&#101;&#97;&#x63;&#116;&#64;&#49;&#x36;&#46;&#55;&#46;&#x30;</a>】</p>
70
+ <p>注意: getDerivedStateFromProps&#x2F;getSnapshotBeforeUpdate 和 componentWillMount&#x2F;componentWillReceiveProps&#x2F;componentWillUpdate 如果同时存在,React会在控制台给出警告信息,且仅执行 getDerivedStateFromProps&#x2F;getSnapshotBeforeUpdate 【<a href="mailto:&#82;&#101;&#97;&#99;&#x74;&#x40;&#49;&#x36;&#x2e;&#x37;&#46;&#x30;">&#82;&#101;&#97;&#99;&#x74;&#x40;&#49;&#x36;&#x2e;&#x37;&#46;&#x30;</a>】</p>
71
71
  <blockquote>
72
72
  <p>运行时:</p>
73
73
  </blockquote>
@@ -16,7 +16,7 @@
16
16
  })();
17
17
  </script><script>var _hmt=_hmt||[];(function(){var hm=document.createElement("script");hm.src='https://hm.baidu.com/hm.js?011f0b44e8452bfa57fbfa23c5fe7683';var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();
18
18
  </script><script async src="https://www.googletagmanager.com/gtag/js?id=UA-150860401-1"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);};gtag('js',new Date());gtag('config','UA-150860401-1');
19
- </script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/fixedPage.min.js"></script><meta name="generator" content="Hexo 6.3.0"></head><body><div class="body_container"><div id="header"><div class="site-name"><a id="logo" href="/.">前端壹菜鸟</a><p class="description">关注前端知识,收集精彩博文,做技术的搬运工</p></div><div id="nav-menu"><a class="current" href="/." target="_self"><i class="fa fa-home"> 首页</i></a><a href="/archives/" target="_self"><i class="fa fa-archive"> 归档</i></a><a href="/guestbook/" target="_self"><i class="fa fa-comments"> 留言</i></a><a href="/about/" target="_self"><i class="fa fa-user"> 关于</i></a><a href="https://laonongmin.online/" target="_target"><i class="fa fa-group"> 看看</i></a><a href="https://love.xuehuayu.cn/" target="_target"><i class="fa fa-heart"> LOVE</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title c-post">面试准备</h1><div class="post-meta"><span class="date">2023-02-21</span><span> | </span><span class="tag original"><a href="/tags/%E5%8E%9F%E5%88%9B/">原创 </a></span><span> | </span><span class="category"><a href="/categories/%E5%89%8D%E7%AB%AF/">前端 </a></span><span id="busuanzi_container_page_pv"> | <span id="busuanzi_value_page_pv"><i class="fa fa-spinner"></i></span><span> 阅读</span></span><span class="post-time"><span class="post-meta-item-text"> | </span><span class="post-meta-item-icon"><i class="fa fa-keyboard-o"></i><span class="post-count"> 445</span><span class="post-meta-item-text"> 字</span></span></span><span class="post-time"> | <span class="post-meta-item-icon"><i class="fa fa-hourglass-half"></i><span class="post-count"> 1</span><span class="post-meta-item-text"> 分钟</span></span></span></div><a class="disqus-comment-count" href="/article/c5576490.html#vcomment"><span class="waline-comment-count" data-path="/article/c5576490.html"></span><span> 条评论</span></a><div class="post-content"><p>面试准备</p>
19
+ </script><script type="text/javascript" src="//cdn.staticaly.com/gh/npljy/npljy.github.io/main/js/fixedPage.min.js"></script><meta name="generator" content="Hexo 6.3.0"></head><body><div class="body_container"><div id="header"><div class="site-name"><a id="logo" href="/.">前端壹菜鸟</a><p class="description">关注前端知识,收集精彩博文,做技术的搬运工</p></div><div id="nav-menu"><a class="current" href="/." target="_self"><i class="fa fa-home"> 首页</i></a><a href="/archives/" target="_self"><i class="fa fa-archive"> 归档</i></a><a href="/guestbook/" target="_self"><i class="fa fa-comments"> 留言</i></a><a href="/about/" target="_self"><i class="fa fa-user"> 关于</i></a><a href="https://laonongmin.online/" target="_target"><i class="fa fa-group"> 看看</i></a><a href="https://love.xuehuayu.cn/" target="_target"><i class="fa fa-heart"> LOVE</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title c-post">面试准备</h1><div class="post-meta"><span class="date">2023-02-21</span><span> | </span><span class="tag original"><a href="/tags/%E5%8E%9F%E5%88%9B/">原创 </a></span><span> | </span><span class="category"><a href="/categories/%E5%89%8D%E7%AB%AF/">前端 </a></span><span id="busuanzi_container_page_pv"> | <span id="busuanzi_value_page_pv"><i class="fa fa-spinner"></i></span><span> 阅读</span></span><span class="post-time"><span class="post-meta-item-text"> | </span><span class="post-meta-item-icon"><i class="fa fa-keyboard-o"></i><span class="post-count"> 1.4k</span><span class="post-meta-item-text"> 字</span></span></span><span class="post-time"> | <span class="post-meta-item-icon"><i class="fa fa-hourglass-half"></i><span class="post-count"> 5</span><span class="post-meta-item-text"> 分钟</span></span></span></div><a class="disqus-comment-count" href="/article/c5576490.html#vcomment"><span class="waline-comment-count" data-path="/article/c5576490.html"></span><span> 条评论</span></a><div class="post-content"><p>面试准备</p>
20
20
  <span id="more"></span>
21
21
  <h2 id="Vue"><a href="#Vue" class="headerlink" title="Vue"></a>Vue</h2><h3 id="基本使用"><a href="#基本使用" class="headerlink" title="基本使用"></a>基本使用</h3><h4 id="v-html"><a href="#v-html" class="headerlink" title="v-html"></a>v-html</h4><p>原始html内容,有xss防线</p>
22
22
  <h4 id="computed"><a href="#computed" class="headerlink" title="computed"></a>computed</h4><ul>
@@ -27,8 +27,6 @@
27
27
 
28
28
  <h4 id="class-写法"><a href="#class-写法" class="headerlink" title="class 写法"></a>class 写法</h4><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">data () &#123;</span><br><span class="line"> <span class="attr">isblack</span>: <span class="literal">true</span>,</span><br><span class="line"> <span class="attr">isRed</span>: <span class="literal">false</span>,</span><br><span class="line"> </span><br><span class="line"> <span class="attr">black</span>: <span class="string">&quot;black&quot;</span>,</span><br><span class="line"> <span class="attr">red</span>: <span class="string">&quot;red&quot;</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
29
29
 
30
-
31
-
32
30
  <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">:<span class="keyword">class</span>=&#123;<span class="attr">black</span>: isblack, <span class="attr">red</span>: isRed&#125;</span><br></pre></td></tr></table></figure>
33
31
 
34
32
  <p>或者</p>
@@ -76,6 +74,146 @@
76
74
  <p>mounted:渲染完成</p>
77
75
  <h4 id="父子组件"><a href="#父子组件" class="headerlink" title="父子组件"></a>父子组件</h4><p>组件实例创建: 先父后子</p>
78
76
  <p>组件渲染: 先子后父【子组件渲染完,才能挂载】</p>
77
+ <h3 id="高级特性"><a href="#高级特性" class="headerlink" title="高级特性"></a>高级特性</h3><h4 id="自定义-v-model"><a href="#自定义-v-model" class="headerlink" title="自定义 v-model"></a>自定义 v-model</h4><p>父组件中</p>
78
+ <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;CunstomVModal v-model=&#123;name&#125;&gt;</span><br></pre></td></tr></table></figure>
79
+
80
+ <p>子组件中 CunstomVModal</p>
81
+ <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">&lt;template&gt;</span><br><span class="line"> &lt;input type=&quot;text&quot; :value=&quot;txt&quot; @input=&quot;$emit(&#x27;chage&#x27;, $event.target.value)&quot;</span><br><span class="line">&lt;/template&gt;</span><br><span class="line">&lt;script&gt;</span><br><span class="line"> export default &#123;</span><br><span class="line"> model:&#123;</span><br><span class="line"> prop: &#x27;txt&#x27;,</span><br><span class="line"> event:&#x27;chage&#x27;</span><br><span class="line"> &#125;,</span><br><span class="line"> props:&#123;</span><br><span class="line"> txt: String,</span><br><span class="line"> default () &#123;</span><br><span class="line"> return &#x27;&#x27;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure>
82
+
83
+ <h4 id="nextTick、refs"><a href="#nextTick、refs" class="headerlink" title="$nextTick、refs"></a>$nextTick、refs</h4><ul>
84
+ <li>vue 是异步渲染</li>
85
+ <li>data 改变之后,dom不会like渲染</li>
86
+ <li>$nextTick 会在dom渲染之后被处罚,以获取最新的dom节点</li>
87
+ </ul>
88
+ <h4 id="slot"><a href="#slot" class="headerlink" title="slot"></a>slot</h4><ul>
89
+ <li>基本使用</li>
90
+ <li>作用于插槽</li>
91
+ <li>具名插槽</li>
92
+ </ul>
93
+ <h4 id="动态组件"><a href="#动态组件" class="headerlink" title="动态组件"></a>动态组件</h4><ul>
94
+ <li>:is&#x3D;”component-name”</li>
95
+ <li>需要根据数据,动态渲染的场景。即组件类型不确定</li>
96
+ </ul>
97
+ <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">&lt;template&gt;</span><br><span class="line"> &lt;component :is=&quot;compName&quot;&gt;</span><br><span class="line">&lt;/template&gt;</span><br><span class="line">&lt;script&gt;</span><br><span class="line"> import myComp from &#x27;./myComp&#x27;</span><br><span class="line"> components:&#123;</span><br><span class="line"> myComp</span><br><span class="line"> &#125;,</span><br><span class="line"> data () &#123;</span><br><span class="line"> return &#123;</span><br><span class="line"> compName: &#x27;myComp&#x27;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> </span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure>
98
+
99
+ <h4 id="异步组件"><a href="#异步组件" class="headerlink" title="异步组件"></a>异步组件</h4><ul>
100
+ <li>import()</li>
101
+ <li>按需加载,异步加载大组件</li>
102
+ </ul>
103
+ <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">export default &#123;</span><br><span class="line"> components:&#123;</span><br><span class="line"> Demo: () =&gt; import(&#x27;./ImportDemo&#x27;)</span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
104
+
105
+ <h4 id="keep-alive"><a href="#keep-alive" class="headerlink" title="keep-alive"></a>keep-alive</h4><ul>
106
+ <li>缓存组件</li>
107
+ <li>频繁切换,不需要重复渲染</li>
108
+ <li>vue常见性能优化</li>
109
+ </ul>
110
+ <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">// 每个组件只渲染一次,且不会销毁。</span><br><span class="line">// 简单的用v-show就行,稍微复杂的用keep-alive</span><br><span class="line">&lt;keep-alive&gt;</span><br><span class="line"> &lt;A v-if=&quot;a&quot;&gt;&lt;/A&gt;</span><br><span class="line"> &lt;B v-if=&quot;b&quot;&gt;&lt;/B&gt;</span><br><span class="line"> &lt;C v-if=&quot;c&quot;&gt;&lt;/C&gt;</span><br><span class="line">&lt;/keep-alive&gt;</span><br></pre></td></tr></table></figure>
111
+
112
+ <h4 id="mixin"><a href="#mixin" class="headerlink" title="mixin"></a>mixin</h4><ul>
113
+ <li>多个组件有相同的逻辑,抽离出来</li>
114
+ <li>mixin并不是完美的解决方案,会有一些问题</li>
115
+ <li>vue 3 提出的 composition API 旨在解决这些问题</li>
116
+ </ul>
117
+ <hr>
118
+ <h5 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h5><ul>
119
+ <li>变量来源不明确,不利于阅读</li>
120
+ <li>多个mixin可能会造成命名冲突</li>
121
+ <li>mixin和组件可能会出现多对多的关系,复杂度较高</li>
122
+ </ul>
123
+ <hr>
124
+ <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">&lt;sript&gt;</span><br><span class="line"> import Mixin from &#x27;./mixin&#x27;</span><br><span class="line"> export default &#123;</span><br><span class="line"> mixins: [Mixin],</span><br><span class="line"> data () &#123;</span><br><span class="line"> return &#123;&#125;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line">&lt;/sript&gt;</span><br></pre></td></tr></table></figure>
125
+
126
+ <h4 id="vuex-使用"><a href="#vuex-使用" class="headerlink" title="vuex 使用"></a>vuex 使用</h4><ul>
127
+ <li>基本概念、基本使用、API</li>
128
+ <li>state的数据结构设计</li>
129
+ </ul>
130
+ <h5 id="vuex基本概念"><a href="#vuex基本概念" class="headerlink" title="vuex基本概念"></a>vuex基本概念</h5><ul>
131
+ <li>state</li>
132
+ <li>gettters</li>
133
+ <li>action</li>
134
+ <li>mutation</li>
135
+ </ul>
136
+ <h5 id="用于vue组件"><a href="#用于vue组件" class="headerlink" title="用于vue组件"></a>用于vue组件</h5><ul>
137
+ <li>dispatch</li>
138
+ <li>commit</li>
139
+ <li>mapstate</li>
140
+ <li>mapGetters</li>
141
+ <li>mapActions</li>
142
+ <li>mapMutations</li>
143
+ </ul>
144
+ <h4 id="vue-router"><a href="#vue-router" class="headerlink" title="vue-router"></a>vue-router</h4><ul>
145
+ <li>路由模式:<ul>
146
+ <li>hash<ul>
147
+ <li>window.onhashchange</li>
148
+ <li>会出发网页跳转,</li>
149
+ <li>可前进后退,</li>
150
+ <li>不会提交到server端</li>
151
+ <li>可刷新</li>
152
+ </ul>
153
+ </li>
154
+ <li>H5 history<ul>
155
+ <li>history.pushState</li>
156
+ <li>window.onpopstate</li>
157
+ <li>不可刷新(需要后端支持)</li>
158
+ </ul>
159
+ </li>
160
+ </ul>
161
+ </li>
162
+ <li>路由配置:<ul>
163
+ <li>动态路由 {path: ‘&#x2F;user&#x2F;:id?’, component: User}</li>
164
+ <li>懒加载 {path: ‘&#x2F;user&#x2F;:id?’, component: () &#x3D;&gt; import(‘.&#x2F;user’)}</li>
165
+ </ul>
166
+ </li>
167
+ </ul>
168
+ <h3 id="Vue原理"><a href="#Vue原理" class="headerlink" title="Vue原理"></a>Vue原理</h3><h4 id="如何里面MVVM"><a href="#如何里面MVVM" class="headerlink" title="如何里面MVVM"></a>如何里面MVVM</h4><ul>
169
+ <li>很久以前的视图<ul>
170
+ <li>asp jsp php 已经有组件化了</li>
171
+ <li>传统组件,只是静态渲染,更新依赖于操作dom</li>
172
+ </ul>
173
+ </li>
174
+ <li>数据驱动视图(vue MVVM,react setState)</li>
175
+ </ul>
176
+ <h4 id="vue-响应式"><a href="#vue-响应式" class="headerlink" title="vue 响应式"></a>vue 响应式</h4><ul>
177
+ <li>组件data的数据一旦变化,立刻出发视图更新</li>
178
+ <li>核心API - Object.defineProperty<ul>
179
+ <li>get</li>
180
+ <li>set</li>
181
+ </ul>
182
+ </li>
183
+ <li>Object.defineProperty 的一些缺点 (Vue3.0 使用 Proxy)</li>
184
+ <li>proxy 兼容性不太好,且无法 polyfill</li>
185
+ </ul>
186
+ <h5 id="Object-defineProperty-缺点"><a href="#Object-defineProperty-缺点" class="headerlink" title="Object.defineProperty 缺点"></a>Object.defineProperty 缺点</h5><ul>
187
+ <li>深度监听,需要递归到底,一次性计算量大</li>
188
+ <li>新增,删除 无法监听,需要用 Vue.set 和 Vue.delete</li>
189
+ <li>无法监听数组,需要专门处理</li>
190
+ </ul>
191
+ <h4 id="虚拟DOM-和-diff"><a href="#虚拟DOM-和-diff" class="headerlink" title="虚拟DOM 和 diff"></a>虚拟DOM 和 diff</h4><ul>
192
+ <li>DOM操作非常耗性能,js是执行非常快的</li>
193
+ <li>vue和react是数据驱动视图</li>
194
+ </ul>
195
+ <h5 id="vdom"><a href="#vdom" class="headerlink" title="vdom"></a>vdom</h5><p>用js模拟dom结构,计算出最小的变更,操作dom</p>
196
+ <h5 id="snabbdom"><a href="#snabbdom" class="headerlink" title="snabbdom"></a>snabbdom</h5><p>h函数,返回vnode(js)<br>patch(container, vnode) 初次渲染<br>patch(oldVnode, newVnode) 更新,新旧vnode都有children,那么updateChildren<br>patch(oldVnode, null) 销毁清空</p>
197
+ <h5 id="diff"><a href="#diff" class="headerlink" title="diff"></a>diff</h5><ul>
198
+ <li>只比较同一层级,不跨级比较</li>
199
+ <li>tag不相同,直接删掉重建,不再深度比较</li>
200
+ <li>tag和key都相同,则认为是相同节点,不再深度比较</li>
201
+ </ul>
202
+ <h5 id="模板编译"><a href="#模板编译" class="headerlink" title="模板编译"></a>模板编译</h5><ul>
203
+ <li>vue将模板便以为render函数</li>
204
+ <li>执行render函数生成vnode</li>
205
+ <li>with语法</li>
206
+ </ul>
207
+ <h6 id="渲染过程"><a href="#渲染过程" class="headerlink" title="渲染过程"></a>渲染过程</h6><ul>
208
+ <li>解析为render函数</li>
209
+ <li>出发响应式,监听data属性getter setter</li>
210
+ <li>执行render函数,生成vnode,patch</li>
211
+ </ul>
212
+ <h6 id="更新过程"><a href="#更新过程" class="headerlink" title="更新过程"></a>更新过程</h6><ul>
213
+ <li>修改data,出发setter,(此前在getter中已被监听)</li>
214
+ <li>重新执行render函数,生成newVnode</li>
215
+ <li>patch(oldVnode, newVnode)</li>
216
+ </ul>
79
217
  </div><iframe src="/donate/?AliPayQR=https://store.xuehuayu.cn/store/public/alipay_qr.jpg&amp;WeChatQR=https://store.xuehuayu.cn/store/public/wechat_qr.png&amp;UnionPayQR=null&amp;GitHub=null&amp;BTCQR=null&amp;BTCKEY=null&amp;PayPal=https://www.paypal.com/paypalme/OrdinaryPerson" style="overflow-x:hidden; overflow-y:hidden; border:0xp none #fff; min-height:240px; width:100%;" frameborder="0" scrolling="no"></iframe><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者:</strong>雪花雨</li><li class="post-copyright-link"><strong>本文链接:</strong><a href="/article/c5576490.html">https://xuehuayu.cn/article/c5576490.html</a></li><li class="post-copyright-license"><strong>版权声明:</strong>① 标为原创的文章为博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接。② 转载文章来自网络,已标明出处,<a href="mailto:cainiaoblog@126.com">侵删</a>。</li></ul></div><br><div class="tags"><a href="/tags/%E5%8E%9F%E5%88%9B/">原创</a></div><div class="post-nav"><a class="next" href="/article/84c9ccd6.html">精读《SolidJS》</a></div><div id="vcomment"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.min.css"><script src="//cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.js"></script><script>const origin = window.location.origin
80
218
  const serverURL = origin.includes('cainiaoblog') ? 'https://cmts.cainiaoblog.cn' : 'https://cmts.xuehuayu.cn'
81
219
  const locale = {