-
Notifications
You must be signed in to change notification settings - Fork 0
/
atom.xml
488 lines (241 loc) · 643 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>参星阁</title>
<subtitle>南方嘉木的博客</subtitle>
<link href="https://blog.cancin.cn/atom.xml" rel="self"/>
<link href="https://blog.cancin.cn/"/>
<updated>2024-12-18T11:19:14.186Z</updated>
<id>https://blog.cancin.cn/</id>
<author>
<name>南方嘉木</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>2024年12月记事</title>
<link href="https://blog.cancin.cn/post/29194849.html"/>
<id>https://blog.cancin.cn/post/29194849.html</id>
<published>2024-12-03T05:26:30.000Z</published>
<updated>2024-12-18T11:19:14.186Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="b4db5eb79ad08537b8b7a1f29bb47ddda133b4fad127c573572de4f874f657fc">60d8e185d3d2499053ad10f4ef5a6cbb986d74b332c9fde0be96ea60f89fdc2e76effe60684760eef9d24b0b38fdda98956cb8638ddf2fe9a2d5087fca3471c4f8eacb6cb44ed8f0f99dc60d5827c9f89e4136a0497ba9f68b7c6662978aafa4b54cfb5091f5449935e7775c98a4fd8742ff9b10e406d03f355f68360d678fd5d13f3f7ce8263b9f5918b7a6cb0b8d98868a3f0012393e7c561f2b680ebe54ab3156c9ab06c8e0f9eac086a6613a6f119af3552155a08ee1a51b2ac7706e31c775adf9979a0376c86870fe1b68a67bc3f26e4a57e2c6b8428d3d0cf147970a8370a99e3b19b2581425a114d5fabe934cd861e6b44981c890b8c2468254f0376318d8b372edf2f21c135c0fb3e651ef92f2cc5d4554577f44ae067b692b6a31d3409710d90f46dfdf87ed4525e636c18a88afe6d70b1986b1dee203b150ddf7369da7883e9a24f1fe3487ac16c28dcb41ce7c91180014b21f4cbee5f9349cd823a33caac4252eb775f89fa7ed2da8063dadd70f227e6e8f4c8aba60326bb92364658d5fa8f88602456372aa8fba4e26206c1ce1615c4b82e6c4529684901f8a17dce9352de051fa8645835269d48d094223e0e0c002ac10b48a72f6c675f6d83e5748c87e131c3995afc5b741465a3e8fcd041fb1c6ed9863da96337f086bb59a7e29596909de15b7f4af8791070036fa3d5292025ac1f2d70256a60ee7505a3ea3476e22a90c7fd95fa5779bfdb6187eb0a48709a3b59d977c1d6a9344a82646db0d91babaddb99d446e938b3185bcc775ac720ab7d3fb7f53a4e59fc7d02d3153e07831ab1c9b1445f7030da85aaad6425d8702eed96a7e6b455d9d3eed720269d34b47be0629df9009702df1cc0db1078324b13b40d151a408ec6b031bf53064df7d9b2b958cb83066d5bbb582affd50b2199791799f8dd875eee952ef9fc6f5378848b02065d05d6bdcca372e41b622bfcbf4f679e26b471046b1ac7476cec04c4fd8b7accbcf06e3b0eb59dbcdddf71c9e29332e3921894137909ab855f38efce81ca3469a41cbdd7cbdc258c26a77686b17636e12248887f199445a25c9e999a346f7cae200e582b2b33c2ad16034a76437c0304e1096f7a9eb4652958e772c47780a33d34bc6ab75c0e92daf83dc3abf3b7871b1d71fc4a891769a8f6613c790c2db34984e7f6c0004ad3b2e931d49a452773e7e59ef3f12240736b3ebe1287cf36431a43e30738f9ae2366beb6cf937006f869fa9f42237c433be01bb3507113c51d4e50a0515bd522b32da5c400370bc002c93dde3c90c7df6d419d81836f88dac2cd44fddcfa3105a60614348b68a7e33c047251fa84d4f03ddb39ecbbc4c5a7e3724f3f8e7705b8d66017d41964176ad7c58b8a2337b258fc9142f1a40bb9445534268c8685b54bf7a1e759bf0b9d3a29cce3ab4c3011a092c995bf6c5c48609fba2e0abe9ab5ae06d017dcabdddc9cbe6b3464147f128303ddd1c5dd90a8c781c113bd7f026aea385a2cff5104914d72057c6bd5f76f95ddd63566a6d1caea2d9145f9fd429cfc6398a676fd6af5804262623ebd52bac17027c74f0f0009b29d584fb2c44dfc3363ba66e7d94a293e91e7a1b598e54ac6b30770be1478e9c39ece95d12b79ffeaadfad5a66d5658edcb9d185db298ac5106db183c823e4d0a442927d9fe6fff30abae9d457fcabe504aaed9508a9ccb371970fbfd61527781f2799d5040cc5b1654793b6f627a370a158ff74bbff2c1ce2c5e8e35668f1670b7f147e76720add4b3b04ccda8a0ec7201fbfe03af152652f30a7d487fa06cf894b28c9735c9e0cc0c2aae05f760ac2b0dfcf7060e82eac0b85385d976d1fe1ee1954be36574c99f0bbe6ab36a4b08d274914b5560d7c778b3ba6fc83246378a0c59f24c3e88473b81263e06bfd3787c3d2b13055a3fcc4894f76ac3528d731718eb969066a4cd62f51cb6cdb39c576a033180ba8418322f601c03a6bf362784fd3e557fda7ed38415f4cafe172180f13f7fc1848250cc6b3dc4e836cea9dbcce8dcecc64ebddaec3b9f2f268d4974843f2fe410a44bd6ecc3b9f3a35f86079617bd5f13470335686504d54fa5048f1688f0befb64d88c65811285c90703639ef72797539cd18f675b0d47c8928293fe1577ccc752602b1ee003cdbeca9ad00ffab155c7ffc4de4e1299c4e8b1c043ecad665e9d4f662c6cdb55c943bf62f030367dc051afdf2efb4daf0beded0f7bf2f4f6af6992758fd0bb13bf2946325e8811ab27bf538ccff368dc165939c340f1c3c2e0ea3cb0bbf3d98fbcf3119a5462dc08190fd7208ac16d699ce7bdcb39ea82d805c1c4f09f7459e19416c18cb55d26daa29bb483c4dc7c39067847a6ee972946645486ab5ce8a3a5a3477155a20e1b9eab586a9791162d84f3acef570a32cec5cb690ee95e02710048e3e859c9f9b20d6ff0f78df2415725a6480b9fc78a1911afb08fed2495c7fae01766a89619ddb1c0b1d8fa7051e7d8bb294f09217d15f47681c2aec3b9df2a31423a9e8fe66d5d1a5539bd1805e8b6852fa67e9a72b58d6c35b3c07e238371508f926daeb823443a6fca4528408b8cc0882ac79a0a1b638d9817daead18bb4104f546ea9ff80a82d45ed4078fdeb59dafc491fafb62aee9158f66e3a16ca96b530c919af5fb6b1a341f7b2223bbb8582725dc8e833cced029677ce04f501dc40ea568a2ed58ea642ed202bb0bb57b6eefe9dd74fe0d75900fb5514fd77acf105de99a2ebd82287fc5ef087da3a42be8c3dacc38c551f4d5cdf5d8e5caa272356dbee351b6b3e7928f9773df7a3ef30ed053b65316c576f79bce24db89d918de7bf25a7e878de1f8d6a47a84cc5245ea9a21dc690067929de0d9d48b560426ad54ebf39976facc25b6737084c20ffb1b57b9a4b23e01a3bd4e2f6fcb5c5452affe4c4fdd7f1633260e9bd842754a047ba87bd24e7a1deee5074a54317f56b49f9394cf6b808a69c201e3297c62ffc9b56948f4dc47bcc69a7288e28121051f80391657e5308700b2b2ac3b88288cef694fc150870aaf5c59f3facad7c1338f192aeb03c2f08f87ffe20356af417da14c4228df71e2fae0907108665ceddc1ab31bd1b1b23d5d2008fb9f567ca7efdd7a9dc44035ab5cd7bc213cf11c424bf2829236e17a19443feb296ad91b8ecd768a57b6ed7c35142e77971a4e5250a7f05ab5af21d51b91a3f9e33e2bea6f70ab178cf2f16d5d6462795965ec09d3a2783c0ed52c31f09b4a97ac1154fad99ae1f414c91459ea640b805293c014c666cf6a2f18c1b656df6754a608df5cf5e96e1b754c6360991cf8d3d25a4fdce655eab54c5c688ac24c53b3b58080e552a14d6830908d1328f8c5578d52da6731019f9c2dafd278a9a2b405a94372ea8f88936bd2ee576e038fef638de757acc0aeff7ede5312cb1615f9666defdf61674edc04dfcc6797e22e1cd6bc9c1296d2c871a6fcf8d0b6edb41fb1a7543f2302a5ab87aa9f26ae7c7d380ba834ce1dd26c5e79240ac9e2384bdc3eb822acda6a32b4c1a55e97b511db5faf8f144734cd9586400d332f65fb9ee5dcf073441ab2672edc6b3e7a08b2614cd5c0b348453655523d49e5b4683b1e766ee57ac95de4c6b08d1f83177e25cfb0f77091aa7eb669b77d43ad6ef69de757060ad715a164c6efe2c672352ebccfb317e034f3b16b50152faf51a1f51befd39a8bb289d3f1a6fe21bd8bf369d62789d2b193a7e64c2103af32d897d319f04361811c3a243ca3160ebbcf6a4f29c026b87a142f8f25c828accb064951693ec802a6aba47faa4cf26643404aa391f4ec98a2afc3ef8f5c6dd63ccaf1e2f124e5db2aac8df6677ab904d94366d9aa9ce0289b9fdea23216222e2e8af30e0e96c383ec5564de2cb8648cdfe97872ac622d05d4067544ce62a68970ff012947d291f7e7f2becdea3694e3a7c11f8882ba0104fd325f70a3aa6456ddaf6e380cd1f79ef332684f7e9a2fb857045bf4db5b45e30daaa94721724df44957b25064ab7237ca17ddee7494c486a4059f54ae26fd703e20f58275df6a4c3337e87e361bab9f0f5275be70405d08a2ebc47a2867ea80ab143170ef04f3b27c9e5ec845ba653ba241b794552eb25b7350e9ab7bb9f1cf7ed59ecf84d01e198c85da235b46c40a7fcf6b242789e7821ba5a594cd5ea831bfa599448731e29e4bc97061fdf108bf9e503bbd22b57a8b607f4a024010b117fda7ca36ce84b5778e1743a7fea7fdd41a2dfd6f5ae463a96325b60dd0a178de754740e17b9caa77575b9cab8e4cf23ceaa95c9bf20483dd6770da2c91a1048f8ccb0789ec6a62e22a1e08b382487741b6e44f668b297693f22d6016ed12b5f2afdcc849dc7009a27dd9a8d0592600c23f42b1e28181d90e005e519451093caf13dfa1284b11ed3b427aef0202c185ddd592b3cc66a98d4263b1357c0c4291e08414e8bd52fcf110c593fd1561fa379b674c28ce562a6a234395ea23807fc662bad0b327a6ca726a91fe65da63fbbfc008f080f2a39aff6cd5cee3c756add147725e5bb8ac390491699ddc221c55a53efb28a8e72a75df901a707fe51e87489ad71a23c4f0b028ce5574398aacd6fdf028c94f0be86e2463ba10aafab593199283d6c9cadb309e992ee60a167febe35ab580c7ad0dde91781c6d0567acedde505219e011fcd896ed2512a4f7f9cbe8ffa2063deb0aaf40f30fed437b2173d3f418dde292f3083842f059df0f911aead0f06967540aa17fbc118dda421228137a179ef03459ee524fb0f5df50ab2577ea3ddad1d86ed20a06abd4d36851ec454af5b2b119605ec95fc12993fd9971b02659bcaa5bda514e6647d19a86b8c5b7976f68187acb0b64a2da2644526a2f2d0e7ce8824e9fc01899eb40dbafbb6403b44ed9a184d62bd5c947b55d313c671d258dabd2375ca547d84dd4bcf35ccd6771c74e476fa920469f1f09ef43c65836f6b59d368ef4b687714e8e7bf1208b50d38d44a92331681d089aad5ba16cbf6a6b088a1345452034365288dd4f0d455230efa38bdf3247624042c8b656ce15631718414109683727aaee046984b3947c5e9e44957c825eddcb357d1d619dffe98ea32c98229f222a134be9644bcd5ccf726e3c52debc9f51d8b394ed9a8264a1d8866bb8da6156d28e5033a63924bde1c3d9d880c21ece18d9f892488a3844f0151ec3872d3225411ae0a5eba34dcbb9bf1dbed3362d1b72709d94de6b652d8fea756ca57aabb2cf3c4dae5961a0991a38bb4a4a811cc17e4c32787c5346aa6fcc347e815431230ae0d35593af9fa18111f3da80effe6fad002943ced070b9ed7d89c5ef3cf1ae58b5d122e94796c121f9956b3913a43d3193bb70fc29189099247af895b804bced56d1db42bfbf6641803a1eba30d19565d02ebc74e099ebd43446cef25e5546b0d052ca5e24bb062cf2c44184787f13a23b6d7753ca645fe3dbeccc89b03a1f5e226e9574aed453b9c472f1ae4233a0eedbbcdd8d8eb0b1536456db76930295f2a9fd8dd0480d22a14f5ff7496c99f01e4e8b8917cbef2b56f6dc300d7edaf0d289994d6ddae1f554132adb65802e1c3537c747a7d3e215eea298915c741b23f5160dd08f84356ebf58cf1589fe87d593422f75e98ebc40b0ead930b410571e58c1decd468effb1ad913d9ade6d84ccae6ffa08c6fb36ef762e1952750bd1273beabaef2f0d97f35ccec16e0c100d0315ece055f40bed3d15f956727721972d1ff93186b6ba6a9a67dbc025d3d695b5029cf26549802bbb6b5e5b796eba3bef6699690c2bcfe0a898dc9fd40d619ff430db125deb790f66ac2ee0dc665211acb4ec754774a3e7df573afcc29f7fd0b5e992260bfcac5bd5156e6da49e32a66f743af7b45379a20a832d1ab3e9af0d0aac06e46be6e24ba199d7e83d4f00f25465255ba29e9cff3d334a484a00663a56a2d756b163c145c5015d41f9eb381e1929907c49349ecb680f2d65712195d37ba58b8f5c8ea87ec1c4525e394dde0928e18c769035bfd5b5c2c4d77620a67b17e9f5feb6c21e5e6496b3b5c371f3c475a8e3ce52c6ac77d7fad73efbbba862142314df9cb472f2f0d51b9b0805c842b42218275990db4806bf15be55d59843fad3f67f6cce3ff3e022b217b4e67ddaf3464758c6a60eafd40708812b083684890a3edf9e2ce8048aca43a06c5f0297e9d6ef0b16226c4cde51030ddcbc5479f40b134f9408827343018ac6c25a1bbe0ae6316f002e376f7f76556971432dc49fc3bfd51094760e101e3afc99f2adce9c5162f7c1daac1abeb1b8a9ce90b66ee69985ba553e2d06838027979c5ef3296c11cfe48d088998a38adbcbd1c8a6ff56cf3d9e8f9b572f2f1f110d9261dc9e1cc0814202cd60d9a4d0796dcc7da2c9b8672b153d4cca5fff05388a65062eef80c11c63ffa9a003145937306086c4d47ea49a6d907d99d7fa9badbd4b14101005cedb59af2f1fd33e4ee339e4db9340472f073baec8aa9d411ef146bee78d5f5173923764281179d1a392094c5030996e6ec03f93a3c1531e665d71ee21a047d5a86e38586b1f727f7bdb0da866928621b0a0e53ec221283352f6cc14487fcf17cf167821b2ca893ceb25fa30973a981a8332fb12c5d689a62f4a083e45988e300626f2a2997a5ed58c5e690c63512e432132a1a470abe8c50f759f8d47c4d0a8c4caa2fa3c145649d77e436ab15157c69bdd5a1c87dfc66a95a51c829298fe195a5fe4244d890c3798b2b30a2374341270563db362f026d90dbbc5d21b8101aa88c59d20dd7016cdafa7baa93e3b82ec53abcd3aa4772ab340c004593521353cfd78140a6d2ab96a741cf86a90fb2ce56fe8a558c9fd60d4af8cc204b0139a944e66d13a27134e6ce923a9cbbae44f9563d4310b6f66b4640a7246c763c9e58c97b0c3ed5aeac14ec9d415a8a469867c30ea167dc92b4ff87b6839a7fad3036057677bcafdba1ebe5396588e205a550d44d380863bbd46a689bfbf908d2a828a97fef69086dd382b8ba3329dae335fb2652b869192c3a6a0f08b79684524fdb04d77ffa0ddc0602deefe44e6ca3a76a970e3e3c8351fe8c2da6b4da05db163f0c0cb5a6c19135119eb523295451b95810869e09dd150e2b5e22d1c664fb57ba3975c06dd1846bb1169737d565803524394f7431cf39a067512cdc0a8e931050028a21ff516766f0ac1b9661986093e47515dc16cd8c2247a5e86c77df1706fcefa5995e5ceecff4d3d8e428e9ef01f5d62b02d35cc491ac83689ae854d00c57be7740ac933173482a9397670350bd4c76416a4979c7d0661225fdb8d4af2ca006f800e9b95a3304cfafa2baf081107344c009a8b2aff4bdea3badc1ad498dee12e53bc18696f374f9327d4dfc2a2ad2ef7b2d0963808c73e11d1f1606eae7c111ef884f496dbf1f0d7f91ef684ff2a674f6119e8639b6457e9ca0b22e5c2d3354ddbdce2f9f51c79f8a3dafe421c33e5b3e31c7b5ae2c4640d6cb86d082a3273aead44afddaf2d51878e0d80e39ff197543fc30e6fb10014ddde27bdecaee6afcce2897f69f5f878a306e4fbdbe9b6be0894888e9dacab9c64a174afc6ea6c1f83b30133a3d0de11cde99bb06ae997d73ca071e5ee8ab32700addd75fae896380cbb325d1ad68f28d9419cc3f200115584ae032befd760b473368dc34c26429120f429b2e384dd83306c6d094eb6bc1776eee556ab8a55d65d05c9591c7211aa7cab5b2d9bf1653abd360d48724bbdbab5b3dc899e6c44d0ae90bef3963c007f1e7c7df94cb486c1c28826369b0c4d5d5c7106bb32f630b83a321c0095ad26576e329868cb6bb5a2b875c044ff73544ea8d57f8e17283ac8350fa5cb61a4378f23192fa9d46c2990e3e7bd8204a85358f98d03eab57ca21c0cbacd96c8db6ce81a1be039d156084705865280bb2678c2aa967946c2ca9f621fdddd97c2609bbe654e05d628a2aa8bf854ecb922079166e33715ed8cdbb3e3200f9f65056a4519b2422b6feef74ced85680c0c9faa54bb0a51c1c7f3394b30766b0099dbed4b6e01ba75f592af0d7a8a8183959de359ca592c98bc8e0ce2784ec345d88b956bad1cf430a4a4afc32c5069a91d84bc4b41f920ed9899e957bb0caa14393bb4d35a21834e96398e0e83644777088dfe4f3f30b32cc3f3712eb4c8d31bab0a69ac459c9888592b2fcc5ca799e079518373666ec3bc0672f4d57b229e9ac5ce21ce3340f74bb8c13f73cae42effd32c821971eb129cb87748d34a2807d5dd294503d42e37e57ba83c84eb5aa2cdefa49c353333f30b4e6a66efa6b7f05d81f1dc9cad0403efbfb590fecb5d8d44765b50abce92f04ed6c8891b2b8f422e1f1d64238eb50e413d7aabf12017a8fc18f7365514b750ca4e6376e059e50b70850574f74eac100d3577c4150e48b9ac74d7125ed919f64a7dbcfee635f9773dd915b11be27179f5553e92ce67aa19e22d26aa9f277fbd88f39167270fd25249ded44e56b08684c2dd47130626b47af311f903d3a070f5494b47f3b02e65ce591ff501fbc6e5f2ad81aec157e3e4487de017fb3cc066698c913c0dd8213dc29fadd521a8349b68587144df12bc9832e8512a0e21198d1700822a26f17a1e48d86eff71d1672726a11afc54c7a410d21832b36e116130038feee2b2fa10692b3bf70208e5d7a408ef15093a4cf1508d96a50a0292549e2bbe595eff42543f44c450a933197459abba023ad3318333465535815bc3abaadc7ab69ca9c231cfc70359d0681f589b9c1202270eb430252810a0ec03e4fbd87ea13ca3fb96be9c8dd1d9b3bb8dfe449ca6721161d97d515836f14b39f63f0bfc9c1c351a3540370b3b8cf2306646ddebfbfe17a7cb2b5f6b2d88c497e0492296a6095020fea13355cad8767423e70eb284a8350d12a25b093d2b491fc287d6547dcfd7edfbc00eaf537ef094f5b633226ec4c0991bf7ee8203597d2a63e5f79f87d4e11b26c9e34fc7ec7b088336c639620a88e410605293aea78b9f7e05c9cd082fbad9103b51e52a713582b03bbe02240aabf03efe7e246c13c60c6eecd37edfef5ebf03f57b88fdea9aadd443f529822d3eea2bcd53adfcc62738bb73592e7382cd123455f5c9ea4cd0076ef4f68b4ac8a9da46ae47b5dc164b301d16a89d4af482b18e982c62364e2eebd34c3ed1791786a1473c2159e71e9b961177cdf65720db183dbb9f06287c1315c047fe1426aab5e25b0af9b522f083348f6fe62a9c20179c413b80db9055d05461e9f342424a0e625b6e5ba3c528b64ae0b2d46ba1a92dbf56665eaf683776c5608faf5c433bab5a2608e10593559d3c23b27082e71a261ace4dd4b9181cf701c4c6f3f36f0295bc86a60cee606004b6ebd0bad7c2a681024664b53d72326d64b0c3c3ef3a36a80dddfc6949ea2e615979130ee171b30751338c80309a717417bdf7f375bcd96bf18beb7c1ea3081a1fe0dfe387d858f9f181eb3c7a8cffb354d9a73a651711ed318574abf2a3bf54825760e3ef7f3272e74015a28ed02ee19e3115337a18906a8e65a0d7824f81793e4a5a158410789bf96a1366b84e05c56b56608beed1117eb8e7cd61143f4608659215f20ee5b362395fa43baef7023998f0b99e3c80bdfe7ff9e1aabada3fc1b88641289791e2d671f085cb670d7f22307fd0e4e9b3434031fefb2f15a1cc4dfaf139f94a68f5424b0fd2b02b9f18b80fd2e5e84a821a3ccc89d50594d62b1d89e29d24c5645fc5260f729e593c1e2aa281b07a344b2d22b3969bb1e228a805efb1dd1438e456e18b2cdb1889188aaa78022bdd005458c68ad9df203d3ce19c69356ae6c6b073ec7bad015327ffe03e235a5db9caa659c4dc0df18d34563b84b6b26a88f5dd8aa00ecd10b8405ed42062f1cd5c29887d180bc81692ef420361ca927458ae726e529c7315232be4559415c53116830edd614cb5e4155f5e7f354eae7146666448379f5e252570c3e376142a1683149b88270bb594dbc71a707279d8eb0d476ea8cd81444ad3eb54f852afd48d196f5867f80a36ce77f98bef6cfa37ac26a5b7425307b253219aab3d74f10ed8251d4d5fdb3bc73bbefcafdfa5c871ca50564d0ad0dbf8215e322cd2b6d352f2ba33cb3d9789f544924182435f6537b1e403a9a069224ef4351b69801cad8e799db83400411378b549fd4dd3969bdeb1cea9a6</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年11月记事</title>
<link href="https://blog.cancin.cn/post/c22ef34a.html"/>
<id>https://blog.cancin.cn/post/c22ef34a.html</id>
<published>2024-11-01T07:05:04.000Z</published>
<updated>2024-12-03T05:25:05.028Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="97e687df4109d0965a69ff351de5a5b1612700ecde36c260519a52c5b39425e2">6405dad55b8e7c84fb21a453d26223c182cf738f4107e6e9b41a09556055da8841c4b8ca3aeb303b817cc3c022e805c0d7ce3750db8296a7dab7977f914b2bfc0b53e357286603d225b11ef5d3a2668d8c32040287a6e5f951bc978902a6ea1c27b3b3232937cd719552d21201f856b7a7fa1e8a7a7646700795a9c6d73bfa16cf4568a4421bb9128a3641cff7bc46f4450402abc4791c42f991ef562bcb959c24be059203b684f66fedffebc319877ee8a9ba75be4309e6862f47d4a57007205a4ee249994669a59cd6e7759e0a037567799b35bc5e9b941aa5ca46c6041abce8a5fc0b4ce4ef652ef95acb4e1ec98b531bbdaca733e04884d8ffbc5bc32d2e29d4284de5950f1a030dd5ea3331de745e7ecc759b1e80e3bc67779ca7864fbb646e8bf30d8d77bbbb59c0053fb4abc49e7fd202f8f3f037e29c2e5da8448ac6703df5fac7a08a04e1a49e18485f054f1acb54eb43473a7f7430e8700e311ba4747e5da62d62be201d86bacd1124cbac5c21900d0a63feb3b95328a4d4ff466b763f8fc37339a43865b7f249038045bc5b902f1eaec775c2a08880a40d99ae827f318f64bec4bf89a77adff11cb11812c9a33dc871b22b9e9e1615ddce2121f257e89f62fe7ba372b5b0c8167dc9a08cb06ad11c95fd12fe760f116dd3c29ff8095ec193ee94db6b588d8fe7793e94e86c963f2b662ed1676daaf9ff9da7a733b629f5c21e7e2e85f6b3c6106764d3573dd4f1fd1a0b28ab826e8062a5d825eea461db78b94eff399b37aa2ca5824a4635d51dc24cc320a6e5f7bf9535fe39ca2c3c2211a520382e202906e429f21dd10433cdecc8ef9176d39256f5da2227f0538d83138bb6079ebb4ffad7485841d82830ff9b58bf4095f2bb82245ae86dd57387ea79f84dda2679949f4cb0a35f4a01719413a643245a0aa9896d73ef0782f7791ea0e297e545a2268e6b4ec48052c1af0ec391070add3e206a59ba1db114ef9933d1457072489564b0f1f1e95b5522c41986c632fc141ca8f96637de5ecf1cebb94b1af40b3ead114605fb8544a4b960e62bdefa76f943e0345302b48d0ce72c6848df3b8c732aa636422e18adbb283f052bd1b3aae69a1980442e360f872ee2d030fff3d2cb840c908461702bd23d9e5ac0b438ea344a8f8ea2419934d4c1deb9a58901769b75d161d174105d62a4c731533872d0f48b98b0e898faba12f7b8f26416fec61d4961bad8f9839fd908b16553e81fc4da3ca253578b06b46d41585c6265fc15b7395004e5123761c9cbad8f2956c92fcbac6cdecc7accda269d5735bc8e289dae98881ce0dc411e562fb6eef89c1e57068176296dee18e175f12968007ad1deea9aaa0fc8e36d6d34a776af6d05a30b062e8c2f385de5be453a1f37bbbb4ae5570da9f0b17f092e1cda73374e6fc69ffe9e579a380f5b2b94b7a81c32ee52867358b565034611c675a609951091e5ed3cf7b4a4e8ed1f4407d5ae18f21b251a2aecfcadfa8986b85b8e5f8a155bf1560f260bcc6e71a6110c413618b46c7ec22388a17beb4c6199e221a8ec37b66c3df125e276cd674267f4a78e4617f1b13b2684cbe1b35efd7554cd8e12610c75e4da3e618aeab376d966e1f176e1e18b5c358208993e82dec3f866365e6f16627939117d23acb45bf12953882302621291b36691fb7594d9f14c9dc52cb67f434bc8616b2ee3ba7da7a391ee8e67af355cee3d203039ae5531eeee0c72f61db82d3c107603a0d90475e545d1db1aa7c44c9713305bf3293f4147d3a97cdce833657db43ea520041a2687c95458e70fa46a000f520ad0e330680e3d5ecfe38e0a7ca5cd6e1553fdeb694e4ef7980feb569b120cd76d68cdeb1ce4043ed729e80ca661608e0f37e95c8b306ca7146503a85f088d6cfd3365e2074d0baf7b962249419aa7de2228d104a1028c68c7edaccc165766a307377f4f595fa62d57ab06904c51cbf2a687decf52b0fe809695f2b26a01e11ef164e198aa693413ed08599340b18c841409d02fe63245f325de338302d6ce2ee556dffcb59d2813a651cd55863726e2613c89ed3cd2e3665a8a98e26687b9d1dafdd4c69a9d13827c7ae21163358db018bc1030589c360247b4e053636c88826ef975af686f8d7794a30ce3251f359ed18dce20d8fa4f46ce3f76d0022eea23a5a0ee4e52e954b4e089c3b349328cdaf4de592d632406560a774e45faf82c17219a5456ee439a61087d4c2be928328a8f5975aad3f6d77459ccc882d1307901771215c58fa4514cc879f71ea55f90e56a405d33802df72f2fdd58091e10714bc48a042a603b577859507e07ba527ec2b316be92f8729a4bc854c339861c3d85e54228b26fe395b99b7b331a012172dd7e95faaa15a304c529ce49998844c9a47c865443112c2d065e9ff21853561fc0e0d48963e15497e7831a74514b2bc5aa7de38794c38198e9c9e5b846efff785034d5d29c53608785a4efb83f6af59afb0c21ebcdd0eb62b71fe5f4d2fae2c175fb7a733ac7ec26ae382610ecd7d1c723a56df6c3182a79be4236b4c3ec068540c2132589cfddf59b394b317a628fa07f5ca68a9590ff2a353be69257f374cc2dd7321b5a879169a7b1008d86daf76f479289a050b2c5e5a23f1d47b3f4e72b9ea2683aed74d3fe9fa6994783e4640d4da012854ab4213e27ecf3dc3271f50644eb2ddcfc682fe1511869d772f087da1f521be105ce071622d5612b0159531ef13f2faa56f7d06bf156e988c59fd7c9141e9e14bae88253203463a7f90a9e0ee8bce9dc6618c0c51057bbc34035add8261bd776be1ffb90cba13b9db9b5a638ba3e99785d82d6958e6312104ce88539c8d279c811c0cebbaaabb9170468522827ad1794e1d5b546d48cbf754db7f721da56d2ebca3ff29aa2c0686539714f2284a4af6ba0ef4ee466bdca258bf7893875c704d7e4bebd7088ec509d66d06ddc30df1cb022029e55fa2c5c42d05310564b2d9962193fb9039a0f7cbe5bb9bb71d4d912e9ec800a13ea2cde375f58f6ba0c4ea0025ae07edf7d7de6272cc01118e3b6fd98ec3f8ad61af2d542c6b3c5fdb0f32d9b748ee8024dcd33b3a1aeefe1624595a8b09d8739fe213675fab7693ec0369e2d910636ed0d5ddc09a4bb41259673f4fc55806eb29a1c3bbaf31645028b39b8fc860b1e4ff9d3a6088b7e003127a3d497a73c13a84e7e9e2ccd8a0d61510e374509434c83d9b2afdfd46f0640e86686f015782dc77cdae6c8c741e051111a09e650ca81ad7e6c5c908119548dbd2a0bf7840b26a601778b40dc093c37725e91b0d249dd9ce223e5d4733a5ed237027c4c7cf9b28f4286091b8d0d243f51649393736b1116364b9bd15e1b4182424a586ea2d7632530629ece079273303f9a36979879ce8645b8f9dcc91f9c810135a17d287926bfcae1ee357eaec5c0b92fbb7f5b482dded3567650dc3c5dba90ed375d03067d945ebac054c230d255ea303bcb81a92df57a2df6190018f0ef361a73c548095c7c170b22da37dd0a8b24998820a2b7940f7100cb58697b2ede7586eaf65fd5dacc0e3227a2349db89e4232a4bb398f005afbf53e90f5ff4fda89d633290cda1042821e2b3c99e0f322d15152aaec586254252a51d958f02ad08ed84a8beadf4a04c4acaf335ae5c88a4f01ea14e983b46d65acf1feba06cd09406f2a8aa9c03583a78e26c53986f639051002702e4bfc9c025c875f6926f0dbf8e137f87619c8c447979dab64f50f68d3dcade3905dbd2f538e433bbf2ccd958cd2e1c8b3a36b22538866fbf76479ce5d67f56d1703d064029a33a75b95b4cef74ebd5c94493ed099a778daf9e8ced9f0c0b7b0d376742f9d29d38ab2e950f2542a98bf2b65745f5e2b7186cbbbd6646e7d61664e66b436ec882f4ccb468e2dbc24eb718aceafa0c79553086c2cdcbfc9fe423c29dd89c5c7d952323ddf891bcb76ce859c4c3e254cbbe77a0df33890d37cd92a85c79fa3d35f961eb2c12a23a4b86499371952d60ad38b966e9f5996410f13a42652755b8199e5fbac25bfb9918f003be6c445c813ff782a8ffdb543d375f93b0b7ecb6d5e48dd2f196f5d6f9298423dcc151c0bbe8d1987dfae702922eb0a90e237d3706c845ac3c5727f090949db157678da4eb8a66dfefcf230fcfeabeaa4cf478677a15b289e748b9700ced2baac6ab3f45c042d65d1153cb5694ade8342f7f0540ef613ce62e0bf8398cb0e7195f68d326ca1820c72d5a0dde3b64326c02a5420839b86afd8df92a7ad0e0f205b4b8c91386732ca874f9f8df59272129f9ac9edb961d51a5de8ad42d296be53bb147abcb9c294a07b741c1787a39a8c3d3c04ee4a03fd7f9a1ce6b7b2371f951c7aacbefc42d9a7f3c0c2dc50262ba5c8b29c9b331e7cd8b720902bb49c6dee9f14c0129a3e087533fc517b378056d6943d8880adb84bca8ca1de3e3fd1b9afc1d2b98b4ce89795aaf2899f1b3ba6b1e163132acc9e6327bc2790d75c891d954953a6c27985b3d01c913e671cb4dd56699ce4597f640b6550f152bc19d26f96f2ccee8ba57b5cd9e17b15d9a21e621e4e7e742635ee5e0812a62ea27e283d278c6a1453cf0b35046867d7c50e54c827aa4066e41f47f76db0ef02ade0b26d8786d83465647503d0cf4252b6562ee093d6f1a790f35811160136b1b42aaf8395b21ca7d8bb935ba65c7fd692044f83a94b5a6c4974195bece3ff8077a5358f47c0d668a36dac68b3326194fdeef235b3be14252d37a92bd7bfa5a27526d599c04c460b085ee7f4eaa56410371ae0f267b9a5abbe7fedc1a8d96f06a938d8677c84ae534bca9367cb5bfed2aa013317f784d8c63d77b2dd3ab1829bef8bad22e796efffb2af29d7a2dd7ed7ba4bba4e2c5d48f96670b70f6be79f4280438fd92c5e192628834f4e553dc7f580c4bd21abfd42255b1076b56b8888dc71a784b3b29932434215b0b01101444ea15bb9f4c7e7d92b36f1768fb67864c9c7f73b0a3a5b32fc4e1eeb9f3aa49cbe9f8b9e6ced86a36dc7ae5221df092c028add61ac8471052c143c2eb593636d3c21f354f3c3286740aff948b956ce8f7ebe0842f9e198c6dd53190a70dd8abd514bea7211918c552613a55408879b6d30eddeb097a3132cc1cab09c0bb5210933c3cc33855f52c2ec76a82663a51d44674787572cf0fe93cdb7418ae09b9585cb2586fca1fe1b12424e27a7b2c61978b1df00ff64c3554285cfcf289500d357110206d70a7be56b65b95b19980d7c6089adeec2c0a45089ea091da4b91c5b087d7748864e2f76868aae2d46f013f237cf4a3cd348acf0e33a1709e3add4623c7f850612c599f927f99bf3e0fa8126e8fad62aa32d5c29405a2476d4baa98401343e0272fb92d5a9849cde476a366c56f1f9fca087b0c9b6cec6afb3e0ed7865acc616ca0547d5d0f1aae360742e5bd76c710f3cf8449684cf28043528e939312dc34d10183350d905e99d2a6bf31544ec38780ef7fa8dfc419ac70d132b9d15fdbddd6506af1f4b96993eb02069e4032cae2e37c32c7efd5ee6b7d23065b2615278e928402a1a4aa9af52c045359786686136e4046d087beaad114a4ebf2fe6dc319f28e4471b80e1639f13a0daf7b35496b4ed73f5bc9b98b7db838e34393d145fa6a0f964ea081499f606b77ae54ec12992816121597618bded83cd155caa676b0313bcc64100d1fe9bce756c182020b5171daf1f94a7a0fa3bbf28d6a1cdacae1ccd32825ffaa075080695721e9435290ae8e12f28a5194e756486be8f4d44a215846ad0225a3c42a00786aa75538b4ccd34ec65f8a0c1f7ff00c153df0e27c72fd0d02e4f2ba99a35faede5fae48e66f45d876e0454b690c27bd125ecf38274f551f3ec79ed84773d675f0ae79b3e3d9d8b666d959114f7af64031411e4ba923b7e063d4fc91edfb4d357f21b84920c254bdc0c022b5e71d44e7ae8a66796dec0911da00ee8a13e9924630bb760a7d25a73b8212ea65ab7898b71d436341c5247af4ddc9d6d1b74fb3c219e03b0632187ea07bc40580e4f079134207cf6b9d52bbd2baaef84a83c651af081c039e1a609baadefe9533ee62152683b95f2e5873716fd5b11536b91e9a4211178409016dc8c0c671ebd7ae6a678dcc936035d0596b7e2b25708fa9401d102e92411ebe568a3ac4d2c00bfb81a1bff6ae9c3e1bde430364ce4b974e4006e47c59602838e8c105a23f56b8b41c5b6affdf1f72fb61adb5ffea5546b44a9db659e75e175a65fd90747c5c034d7f06f61bd328774338f73b575dfaa580a7725510ad436641ed6a842cd7ddaa248414a4d9c188376c79d514136f063e82de5cae03a794399f7aaddf0388268f00e609fb5166deccc2df72800b9654d022cb0a908151a54233061c074e777a99e59d0777ec16fae77ae99463060a0e7a5f06a5a53df27309c5993b9b3c28c905779938d3291554730d5d9b9e2d3df38267e4eaf6cb0d07230acd340a43496ef9d8ddfeed30629fe33869a7826919c521791d9f6acab4f3c132cafc90cffec7392e15198b8a3dcc71ae9788161a5a6ce4e9d467a1d5c8a761b346ec80d3561c4ea6e8b51c25908827174b6ce4c0e001aa18b87bf35de75800d6b91d88b763fb0bad2814efbc5e52c86930afd678d9ecd19e85c16b1d09be9574755e98fcec00d87a21b8a2d1b9b66fae8167b1b1bd0a63c36e55dd0bc360d2f866c861d45ea02d788e7b66d16a05450f36d4aa59fb34d61f7758c662498d3e0274d8effd8db320d31a90b593a261cdb544a3e3749779b462fb6b0c64e06c2f7a14ea3411ef20547fcc7e597603cf28e6153f2d5666c1a03323e75ad6c0f1c80818540407bcc07bad1212b9f2518ce31aaec793f90d431b81ae40f3f861d145d55f47531f555d4af3954e60066ace7b01e81d6d5aaba1d3adb016c74e6ef64793da90d775b93c63faefa42876d39dbbfb6aae4b0392a00c2161f4552d5617e7bbb815d8aae9247ec6eea266e3a80acea2db30f4b9236805777197b223894ae3143817c6295151a00d1cd041de65f82cb097c4e208c8f11e8f7483eea5717c59b329eb22d3bb12f04c74747c4788a0fab25cc75dc6e19814991dc5ee34f6b279c0509fa4625400cfb3992d7ad1801e9606111ec75367a2b6863c116ff0febd407c276614dcc897f785ba6a1581486cf097fba73d6511e2268246fbabfee634167f52120644313e8142cf35d032f2b758ccb68694ff5c457ca42461be9d6872f5be08ecf01a5a669361ed23db2531f8cb8fae154820a6a006276ac61ae7a0787733524cc5b865082db20b2e87074758a91d3961d5dbfa2ae47c2e2a92a7de6050890211f74c663542625b0bad590332412cf69f5099457c7330719abd5d3cede538c51d45d7cd848f38aa781ca5a7bfd7f87d8c2bd0107975e1e78505c81453c355b250c32c865cb309090bcdbbe60a8a788dec199849c5e81124c5fa9e87e7a56aec4af18e9458933f44e377c3b1035fe4e3633941b6fb06db5d41313b310dc7cceac7416c7438fc0082f54c68b175bce2179afa0ce9be024966071f4474114c0c1d994b2e6b942dc149afa46a732ab2ec939bbfe8d0456189ead0b5d92a71e7bd34ad14d25822bfba01b8800fc9f4ea0ca4304879d4814d4ff2a51531147f740a38efaa5f793cf44a0f19e4e993aeb354abb9a33b9b91533524015970902b224607a14497fb4006127772f3e239fb848b987bdca51685dddcd90f47691559815b522bf412ca920bd059df62d2d7ae44a645306886302e5d3a3144fa799650e7c644163e4e02003ab275b0f3a0b196a5bbd514b3c586bd7b02dd86a8ef29ed7a98ecddc0c8db3b0ea5d42dab336250aa2165b9ac394c915222c5c690bd50d106a731c6589099088747e37b9dd3ba0b7b4f3fc78257fedaa5bf4678b01a6398ed7d13ba07402898592a5829abf947df423288808d16ff0dc19029a4174ef126e9865a057193d02c725eed055b3054a1cf32ce5b251cdeb61c52cae34d01bd5341210bed55266b862f52fd61c7d8aa1cc4e80ff6733a85ee89226404d0e5e6cb8a9f515cda7458f7066df267a6d7b61f1d343d6f15e3c1609864897cb243140debf191f01a6b3278a97897f7120da6d92be34ebc59e2c780d7107eee0636d7947228a220af362c690e855fbfbb327bccd26b393c48e322fce0b412042aa808000f34797093f4e9017d72a813a6517a65078415587c043245bc2671c8f3d0e7187f978fdff9fa500fb8c4bd7ab0205fe9cf8f5cff1eec52b296b541e980802284859dae02ee199d009980264909d71aa61d0877ca61ed6a50876b29f522905ea4ae4a4016085c532600dd18e990f9ea96e31d091b05e2d4e20acb82381e2c7078863cef22bf98d994bedf28e098d32ce8e007c91c9726b8e4af3ff748f9d9ad0810dfd22f9c3354afaa117057d65a67778288dfe2af1497c8e9d9cacb255a9a2077c588c8a0c6fb8e4fd5c992d70effa29aaa73f538cb3bf56d4087a7fd5e5d05c733d211a6f868547416132a4b7412104c3731f4e51793c3611458e19b889133905d6d0ac5651128c37f36e5688aa0f7de38d0325cc74c1d89062eb5e547f4a84b3124c77451148fd03221c6f316b0072a0995c502624427aba796e3a414c20d00fb9ff8759d63f7ada9d535a29d16a12c15dddff46d47e599e007e8853b7692dd7bce04f498bee2422d34d96ae4bd4aac2c165d4331f3d5b399ebe080833e559d87479c164ad41ac1258aeffe7b514f850e3a3ee9ee6af2907cfa972b9a37493f56c28ed000bee66447e4726367361526b20383b61ccee00483a315e86ceaad6f85644188714f35ab040e97ffa5e0cc5ef6658093b7e4bc407fc949be7a868b3104fa8557e272c4721e0f70569118c3e88592ef93135302a82f6dcb8182b194d13aff3cbc768997d97192f52d6438db576e4f57d513fe107e1a8d17f4974dc9aa22bde7ab5af4b53b1374a96937686adb14d7d703ff15632e2395ec054914e20e2be87ef190f6b54b0f1f4249827a0838c6f1ec825701f4bb28d61420dbd40807cb31e8f8f1d0a3324f69140c3baaae615c322ad05a8b968b4e252ed3065dcf4bd655ddec6f224cb1c2f928536ff8878a1b57449913dc4c1f25a38215c8358e6e11d982a1c1de471505bc27cf43e7bb58f9b41c2259e9b825486a4c55a4ab71d023d64a63120b93fff68129d1baa39744ff9ebcd818e75eb5aa56f5a313b0c307dd42c07bf8fe30aacc237598ad2275475a6f2860ff3daeb768d9f21b4cbfd333bcf72fab128302b1df53bc002568d2cbdd1efe757ed7535a037f68026236f5b052d1be434b0213401c83a19fa05f3c85e12ad24bacc25d3a256dfa81b0c8459a43fd8a893695c02f7784b827c92642ede2d5ddc6e7914efc37659e724c75cc14419f1151acaca5e1e1625664e461da3c0e56002c352a39280d964535841f3dcadb18007655d89d01a773283377a01a67b02631a635dc2ae984b6a5dbb576aa41bf890c3c2127ec8e3559c5f00b35e6626db842908dac98d327a57ccd67236fbf6aa2a6e34c396af7468e223d70ab7af64e3b78218446b7e5bc0f69b0e808665653bc01513a231a982a6480261817d7954f65bd42568db8d1cc5473a0c37fde80569f79396d5bccb25ede4c72c000fee7004d814f1665dc98a1023c616791a54a801b8c2a616cdb1c3df19523f2b80ac4cd23ce69a28a40c2e37c76fdbe06cd9a07fda2d89801754afad1a98ec2b87b45c4acb370b9017a7df76bc1c34b00354be2f5dd031ba39e94c62c041109990d527c9dfaedf54aa4ff96f0f111d8c222e910c5b265b95f40b48dc04d55481f9e6cd8ab285b4ef2d9162c1809ce71e682084310b45833be2655379d98c3039cb56ce4bf69a00c6f18a8833c5f7b7cf246e9cb7d14440f26b617126673dd8fd57140490728ea9fe2462783c9a562fb1b3b3596c0db9553e70fe934cf8357bfa3a1ad1d90d9e5c7eb979460b0b2e994b26b67daf1d63642bacac5b98faa58e8cf4bc3c0d269048ae7c0d5b2153c900613c1b2584bc12eccc95213fb2ef16f1ea59ab79806c48421db69f2af93b7236e41aab4a57bc111a160a2be1c29d948ac2f3e577ed4a88320dfa0b20fd289c8ab46d5663ff7c6bedfe6de3be0a95d8ea911160826d9e455aa7df1bfba5934f027fe65c386621d9fbddece23ca8b3a8f0f9a3888c685ac01f38a40b12a0c79a2f660fe9ad8d556b83f9a037f081ac9ca0c362298479911f9609011ea321cc45fc7cd486f7f51cdfe88b8631f8a1bebc6df5730bdd7654214e289ba71de9a11fee6df95f32d756f0f94f3784afee34022ab39e68815602507da9a2781ad769dc879db3000b466324500b9954fa8bbbe68f79ebfe50fffbeb3e0acf0b3ba74905afb1c224c7ff505005cbda3ef3277b46db6c624b612cab6a18c845aa24a757be7198456b46d2047a6fd40a62d2f61a5f34490f32c6f96188480e6192740c81e5b431f4b315a4e72c53f20aa9ae7b9c5db07e575cf5fbdac5065c037c75ecccbcc23c28ee84d7453b4a882b09ed5bd9077e5168e5561c814e5a7b3a4b4569e1be1af16a18ef22ec5731984eaf85598b2a77e64e948932a349a916fc065375439190681512d9a263970f5575713eb1a8e3ed8e0be9d5e5d0f588c83562a14322d585301993161a5e9bf44940b02e2f21ad302a5c1ad6cd2c7b6ddbb243d5ab37b010aa4095e04d3466ab6f10105c72f81433d73c00c4f5885b84718274bb55a61afe70837cd4d0e778864b160af6a5805c3947f8e5620614bea5598394b70a6de89bdd986394176e1353dd1f4b228ef65c2ce07fe369e05f0270df265fb3558d68732df45da8966adb93aec5413de245fc8c85cae8c8fc12967858bd96217ede014e3fc9340985b8dbb1bfb25f38d37cf5d622b9c6e7368e37a1a62b279fb6fdf52575b7cb86a0df604e4237444160c97833aac1e27295a2737b876def8497f5815280dd666c3c8980543e2f8cdec17e434a6a59a2f738cd777827f79302d977f067588dd7071e4fc80c735d61597dadae4f014639a924b923787f6ab587086156f457aa3237d757b5a07dc39e1e0466169a8d985efe49625f9eabd5d9fc148abc384028202755cca792f5f5eb05dfae289fa8835fcd46537bfbf2fa79b8d823586b0c3dfbfcf631bf9dd755756cd6cbc122719f347406cd1495e0b9400655b34dfc94446a8b28d8c7c00c604604c435a2b4bd8fc5450241b5b6b6c09c35b4674a927ac0d44a9681065d898e9ae72230c7ef670c5467eda71fe9b16ad33862363fa53cf141ea71c7c893e938ab913db85816552bb9de4790103d8d7d70295866c60f8fea050cfa87cafba2478562d6ee56d57de27b07bbc4c0a9bbf806fd4d7d478af1142c75512d4752f729a9559091a4e520be62bc16024b63e0fddc15193431bf922aeccc33934c618b3cf97bc7e8fcba95b7326bb7efb456ca7367556789ce894a708e135f0cd613021a535e482e15f95ecacc61f731182efdc38d5f9755e95496137dc1aa8e5dc98a7a6bc72ef76dc60a93c7feba41b940064c2617d3d75c2e99b7c293865c892f9b46f20dbc76cf5f395299fbfe59e52b9d462e5aba16a70b33d899fb69bda0bd1009fc9de16977c49bb6b69513d17c8ba3ba1548832a40d6f69397f429b3d4afe3b031e1623917b1d3e937223345ceba49aec0c56ab6bff0ed579a6f50123fe792ed9bec822f6943aeedd090753e37735a857064936b0373b232be610f4d932fe4e696026502b972a842f6cfa890b1c69657577dbfc10a83fac546f7f9d646734b7076d4080ec65c044c93cff61d33e74acf450db1d9aea7a2b38186ad59f6147cf1fdb9c2be6a6972d2fc9d33704eecb7b3ac6cea28ba4d9ba2c48ba97375185424abf826f306917916577c099ce88c05023bd805c4aef62f46ed0b92db694ddc5a3ccdff47676f2cd3f6732e5d28dc6b02df8f7dca173f433839d30cfd3316e668ca37f7224f2fd8243897eeca1b75ee2aaf784209506e9968ecefb6fe73e8c8b405a2877f5940f0bbc5141e17be1fb21cbdbedcf89538ab317cf02a89f9bb405b633a0eb3aa096db9e64ef7c9cfe4c04edb63406999f5fffa8771dce2b8df190a934363d6f60090916edfb98f11839fcfd545cdac3fee99633da78dc6c03268e4a2b69082327aa5f96b7f05873cde702fe4f2e19deaf52d9a130579564d8b62307c0d5762971775a06e0e96ce64baa1f836997007d719df10f314b0991e86d628fc1ec2233b37624867c14af2a70a077439eceb0a2841d8a541296b08914029fdaec223f25e93b087e70d7677ad1d83a992d34595c8833195335d5e131521dfffbb94714d53ea7808c739a308f56008a0969dc92822ebf14c8aa6b65627da85c874500d538678964ab52c950349f6878fead96db7f93e36fae5f1f9ec9c8a740d5e2dcda25ef2505e4c7082c776c499e95552c814a1e3a8b51db10c1f75898ac1432977757801587f73935b2645eef3feea016648caf169b4da1368d819654ddfc95637525ff01d0fde414b6c0905b4740fc1e5679b585a388040d1429a2538bf7a9907ddf92d5ac252d6c561d85daef4d48904c2da2ff60606edefe782788c2f81843f30316d510b934cc087750c1bd7e1d335c9e5a8a9f40af0728ae2d9fc019a5b54e7ee172676eac7979af315b79d59b9a08d46fd19df7a64d3339d8db7c63646913819ecc7c113c17dbe44c954939b0458cc379dfad72a85bb6af3e558073618ca605fb767e0ab5f3ad44398ad1a307c44662a3e931efd86ee592bfff0848a3de2591b7d35402b59c027da8ff73bbee193fbe90f652fa51c48a7092030e6404809ce40af061b56f815f996b1bf02bafbccf263e3e88ffce52ad489ee2306db6eb21cf700bba94d54878248ab508138aec9367e9a46d1a17c61b1b795182f9c18b86a0cc469b9fec6c52a7b25eae68f457fecbe3146206d2fccfcb28bc3f8f4a409ad251ee78a1f06ef3be107390a7fed920fb0bea98c588a002fef3150ff3406dd23154ddf392e7ac74b6c034c39368acefac51839743c4d1a0583fe3fb4c6e48f2d3403c3daa3ff28b6d840875f4b57156ae8f2866e03eb2b042c5c5bc96d1ddd44132469857c0cc9c64cf6c0cbf7b574827ee9b28c75b91ba41e565e398c30828051d0a6b6ae6fcb9ad01f0415536015317ac72d78175faa905df95492fa2f189b367dc54680639266054def990e5fb6537da9ff88223af7787df0bb3780dce3d958a80d4f0d0f6de9fdc87f36a66948f8c7ef6d8a69fcbb7f989b2927e0a75a7c08bfc9da288fcd894a26ffb1d3d2775367c329d601269b42ce731c75f9486b5d9dd0e96beacfa37e7ad7ea38a3b13da2403029b59015e2b6bfa4dacf56555f85b03dc99bab2dd27116c65dbd6954443f7addb4f2544495d1a5c5c815d4d4880e5e6a725569d129764d79bf1a62757588da5d07a7b9b67227e2427ebc5e033fbe23b7fdd4696d6aeabbf6d1ee74c2720a9ac89382eb6ee101600be654b78fe2702aba3dba65a9feeb1ba4ec06f635282d68474e4df75ed3af11ac7a2253324ee5e71e7ae40698fc7586c8bb27703b88ecb9da16bfc52607119ebd84cbbbfcaf25bad2fe74186100c5f8b61a26959a436c0a150d0f1bb8c666dc625fe32ac59ccd39e03af334e1c605f0504e931222f698bd5c5398b7dc19d8f2ce2e4d31206cfabcc5b6b45e8a0d44f95086b305355e1b9f598ed17908ae179ad645a73873d86cca58fcf7f7233a3ef72de78a4422692946e7baeef0378c3d61f3b84f56f1e3ac71d5ccb1e7884df09e477b11bec75203321aad138305cd2e3bfa14d9c306f822340acd9edaf604aa313cfaa04c0ee1071d90fce01a25c44274148685a923d738cd1395b8650bca546b0b33a4ff0d74fbcec7ccb68d0991060b63a54430ed6c2aa7ee75c666fe274a593655933795bb25ffb4ee2e33b1e420630674dcddeedfb3a0f21ab3ce17f9aad5ef12fa76b7bbb5538bd34a05ab2ae8e6534c45b2b7c1f4ae3cffc8060a620b3003353b83e8a872a174bc8d4ab37d66f1d29321d89bd23e3f4b89e223e076811df1501bc24245f9e774a3429da83164f53d6896966eaa30eaddd638ad41ae2db894e0713d19eb8a4bc7014044fb74706bbffde756dbbe6698f6aefe81ff622ffc9618b029c9dcb06ec2924230b86204a2bf04984fd2ec7acf649a4dc770a80e25fc8323d68b6bb82b990ade7fb22322e27d31e8a3cc954ec279e07f49b8e16f483a16f1616f944dc6e631cfe9194f96740d4e5f561524a9929096bd70505f3bdb372174895acf39e02d1f67ca9a47c640375149b3c276a79464f17d4fbc4fab4011d76f4a16556cb758830a15d069029530d818c291849d6941a5a32eecfc16806c3a14a766a2f5da407efaf849229b25226f33273aa09973563d4f4fa40a7a5934a225af35c1b72457dc512b1449ee651ed684fecd3f018dd290ed980ec241eddf33c47db01550c6c4c4c46da4a3a8b0e63b861d0b287a419a2e8a6f2fa9cc587894e69d1c3d54552a454a7bdfa2a7a92f3af5ae656623fa83e3644bb31c35bee35c698a3b9e5c7a32094b7e59d5c6ecb9d603af694c4b2d52d16bd306dbebea9766b7a81b9f071982a97d3044c9cddfb04f08a32ced23aa949dd522a2fb58fa6850f435eb8fd9b5af4f44ae6080b984aeb4e5d6d18713874b47f031d82ca5a8ef8aa1024099b5d6971084c59effebbc2097c9d4b0f24e35e4808f7a28dfaa9c5d82d06f7182ddb92fe30bc299489ee242b6c3dde6765b12b356ece69abdf2c16e6caad0884b82cef77e7e2834b39f3684ad83c27be695b3f0ad03599a3b969115ea02b07abeca418993b5fe7485e9799736c44ee998a8857bf743de1418397f1f2ffb41bc8e7102df9af85c16d870cc151309860f851b0f7a852e6759c112f26629c3b71c38b3bb3a8f19943628411568c85c1214b3a8dda1f5b9e70e22fba4ddff7f6d7865e18d300dc2d9719de784492cec8c5912cf4c6f0f28de513c5790df31c1d3da0564049830c2e13884ffefb3e606f9bcb80ff6cc5aabedc3e513babfdc91b882f000a4bc8aff893a0393281370a4dad0fe8cb66a463ca46d71b1d839f7023217695aaf1397e7df74bc02e2002aa6479a5fa25ee7ab3705b698be5aacda2c4fec80861745c404d0bf497d5627c426bb16559e9e166e358e6f6c1854930a8dfaa8106222ac996f8470c843a96ee7931f4985b2b0889801d335c71a075d35df936cff7103f63ff54e6fd9c79583834ca11916e28360d4b0952902623440b86fe569c983ed961022b75a4f65b7998e2242f6a29ff9908d68f9e3cf6b5072b8a1d85f61cb518d776e0afa65456138f5407f54d047d0a48bc083c5c52665099c01eee0786409eabcf13f096382b2168af6599bdc0c9993810c86750c82bec2cab0cb6d3d769daa14d0c05a968c50468915bfb1df8b43a085b0b2e7f86f5db4202fcf9c477933be57b9c7a69f999f1a2ac4e9b4caec9c4b99d0201d77dc67c516cb1915f7f3bd3112de12d346fef6c7b9d5b8495d208f1a67d5678413655fedd819079552efcdee74a8e6bd7ca609eef34875f0a7f1262cd6a95ae1e393ec656daa7fcd83a160fe756198cf7aa96f8359ac5e35b5cb629648f0a773e0ff7b2c06bfcbfca57166fd95758708224cf50500aa28f79b1611ca1f05dbc480aae9c0b5a4a8ff72387853e5f8c6934c1da5b74cdebf7f1b0b5241d0a27387e94ecff8a6990b5f0fad00a3153ed3dc50984a5886b986e22bb198f710ec18c1a756ebf693b214858e699c9850da12d3fa386aefe3419271355278ce5be8e4e10315156ad93f5ac912267bc8b8fe5ff77490ead963932ba442798af299ee0d7d269d5c98f927749a6b6cb3ad9a5b5e2887f0093138b9740d708fe214ee3993a79f4a668505da10ab4f0371922a8073e2eccc5f429afbcd0e4361b8c71cdffe5ded2977d56e9962a670fbc314950d00953a094a0ad91305019de18bd1d438dc29df0793bcc66f7c13cb22ee4c3a2669b42c399c6714ac71ceb160e07e099075e17fada9049dffb9ad6fbdc918f2e80d42643f559e0d3cfca374c3b46abeb549bd4a54743a40bb20cbc9c302638b595bb0e1b814c0376b751a723ec516eb65d89100ec4ac36ff9d98c337948457980b9e2ac7e070f023ff02ca611ce6f19cdc559af364698d04bc32e2426d93e2adaea91e4ef42d81eafe36f6a8269cd953e098e7d4f5940d0fc8541d0fa0b57e8303c6a8f76f12bf716fe80a560f81ab20a8d9807bc79b6f6c6044ccaec2d27e27f26ece7d297b4778c0d74836327ad42dd1e11d15460a7e8b21e05b57be3c326f9399275017df57e35ed275b7a78ba80650c20e126ae9b268ce26886eb054a8bcadf0a1013ba1285ab131f5e263eee7699e1ac2bdbeaeea016c728fcde52a7d1e96ba33dc9dbc93cf1703f94aa1fe305fb283f4f6593c586c3eb434e81007ad113145a1d48569178820c0c36bd9919696593745aca46961a7a4916ee69832a535f9ac2f4c997a3be2faea86dc5835bcfbf71eb534b2618abaa6bb3e0a233657e84147ec5a942373bce08449e78185273918d95b38fed8c719c57f33b38648b855a7db7c05ca59d72ba97fe25f83c833f74ea5fb2a9fa23b3eee156b8b14cef1ac039d1233bb3a086ca676c6ffa3898ca5d4914d5405c489b5a48752fded09cab80304b12340a5ff41528a51cb2ebf9496128bc0a1a034ad7ece245bdf4fa3516c6f5c26bdf37c7b6c4fab423aa5c18aa623eab4d8a3da2422fe75b569ca3c1ff25fb188d475e0939435972541faecb30406d4b24a48d20a6a0127d75c14fca8a1350cb5ef89dfe46fc2a8cb7bdb48b7bd9d54ae814f51801155cc473a20cea42fd4d8556d1459678c1141fa447085efef32e23cb8df6aaf7e4ef56a7458e7bbd821f36bcff3013ec6f9c742d4c09aee26c3cebfd497662838b23cb8c705c9bd4e17d606b724e380a39918924fe5b197439891cd7daa4152c8680fcf8</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年10月记事</title>
<link href="https://blog.cancin.cn/post/2dec9874.html"/>
<id>https://blog.cancin.cn/post/2dec9874.html</id>
<published>2024-10-01T06:07:22.000Z</published>
<updated>2024-11-06T03:11:24.886Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="ffa9bb1e247c391d150c99d9870a09030c636cb999e364ca71854f9c8838250d">ae482531051412867dd70100ec4254e7fe915636919b74468aebbdfa7a35dcf3049a6aa073b37dd51a0c8b1c6913ed4b5aec6dc4e95b69ffd77e2ae674f09c7c858b52f87fbd7346f005f5ad63c355c0b88d8eca460626faedb791db047b812dcdcc899e7458f90ec36c9d13810a690f21b3541eabda2a9956574b9fded87cba6c8be10e7962ecbc35d6581f9cfc6678d6022ec8b1bb9fad697938b79ff942c27c767d8906e8f902206413ad46cfc2b592d3802e070f06a38cc700712c6e365fbac09da4c5e54b6430d4737762e8320ea9a98b8fb1f7ebd36fbea29d195eb741da5226df4f67177a4f8279baa11c7f6e8b0fa444ac241fa42a54e80b6c944a0c327a4651b66d37f5eb419c8ab3e45296b23307e4dee7051679240a1e3deb59b66fdf647fefc30021c896f1c8657ed2f5512e531b70ae5cc3c4a4183f0ef18c2db248d743952d306e60801b0556dda8d62db36500d5117c6baa6409fc9e446b0c0a98bcf5da00438af7a250e0c5f8d985783bd4fac57b9437d92e96b85cd0545997f63fe97bf0f6ef2c30cd385538a38395bd6094a4a714fc896027dc452e2fe4d991a6d8885c2519f07be370ad8ac20619584b04c2fc7909207e0426b97c3c0c93e1b854487523972d4596c4af505c22d7cf4c49d33dd3028053774244b144fb8b0142db2e9aeffb2650b9d2c4210995443cecdbba468bec2b08177d7df69a3897c1dcf8e4a8da9c2d38c1a0339359cc83e84940bacb3e0d75200d6879f0e12a251049c62d9a454b8c4af586a28de6b1da7cc82a729925de2ee62efc234454edd7429d74ae4e2cd630adf80e5055235f1c59196257ec84355e52e7850b81eafe25d75e09288d9d8cf0c0486c005cc45298ce06a4b592a84e80b1b406dac46a8ea448bcc6d1172a956521c068ca35cef979c7f41cfc9f7a94419be295fb7a816b3dcc41c9e2d33ee7f5ec4b7d2937073109a0e3b01818c5a18e83e197b8d5f23645977b70a9acced5e50f0e1f4e40a81aab3a287ef8cf16ba184cea7cc445b85eb6642a558077c27abee2c68053bad93e2c02fe9f7a14aedbe8f979b80c8da026b447210e8e11d6fb21bbc0eb0c176e50186158c2afc385d4431f18fe7679ef87c880b47a774c8f38dddcce999ffe8b2ac6a08fb65137f973490dd0bd8eb308abc00ddc8f7db1578f49493fa9f11c434c28ef745c2ec8b0658855922bd47001b391f6f71ea4d4bd7f0350fa29c9a24d5328e98b5661de9ad508db84a674f89a746a81622aa11e7be360f2c32499d78835ca6c913955c72128428306223e21517a34333166b4320c31f146829c5cdb9dff393a703d11639db05efb811eff9d06097e7b421fab8e67050e593298306d828c811eae93859d8331f039835c6251b038e4c2971ac49c49263b5d424be3db8af2dd06febf0f812ee0a7ab5e5f6126945bb18069e0cc8e4ede14e6fbb4872813a02abfba0957bd9f3e057cfe626f80cd28d1ee5a670b5a42c1b69842cda19c40c918ee2c2091dd5cab24c3dd2b66fc71da4185261451a0630fd433f1acfe2aa2ea711e097a44686f8170a78fa5815435e124b1bd09bd3e8aed2dbabd626a8990f7afaaff6a03d000d33d21b1695f2e95a5290b9e88b61a23676745d74585c1d2a29ad89351121d2391eabd0e2ed31e50a4b2e6fa35825f03f549a427dd32fe084c239249b1d67d0d538185e798d618751aefef8b362f811faf1f04417bf8b305a0356101b2dc58fbc8dc9d3f43f03fe018aa67f070de694eae6487ce6fc50000c28048a6ef3b50f462ee5f7d6b2f750d8a5dd45f9edb12ca1cdca73a2634b7b1eb8a3d386ae2201d6c678fb53a99ae8e07a45c4457e53bdaa6f61a604226f4a7351f484d23427423077f99e7922c4fa2e56414191e4852ec8cb24963af79652350c4755afc87d64599d18fe1f5047a7b27ee72ed24f963dc4a47a6ecf7b7d273597aa1c389a6a41a6bcf9ae60c165ca41e23d3eee168037a1ae16ec509f736aa0fe9588cd750b8452eacee991ae7f87581775621f23c982a1e8bfa9f1e5cfa1fa499ccd8669906ac5955218c190a189e3de9781d715c4805be2be2a902b9391062d469fc341df6ab3978f2dc5403edc88eb193624e1792edf2281af802270c4eb3c9dadbf7f38f460c46d33263ae4f677e0ef047c92eaf44c3f8152bd653c1081c024188cfdd411356f39aaee5d726825ae1cce7a5bd0357b4fcf3f44d618be6c97f27565f577dc823e75a77cbab2710e87db644988068a500d1142253c014970affc68c399ed3f72d9888ea864ae5cdc5a73ccc4da44c3fd6aa048bacfd18cf15df17b472a1fef56958d5c18335a2c12f709e7d7f681689cccb266fdf8b6db61ba353f2d3828382d7ea3de148b64396b76111eb905890929058c294ce9c305c29b315acc0503a5e1925a4fef9b138abe3fa48441eb4b3234353be3ba853767650cd9434ab191b52e923576da3a2318b9b8569cc2141ffba8d599e19b8ffd5aac7216bb4a67c81cffe52e1231b46e24b5a3290707743b357a016e2bf348d933167c466557a83a2ffcea8053dae14a38f2e8ea833dc687cc2f16d27bc41ccece855990ec4faa1c0ed7e75d309a5fa20bbb7ad0c74ca4c579fe3573557fe4b8c1ca11f9ccef0a4caefbeb083333df79b7b2979d39834b3d1aeba6529df52e609a79dd97e8daad9401aaa6ea7ba0a231824574cd7c2f534377166241887f5cc9a1207b9bea9a19ffa9465eb85d36eb26fdcfa7c571365f7b7c268e64b2d5182b0cf38409d4ca72e4225c51bc7a98f31943d2c225cbfaf4fb48d4c0a7df59887841890ec4dc68740820617ff060383e552e2b05660d9884357b8cfa7a70a171e3cc62ca410e6487b1a3295588b18e4dafea78292d6b48603954aa3b0a1362e0c16fe012cca443334067183270bc385d1eef4537f61b0ccec8ad01d85869ee25bf73e9f1f3ea2ee80609d8a92bb129bdf18c29d8f4cf0dcd331c68ff8ce9b56d71c9e4a946079606d1bbcb35135e5c382dc11f9bcd07248bec3daf7130d6334c287f87470dc9bd34bb78bc6a2015385579b1428d739ae09fda575c707fb029a7b7dde83edff8f7077b92d5b24a1e1273220664d00746a18264ed413cd5d0d76f5c7209f883bd0a2b93ad4d7a314ef1f24fda6d9aa2d7d6bea01494be61753468916319a3f8078d6f30daadb49c5601bf5fe94a2e3c805926e3be787e1f066e1de6a3d5c83b60c5caf7e913eeabfc9098e86a1114982b5abb63bcd2763f3d0ea416195157926e8848c3560b173dec0460befce80a1034b808099e59e61a55b4d24eea4fcfb31fd37b1121ec580f54f1d500d5f1d4d5780655a074bbe5b6bb746e91e08306d861c941906cb2fad4a20f6c7bf12c23a966d182850e62cff2974e7527aaa84a26e614c384bd2360fb8fad5f1e5b286415b7a6e67bd89c65cd590249c6477f985d6e91895f2176d484d28ba064e6a0c81ea476d24f824e076e16d7d8ad2a16d00d224d5c6118715c04f79b178bdcc2ff8c811f4a4f67f4c0a2e87df1e3a5b7e12a47ee135b6d551e501fef135d66d2aea1d920f75dae9b23bb4f979174af5492e9bf1ceef1493f8c7b00fa9963352637d8da2d3b589306b9dba25f26eb1ce0dc725806fd9d91cd1ec80b83390a8b50d98ac685bb073226f243d4c8c0686d91b70928e8fa733e58a7442b17890f7022aaadb98d3caad710bd2596470dad5b97e3a131a6c5733ff7cb2f4683d34b5896ad2ed0160fb65cc2892b689c421b2129163aa2401b9656574d5bbad23e4d4209cec91bc4790815c3897061d62fc4c69a7f4b6cb7f0600cd49a6b3e824a6c37dfd1c5299802dd8754afe70a709b9830d1a1870dc7afea179249f3c0c4edcbac43b33fde74095ca29f952db95186b0a4f2331e47351a463eea4055425d333601fe48e7f65ca6482ccfa7e8b628f8f3cb344b72355c374fa84979a0e14fff859e7614d242aebbe942574f9494a8b8193202fd55af15dfc91afb115d63f90bfd0f66a06014ff655ec2c802992af588e8b3dcdc08fe8a9e3328586bee730d34dd269a4d0af6f24c72034834caabf24aaf6fe7bb3341ec19489573b57da88c21881203413d9ede56aea4dac814f0194f8d65ca0eae03c2804bd396d57c00ee9e1daca990e5f5abd51dbcdc15a04b6bdbb6dc774314ae80073fe34e4555ddb0f531dcb381cf84a20096b79d436a588ff857f7aebdb4fccc2069cf6acc8943f710167d2de33be4078b00440e9bb9fdd7d7a8b4831a581162d7ff0b3c86f7a475c56179a73ba1ffb428ca9f23d353fdaf10f2bf61daa689fbc7ba0d88ad76b4852f038fff575ab27166abd4c1260a22ce9589e875a3160dc55ec7bbb561898d37e67961b2df12007d1fd49bc42eb08e5a42193dd4452ac47155ed3de41588e69189a5e6db932754c3e0adc633182ad40d345582b79452649f6158178bafd9f12d6e5010cbb92da8b67bf9c840a83ec9a1bc3ab30e517a4c0b669f17fc842b874534a58b9094068039b7429bedea2c3677b8c82d83ffb4e7d419b1a17a0019e75c6b6704d4f200a1bd989bfc69ca8c7cb15bc7f23df616f8617c22022caac5e7b49fcbb7a8a04ab9493955cc5639ff079e89d2abfb940d6086dcf94c1cfc627a50256378cb1c9fd67419171354e55b2fe56bc75a4522bd05d7c8d1c3c3a98280d6f0a08f9816a5f3505e13e22b794a700862b6462e34c62808cebb1f0289569caf8357e79bed4dc1355541104c53ff2d049703d2d8ccb137eddbd02274ba31a4353bd7b3a57160a1c8af501a21fccc16c596c41a9dc7cc9e6d5f24359f0ef541fe5670fa322631b232858b2c4efc9fc18d970c25aea30072552adf3737083702c83a6413e2718c4dae0a3f1d60d56b938d30b46c2fb0f06887c3c6d93d25d2bf53faa19ef4cb8b539e3a3e35c82fd99d8ba821d02bdb83495acef58adfe981ba31242aa7c9ba2fc8a71bcb6f81151ab6d07e846141613c979c6406a15e1b6fe73518a6c304c2ae90a3f4cb2c5883c771485556cac7099c451d98392ace1dc47bf133ff1fbe97db118b46351547aaca2df097a2226a2eaadfaf0c8c4719b961f8dc4d10a11203c85b415e65af47fdc556e403faede1314eb48cc3b9f5f2be6b8e7f906d9285c12460d8fe9d29737fd8528f3a4be79bfa4369fc511f25d9e2a042dfe4f7226555915c4807752fdde6c48663241b959dfa3c959f5317e997107ed94e6d66776abcfa0571d7ae7f81a81360e5ecc41dfaa92600ad0cec3bfe4ce22d382b3d374c000ebffa27892c5c7a27190856ac5b6929c5bd93590e180b11ae5ff81b20d990063ad8d2f032c296b2b52565cf47e2d9f7e62b07bf1f66fb07017016858eea120f0796847b4aea53eee0823db952763289d9e9cb1feaeb6a16c24290657347ea1a06ccf078c19053ecf9a961f357f6048a8a6f4f555ee686965338d3b0e0d8e357c1756510c9d862344b393a33bdc29b72af655c30d73866378da8a795a28c88442c7afc1b129ce3d27eaa236ee105dccb87bf9622377e0ac99ebfbb139e43fab50fe7d4c769a2db58a55e7361721451034d8464dae77c68e4a21efc520578ac9bd132e773c50eefba0a612c60a2979b3f5af6530be54b427dcfdeeadb5166b632602bc22cc0d5f9ce27f89944ed34af1997f48330fab7a872134cfe87efe6ec9f0b8f91133dbda89bce127c14ad989035e2c5fd8275a4ceb9308eb912d2f05f05b6c369453e924406bb9fa7040d05f7646b4097f879906e0359cb2feb05e09329acbd3550263f61aa8e9051e4072c207df938c4f2bb38aa03c3b22af30338235e375c469d44f35b109438df2d55f229ee157d2dc1358336d726ca5f26bf9cf7c03f438ef6a63a43f25322c5676275c1b2362f1ccd4ff6eb651197579fb26a003f277a9b4dfe61ed51784b7ec0aafee5eb221fff460e9a048ed9c82e13828790c13150585352d8d17d442d577eff74433ff299136e8109727d846f740320747bbed3af233575b2ec52ee4d620b3ad7a681fe3904db1946598a820880478777ebbbaa6e8b194806574826848705871c3026c2d1582f752a431189d71599cb55a657806a07ddbd3b0d7fb6dc4c3ddc80c39ecd7e0b8f9a7475c265737b5b359565944a40e38d9b6b5bd24c7add2742783ade883f76a10ab0e36997c0b12d60408a17076ef85fddb0920766808eee166370be059284c2191084a949ff3b59a755cb1310ba43ef8395eb774592b4b70e7add5bbd60042df5e2a5225a57a70907d302031ebb06a4657610e29d9fa2949d42a452a7ec58c53c9732f9cb7145358eb526bdc1ee3e83ac13ed827d3b872da8d70aa366110fa9392f9fe2b488ba314e7a666a5e7a778daca78257e723d1f1d4eae2424a1f3393475c70fa978978d226676b89f54bab8c3474ab96bfff82e134edff21a6f38136d1fe0bcef3a1c216d09b54ea2553f2e8d6195654bc0fb84bc4b6a4232deb68d235e873835eaa4cd59bd07884c1baa3a61cc4103caa3077adea28831ad58a500c79c29a5979bba2befaa1bd4987065ac5f1de4ec224f3bf0896d42bf109ed80ac96a62e42bd9176cf6b8af58e25b088a3c9fe310fd45e03b020d296282b528a5c82cb92ec1b82df580b7376cd4cf23d705ca0b88b0328263eb95cbf5c3b6f6b63fe98d1c08d0bba62f3ed730072248df7ce250aa687998418dae7d8ed821c7823149d2b3fc1fd0143cf4e0dc977aaf4307938fd7ca5f58d40a4356e2a9471c57c45ccdd0d63edb4b5f98a6eeace0e2ffd51606ef17d0b6145b4f55285e665860e32575b727cff83b4c0722285b6b2fd9c6bfe98256b15534c9902b8124b24526deec86d941fba54c8ce9bd33e73694cd8527ac97a05465aab91c828345e1b70e94149b51f8250d35a9c5c2619d409a6b8a0d401ac2c6ad2ed19eb01c71c7bdf7a9cfa727e7f4344678c168d29d643bff4bdebed611a35a28e6ebbc0afa127e73b5e16dc7536f600a919fd01d5ffcf9f9f78ce8bfbd418bfe45ee49567b60e22f0b72f5ff0ae4207b352025eff2a0f13a5200ad0188119c2e806facfd1ff0faadad879de22c0a8df7ba64ef529befee09d994a98d894a776038170f2f8788e76707c413f770aa4bdce9b143c5e4edd3cb63b3f47efd797a3e9a1076b73ab4c69ec10c612e090600b3f981cee278934bf9abea222545c0b4bcbfcdf9c941cb94085cc309d3e3ce05672a59b795bd5dc4154ddcfb11bc4e5de0f4d635a3374886c08b0b73489222c108940e28a45a7488cc2417ce5f8349e2a9628aa22838cecc84c1b1acecc61355ae2f813d9c655e6d1d3a400a1fac7a9f840009cadb252eea35a9f4b8fc66413d9f666f1e8292973914929d40840db7502b8432bdfb165182e0690e735c86baf99b900b76ab92c79c6a97cdc92b26c9cd02c2f66cbd3d2154093dd5d8f6d06abd5acb3f18110028319b7eca907dddb4891a9a32b3007f0964d4b6d25ddf68c93a9e12f6c285036003983405f4501a9a21ec22da787b319116d2d43edafd5c34e0169fb091083b4c319fb9393c97eedd9bef762eb650c870cdab6502e8e43af75dd410886d5f49be8988fda0bcad50aefbb18a16891d878745e2a0940860024e5983b38ab446d59f84f685b55eeda9b8bfde252c8d4c631fe0875f3b605c13abe89e6bda7aca648516917fdc59cd559f10fb426128265d98bd0735bb79ac20d6d4a819c44cdc1f8f7ca715745038d7fe2404134d69dd262dcb00ddc9a4ba1af2204b8d278f7cd2b22eff7374ea9378d6e6a23379a6a30de6204412205a7c44cf907d0d41baf742e6472f6d8740f6598f3ba9da32d5f477e74859c0bccf3b9a360546cdaf6b542ede400b46e5d825c54396cf2aae2fd393f1166b2d54e4565bda828e83d7f91f60bb96cb69f4c799d0df22ef182e614067b140ec0888660b98e999a88479d9ad0f39dec7b05e885861449fb04f74e54b73b2eedda156c68fb20b280b7c812a9a5e33cb22bc2412ec64d5f66a56cff4103aa5b2446135b812879bbe44d5f297f3fbbd3188ab95093ff07e0028246105e508b73cf7b816ffced695c9d79cd368060734af3107d253a58a6838022c8aceb9e5b7342f68f36c5bdb3de57fd882498e229d0913f1443827fcd4d81ea0f63703ec2d42593e28cb9b65c4b8086cc715adb5b14681d369a0276c56f03614cade0490d6e08bfa0a469098c80e006748faadcaeed5390d3949a6cd356000c5e93e1971cbc4f96537894b07980e0dab94e7d1d0a1bf69db8ae784a34fa9db24660b9929443125bf7073a8025f7bdd41beee3db51e6cbd9993405964d21b6aab2b7d94a5ebd74389c3d187f6e0a94035a1511902fc95aedd72428700c6ecb77b6737419409328d2bd41144320f308eab58d3f13fb9418625e5d5c65ae46677c4a4a76e18828860209e6bcff7c263678b0a156544a52fac0a131f6daf5afdafe51823ab1ec927fe56dced30bba89bc1b79696132defaa08a12f4152db4a2144795fe7c5e787231d02d60232695db9fb4eb41dd987aa2527f6b58909880afc9c34290d565d2043470c8159cf66477451b347ba5b90078477a89d7668e4fd63ee9986284ad18def44c75f534fbfce812ea3064dccbc6821ae37344bc1d2a42961abd815380c53b45c293426f39a97d39013a4979fceb96b92faca4d3dae091a73aa0b49518f2d84377888d75c648f57b587210119d1f5bd1046834e64b7f54b69504c17bd7cbf15843660e04bc7ab4598cff32de8f25a4d5d27cc2d91bdf4b2f0cb07918d9b45dd04e23ea0845fb8e2ec374db63a8e1e4af3fdbc7752cdc5088ce494e3644a15728d3810fe4c21043c6b683bcf6420efde75efafcb69126f4b3183c60f1775c6a13eaf919f01750904876e4bc524d96d91757aedea50ae3f72def8bcb9f8e01cb09a04c1c44c9459f44784562df925560fb74e958c6c462e972b0d8f35e3c9399e753b3be6b85e3ff7510729b790a18e93552c4cdc87608ec6d5929afe0039ef01c183967254217ef5b789355467bceefec231ff2531568951e1b16fb1d6f207599c84a53ad2319251f6dd00fb77a5c4865f2082de29f13b725ff395b3d8d87ccb8eb29c05c83be6ad9b283300e42f2a251f549eda572295878cd4a0851b3ea613ac567039f09e380062c4c1cdb7f3e518f0034f72cf05fc721a9f3ccc885a32ac4bec5428dd2e80d8d5235c66250fcd3dd3f452b2882fab2890d0b1b7c5e2619e831fcf0ab1ff8fd4e8662853096d1e91e6ed8cae104b2b75593a5e9623114f58500641d73c4c0e756a705c104e89cdafae7e78a90824509e0d26f74194f8ac988432aeb3037d470c6b90b4f2734dcda7286a9c1f7f5f1fb18c75c217ef5a1886738b39712e5028a0c3a34632e06fb754490baab10da59f345fd037c6125c37853fa228ef44cd9db5b9c91f39e232f226137de96ebdab61bdfe9dbfe50779179ea635ad0d224d8279187b1c70c234e759503d31161540fe1ecaedeb58d2c1cb6a2079bbf3012f47f417152a1b9789dad00ccb53629c21a551c3c0f684a147bb0aa5ad4c6f704bccb5197cb76fced87c44716f4bddd33aba2daa8a5d20b124dda797d176ca87119d2eef8ff6df3060896c7692df8be48b30fb52ee56581c920288ef3cc6e72fc487212089c56d86e4ff9578f86d2e2ac0a3d98e1d22298ef1d19ec513dc396e1032103127ca2d52076ee719bca2df25cea7e61f22c09688e0dacc7f4332a55efecbb66783742c533e2a3c8f7323ea25499d8f7dd11018519b97f2f0d356b544989a4d043d8a3002d1dcfd802d0e86f12fcb8c60dfaf4eff3c67818e847d27c7eec3f2725103053e2d8e1d6ea47ee547bf5fc965c6dec3cb79115a12715cf946c47517b5815aaba404f4ca2eaccb2200b1c6cbf9e103fe6e3f7bfc135c668669aaa2934a76ddf94cb970a7c3b7263002ca4e28808dcc43364dbc5aa4278c07074777bbd4e6dfd602c8383815b2e4bbf7811d6ffdb019f24fc48d77644ebd03fbbbf17ddcf7b6ecd25a2741c073bcb6f91aaf665d79a0e57973f428d5873c426a69300be5e750f31e136e082b9830bc71aab9eba6f76a5ab36dab01139447a6d94553a792f1e0da1fe2db0c25f120dcf708b399219a8572c86faa1e31505f15d5c809a818335bfae53586b4f29ad85befac6058894de4f2c0043fb4f0ee3175d3e80740efa0abe3ec515eaf74f08f11ff944bac1de40a0fb8e46b5912c22b2b78e5718ce6bce65107ed50909b3766ce38f49c7d405839c9e8079be5bcd7e3efb291dd25c7493c5838b58d9b50702154cb0522fffb9fdb57f4f5280db69a6a62129935efca98979bc906c89d83d73799a9cf297be23908abc12173aaf2c4d536701707b44a87a2277079ef0fce38dde44a7ebb7f4b7b35e05b90570a07382968f419ab8ce0364f2297e5d9798ffb5451c84e0a393df022465afef753879341fdea04eed0624e83f70da25346d5b6fbd2dcf09ab2adadc65ab149a803980f84db02f0276bd783f678a2332356629c2998570249ffabfd5c045a96debfbd2c4039768560e4389ce4eb4fd061faaebb14c2696c2fd47f352bdb5ba7248bc07f4b14e831d14aa884ebbcbfb18b4e997ec16a85f93f14965dfd364464a8f55d509e7d4cf7a13a28321dafb3ce9b25c49da277c05fbb89ee4ac5eda4e5239d8acf18408d8d47b637efb8b43ff07fa4c387a07d93c4f0d51e326d4c6940137b27f155b0526ca6919c01a7abc96576ebb4d71272010c4c55169a95dec610338a105df07587d0c840939178bef64bf69181a74ee6b4ed9b09001c7faad0810793f3da14d82e64b0dc22bf454ef0fbb21eed03ec33dac7f97c80fb36a6a66d09cf338e9eee7ff1ded61506a0f94db0a2434ef4f75d997c63596a807962f3208bf88394f59b15acafd7f84ceb479f0a90bfb6d335b5010487dee76957f473dcb741c97b6571435efc0dc2229bcb2eff623a2252826b0363af6f8de693af7d9b45f853cb7f411ed3e3da76a41b7a5402781494961d2fc8089faf0daccc7d09029010afc333eb2124a098f3b17f8a7ea3128b695ea5acb2d5b1b5b1da28fce39673d7fe9aa469e1e4a7eee6d5ee30cca0ec2cb70af195119b8b6ab35cc67714c358c98e9a34d3f26658b1a2c620844f41faa5ff1b87222aa9f7d14d4dedf162d8c1dd7f6e35328bc08e678e93813142a92cdb0175ccb20b8906375e29a4c23994371b279fbebe0ac249930f1f0894600aa3f4b10028abd7cc35745bba7141585d90fe65a036b80a3ba804337c6de5e1f30e379baa180f8f294246c285f2c7dde5c385373412e702727440d8f71b85db05ff17d236d9dc22e532b3d75a640959557831583b29519f46c275b4fc9bbed20a7a4adaa74e9164f2be6e27b579f14a846f8ad634349dd33384d01d62103e8115d760031469468f1131c6b33e381d7fa927d09d24adedb8ad393daf4be2126c64da9261d3e7f9f7a2d28a0d69faa3c6e171af34f668227e60afeeaea413493cfc638c76b3484c836fffa5acc442f8054bd9db8f5d77819f753533471257ce0dec5a6ae914e5571b9865f13e03e497782514c2ac9a720b90fb33dbde0e843c477e3fe5499ecbf3e7993ce1fe61beda8cef18b35e150418caad6534168592a7f82f97d949e64c017cc58ec7eea17e028f1c40fa21b2e08783ee5afabbcab4e1f823b45b9556ee76a134814232e010c5e64532e284061dc702603cc0c144991319f6d6fa2b5f3eb70a2d648a1c8f5ebb8a57c502ae855fae802406d279c4483f6be2f26a3f18f3d5af484575775c7ae2cda291a761ea2de016e2f54acc7e1e7e34d4428a524b6c4ed46b37a42e6eee469a977f666debb86781012fff2ac080f10a6e070787322219cbcad8fc88b7f228bfd1af56926c4f311309c1638dfb11534fb22eca2bed56f6b60191746aaa2cd3cafe100ce337ee30532a83d3806aca7a0a0395f4bff43065471ccc57263722cc71202f96a30bdd8fc59a78dcc3ce629dcac4c2402f60cb0e87f42276cb4bb1f82b1381aa2c99c4476839179434cab259f9d39661bec3b98d83104b798fa73147bbe2005e13ebc81acd798b796994d7677f0947d151b870ab0af6969fada3f34e56b7d7ec77c60f191ac81e3d86d0effae2baa43584b42662f9a6a87cb06c321dc39244dd7e266bc51b93490ed1ea56f71e6ec6e7daa0f3f030084b9e50b061fba0fcef8789959863c17c88fc9d8ef65428048a464b38a0306240162dd4de5e6241483d35bb0ae4d21b8e2f6447fda09a64828fa1673d40ec980f2be342c6f6a32ce666ae2eba3b124b671c45bc137f9c01d0896b181e610266d36e34e661afe05fa509589d57c63a18b5a25d802f2422b011f19b159aa7515ae35835bb6f18da6b9e7b6b2c890c5a8d5dc79b6ff2ade5927421753a80f79ff8801398f3766832c741befa013f853a1533c874901dcb7d6f77bdc070b86fa4eb03200a4d1338bda6d51a1e3e50fa1313a4ef10c2300843fe9719ffe50af3ea254923e53caee6988042506ef4e691e429d3a5ea47d793b03363f55eb8ac9ce869abcd7ad2c51c5a32720b4e1a81349aea6307e3ebd3fb5caf176259d241056ab29790a56717737db0f9c67e73ba428cab8cb5997bf4e99c498040453d9030281379e5e66f267444362821e4719b8125b346563c1c3819d61ca6c795605bcebd27d9a90c1e85289ce2d3c0367616f3da0545dd9aaec74fea5e59c6ecc5bd5a48f6d040f9b4a01cd680aa0c5cdb53c9aaa2b9f4bd26dc2d35ffb46601c050f89187214f4c1547817146d7f703e0e10f4c3becf7352c31fa0949bc4c47ec0cd17e9f3b19f4454bb393eadbe414a29b7ee7f1b4becc062e78a26cc30bdd8782db9fbc825c3b6fb1be19f149594221bd977d92756a4e68c9bddc37d7cb693d54de165884e5b78939d7e2d424e84b4f0a8b720026b6bb37f2058cb2a910eb9cab4b4d2f92880cc567ac1da4d866d6f12491da406f8c2ae45f4b13d3f34ba86562fffc81003824443db1ee9d43a4108d35a70ca141932691da5a888dbe20730705abf224c14599f2af871932d3c98aa883f2380aa281f80fd72d90356ed8be1057a230465faad8ad821221311fa578dda246de626f57c1692346bea2b923a145fb8a7ee95fc80c9709de4e2fcaabcf14bf63cbc3717f648bd95de2899ce9d88e9431fd95508fbbca15d5bf5bc4f23aa8d87228ad77b13d210e1118e3b98d58fd27389c946007d1d8575845daeb86cd098dbe7d46a4e26ff65e109c6fc46a1ec73b4aa3ef4d72709fe4198fb23fb0534b77fe8c0f67ccfc7e89af633dbc74b0593ab02ec44ee3655f226802aa1f0390cbcd01a6ea1e9def6e02fa63825e2bb5418ccf8594086ffe80792e8a7bc13b0ae7c1d5430b52338e8d1535ccc04fdea5388000d799e0551d6efc1b2a4561f51ea3f3495296d7e130d19952d5aa136d26a72aca455bd334887511daf0168af2b444c337567b8f494392d793683468f6ce95783457edb2e8c6ff223c0dc1267cefa5b87f530094c94470f359eabf90eea3eb22627ee9f4b43154b3b5f98e145921cc5b929e50dfd5bdfa9af50d752624980ad9d5bd5707a1194d6c5aca84a5bf368f826bdfa96777373427e02b70e7ea2e53602ad895d88670431723cfe8ccdbb76ebcc094028ec00924cc191a9adb4883fc60ed19596610bf0e1002f655a85cd65770da3be459a7126a21312608fab510efc91df11a7a09dadc65b8fe6819d47218dd8ade39cbd9a599ee322dbca34ea93d1d2ff4876fb7fcf9496832dc19bcd436050ed2bf73697be086e5c9606967f65211cb4fa6127642c8b2bc373b9fa8fba0d620b6e1aae0a5fabc242b7438d3636ac09877bc842c5d81fe6d2ede58525d1ce4ed0c4450875c623825aaff557eb1505bde6a13fc2689d0dd59d1f43ed4eff92f00ae9d643fd5b788942065d02b28b58066dccafdda4ee949f318944d5ff6a4abf0f8afa0cae7bb577c1dbf46c3e7c43f72df413624316660fe20bba5232acdf3eff227460a938a1eddea2d0397d48d298e099236239cc50e0ab25770a2b7c70484897b110c58d6de8b8106c1379b1f4a34e8a99013a3fc1b48096a0e949a49ccf6d9db054762e7fd5cf28392151269f2a5ad2a4155356d9227f33cd387b93472cb1c10b8264e1c4aee4d98062a53ef918ead7bc98103c64aec0f4ad4bfa216275f677b673b8b4c3621c17ff3ae1c336a52cf3dc5625b3dd94269c069fcb4cc7fd6a0c9ae425c22c30b3b75ed89b05c49f9bb5fae10c92a4cd5496cc3298b1882873d89c24a9905e11d98f3e8d2cfe8b2c239c48c7f03bb846aa020f45e2f995f1f5d06ae1a68a4997e02e4a427ceded6fe13bad60f414ef8f6621b310be2c9442ab2b11c842754b8465e38239c8105feca57a2a11e760256d68774052005734a70b5e0cca5613f4c46a269a7812629837d4f2173788f23125864ca83aab0f3e517bae7f83cdf047ae39ff01671ea7d8bf0e88884b19f18acf92f05534abb4e840af34641be2ad4fbfe2b56aa193bbd2ba8524bc83034a3a810cc79de2dbe9ca5711e44569643ff46537147eb323a5da3b765ff807d365449ee20d53a9898c0c2441743eb561dd1db69afe0df582fa069d0e728bf0c9bfdd61efa427c6a39096b6a4c530410887e14a3143572df3cedaa1c79b31dd63859e5228f17459833a23a6140377994b183030be5e26f3227d4e7b168b749f8ab04de2941da8dd14cde026d8a443a0682b0706e3d0c41fc9fe2fa33e1ed2dcbd70bcf276e0daafb884216093d93d15e711b4b813a9da0190a0109765639295567c14ad0046f166a56722fdfa7a080d30a205797d88947e79bd015a69617cfb317e032e2818938dd9f7dab0c3fe5509025cee3817aae45fe86847033929853529b6d6ec459bc5e5bcd493da415526c28fe51050b923a9efc1429df93d27e95f552c576af951986eb6a3105ed4fd048e3850a661575799129c941c052e8fe17bce2cfe0bb99063b418ca08d831602760513af7063641dfe3416b64cc95d3cc90bae8ac611bc7673bbd8494a3b3828435d75244ece237cd65d5d2a3e4665891bbebfd9b04c781698a20e26e0ead5e8954b589bd5dfe52962eabe8b9fd119c905b43fe91fd81528ad2204b994ab3af5cada478f41a6498f96602ffe2692a89783ab43f99f37d13bb115d3ae3250e5f4981c879917ef3522fe174efbe5a937c0978631fb990a535eae88d58f9cdd46436e46969eac5b16b4390f0582769e94e3c93059eaa3aeea479bcc402333a44566d2b1961922096fae3e09139c5d73d62c4dadf6ffaba466b69397278594f7296c9a57fcba9c8d27817ca21aebd3fb67970f43bc7a994b8a7b06d64dd4728835715285db518c35f13b82de44f330330204aacfd70e5dfe5b4a6ee73f669ffcc9dde26f42c0796d6752a97d3bc0d542eedff5d1fbd8271fcd507a28a2018ef886293121dfb3304aecfd2b1902f858f70f57c00c4e9a91e79c3596195bb03a8bb56fadfb06c39604c567d4999d537c1355748e82ddc5902508ad94c65067fb73cc9e0f2b74f0ffa4562bc8a873f413fe43129e21a2262cc98b178c71b8878da70d6eb6e32c22fe0cd8deaa9dcdea6c55958b6021e6fd6d12e30b877df6e465a22c4e24fe780aefff835242e9a61b5097f93d305670c970c7359444859248fb208d3b14a6612080948d5d182dccbe2109d2b30a7430eb224b477c9938c890c99a90970b89c585f9b37babb21ab2dc984fa8baed1e5ea9fa77079531bbed44b12dfad1f0c32a801701ee6a5dfe9194b4fa5b1a6b92367ec008f7b3d23af4bd3007cd9d4a9789833252e748ef30032bdac22cea00fe49aa61cdaf4d53ba2388363b98ff6b942c8806753f03aef9dfde8c4d7fedae77a30b5ecfb3cdff955710296c8e426039f452ae07e3e2a780461cd224b6fce50eccca3dbc25364fd9b4709c9fb6243963d64faf4dd2859e739c9357e5a4972a6ad60c563d7bd3d57da6c351f72d7aa4b152df4401817a5887c816a2d99180c1f9cc33c8ef8e54751d3648bf29a60b9e8fd024e313c07ef6e3e5886f623e5e7c9cee20ae2d85b8fa6cf690850660101bd5c8d281e71245e40f48aa7fbd153ba3e6e3774728514406f372dd1aaca0519134b1f80d38ed6fd4aba1065e7722767725d18e9f4d9f61e91434b1689d992ba969d3605b1acf9afd9cc91f246475ed6b36458b7b08c9a57b60f9268f6208e2a74f2c31d37665ecaf751c3ab282df0c829988ab3e2752a3c19345e125988f1e5cb610f2beaf9045c7cbd03092fb115da096cd62130a6bf1d9a24700c77b465e06612f1a9b65a8e7d97b3c41a40a57643ef0c6bcee8568e9df2b2b7d1c9eab5c8ef2f879aee17ed992359f54952d9d402059c799005890de07b777c7d57d4fbb9d102fc243cb329b32bb5eba23758ef9512aa674d5f03af9daf0408725e652e6d9ecb78ac2a3421bc367854415722e258f175be185e8c85fb30d7e498a430028c4e7572d35525c55c6ad9402c2cd696e84652c0252fb234aabf99c0daaf14f7d44ac52a748ce00f10e504803e3650a6386a1c62f5d4cbaafcf1666a15e28ecbedaf867f083ce01468da1cafe78d12d67fc5f73274e747a1fd199ad9906bb00943f2a20d488279088c1b3cd3fc0fb4ae178a62d383f86b7c91d79f9c9ad9fb7254697d0a1d27dcf4d909e6dbf6d13772bfd45a3179d63034fe73356ecb60997fedbe3ef3a0397ce32b6bcf99465cf150d04a91b22a80ac2ff171a36bfb60524d2ebabf020c9a43bfbd0cf27396f9fa5bc3599ddd42bcd0f8b7c0923e4a0641a77764315b58f0dff51707492510e745ba8c607d961d99a793882f45b1678bface9f34c0f49860d7032e5dac73669223a341f41bb4d0c2de2cb511b17e39cbf8ddc15424614ac00453b3525f1204da1eec0832beaf80dbde9da563517c31f3778e14368b168c2a4b9ae0c5389dafd711252e0c06023b0dd9deb7e27469d00f985925bb81cb22646731f6a944cb4953298cb59c3e3ec2763a1099de1915043d333802156353c6074f4199c4fbca96de27d79acdcaa41163a85d8ddc5fd5ef54fd1f4e4502da9c0688a8ca225c1361a0e68a2a4d17179984c3acc924bdad6feaefb21decdf2f8c17d4cf0761fbf115772aeab8af247ea8612c45f079c3c19efabf94abbbcf6c51e4626c123cb3698f9562ee9c806fd592c69e4f91044ca95cc6c3a9f64ae5aac542b6174a438cf631d06393fd308e9d6a7e79bb2af22729ccd11fdcc56b26e945679bdb04543728a58bfbf0533708fc72619b3851fd7a0e8b61beb2a3e46e6355f9d629cd752b2a9e3950b45a62baede8298ce72eb5aa918d6f62bc8f91064d6ae7be5bc92433212824aa53088386fee5bac1493726ed942bf1782dd7563dbea780abeed9e061ff6dd66b5919e41c623993d259655c16b8c9e32ceaf63f383399a1c07fdffc5ba9154a625d726ae2d39357999f4ecc54fc3a6b8646f22d7e98ce6b6ccdf338871900d3b83d6990509037fdf02ed6f87a23342c876028ffcbd716dc7b7846dee3cb4dd3472dfbd25eb3d7c30a3dead949454be43b98f27dd9113e4b897a99ec9d2244c1e18f0577e8206342f464e02671e5f1ba11d26dd6f72afff398adf27eaa7053a844fe5f6a8a8dd0454e86f666a3a4864f4c2749e41e68fd4a17539b9ef414ab92bf3f3d65a97ff00b4305a79793dd4d6d009b6bd8bab7edcc4db983e102588887b6f60518f9270d635610fbd9b09d797088dc021dc26daa503c00153c802e326d261ce26c323b8d6def2481159c528611246eb3db81eadbdf95dcf8e9fc3a7d7721169c94c2fa35ce10a5ce14208bbf6cc769a30345256fe1e3926b70e381d7fdc6b3dd91adbd43a5b216409e1623b1b298abe158cdfc12eba5644b97ea95a0d433cefee34ce4ee191381b1013106a49de29f40ae872da240832a91e5df0999c8ab48d49acf4fb5592220ffc1162ac717644aa5bf627c092fe5583749fb950b13aa4baf88231994c6c4a01f9f889b1fab0f8784011ed2e19f7908bee23939cbde2fa391f51031b1eccc62173fbf12dfe08a777af505e1348a6fc241f58a33bf23332e03b3edb77f35e1ec8b3fb169b63900ce237af911f5ee6a813c305b4465dac6b1a6ca62c28483f6d349d17260a48403c7308421590e919fc15ad26a3b97490c698cfc802db518400194f4e40548fb626a3eecba2bcfa169e7f5c8cfe04e7716536ae2186a0b1c508439b323823b69d2b6529adac6c16c190d23cfc71dc4d0792a2fcf24bf0da03c4640fbadbc235ead278809cbc5db40e754a3809644648ac5600f74b1ab88d481ce4eb22477f1de8cfd33414c39066874f0f48aca5648a4543ccadea0fdbfc3bbffc2e49c8bfbfc3db7f7b69fe9ed70d87b23485011f8981aa9ed95627aba60f20aa6daa2fc8df509ebdf11c617da51ae6aac51eeba23c75c30641da4b6837defa45b3dc84c9a7d3820b9ab3260a3b2aef416dcae9c712d31933a60c53d807980a1d331c6fbecf01edcaed73dad0943e1afea29fda63c2612714d413b338b3ecedd116fd57bdb77855d4e2896e029fb4de2498339886f0ed6cf2378f4c29e3588099f3011d4dd746679649a1d6a45927b5ed0fe64ce3fade599c447469edac8bf9745b15011d1a97e44c137efd0d3fe2e66e000cbc3f2956f235e8807811f8f4cb6f4b776f40bbc19fc440e26f50325982af7b3b4d1454f07352742bc50762b22649050c07cf18f7f70602eaa1d17fac7636ffc3462b250c34dddee66cb13e512afcb967dcad4822675cee8a3365b8b0125461a562b6928ba6e19df17e27d47d85edc00e92dd9a2957b98edeadffe243d13145ca1e199f1dc5d2f53a5e35389ccf69d3815fe3ef388581ebe9432854a623c9d0c97e3b779ef6745efe1506019e54f8644c80fd91b8b928fbc6e76b5a55ebd82c00a1cfcb927350040018814f9a20960a221b248e3eaf3e3b62b443f72c661d58012c3aaba1dbc931784ba022eb42339cea16284e648d1c7daae6ba57d0eda4988608a0db5700acf85ae17617190c41719add6b2218b5f9295814549d56abc2db27b8597a43c0f0023207d9749fa7a9f6cb0367cc7d757a3266e4989118779aafc86d95f8d40debf6f10a3f4dc8aa267d2537e7e73f582f26023486419e775ee05e1c36aa5164b0e6e73278e6b32e2919b05ef70ff38c5328548817d99bba790cc887f2f6369e69e6c56e573b5781fb32ea54df73d75ebaebd2ba150539706837be7f4eabb55420a2a07b94b1a4f2eec4db530d21f9bdeaddd7529fc0deb3a0905b6a31b53555e55fa13a484020e2c789570bebe442b1d5aee51a626d4207e5c7dbc615876a56595dc2a8cf7a1f24d2e82f18ac7e671d6817bc9a10566cba091933f5f19d16a6171524c581ece91f753342d1abf526ff43ef031671fb089504bf3274562841485b2d45949b8b0f81788d0d6972fc783240fd816e6ce9f44d71ea229654b492719225aaca09e09c6759a29e902b59cc380799c72ed021033a03e1c6421bf1f924476a10ddaa53ee429c16ac4b0af2e62d730a3114d5346491d0f4b4051d84e49bceec44de93b0a35ee1322165033011930b0bb517a8ac8a6bca9f35aa36b8f812e665875e4e949c896a9f5ef5cc627b69712711561c1dc9d0e5c08624cd5edb3c5098dbe2d1fb1915421757c30dcd931a2d5cba1e3caaabcc22dfd09320f3f25f3774ec61396477fef0f0a0aab79ddfcd76a2114af6899688e7fbc617995651e5bf4bb9dcc1ad6756d932dcb5e39c898c81ba81895e87103ad9175f109f99df745c20d674b8b78ae3651b9036170ed9883f5d16030bdc5f661498f8e69e2923d85a207b38f1da606c98b66d8cbfd6d87613a2ab7752af69be6144716afa2a5628c7e2a9792b156d94abd18151bbd12817228f360dadf3a02234fbe1e1ef6de9400fab9dd9d9893b467169baafb974b95395a09e75a3b0a8aaaa816e8511fa23143c1d1aad40d7b29fc4eb9d82023870342bdaf5c9f138ad08b5ecd412bb89771cd656ca394f03b1854688072f514f5581133c04506707801e29fde8bf56fbbfb78c46f7490f64d431a15bb946b0ea3bbbc9269ce4a18679555d1656fa8996668ee1f3e9801cae71f0a75315f5edffd7d1d411fb0cd93ea1965c2bb336a24eae3e6ba7a6f335339af988def7893d26fab09eafe5f540002e9c6f5d76206a07fd916bdbe9ecf0f3a262a27a8a057f419d840fdfea03ebdd851bbd22b3e9415673fd190e055c5ac4a44abaebc763dee33e6dc7946fc79e1af825c0fd0492a798ce115728ce2d39885322f53dc28506320fe8335ddf875bd1915e86770f5056ac541d5f8421e80779796c04c8a6e72111eb8c431ef6346f2d239c4b0060bba13a0a7d456b8129d054e0268cd8f76827bfc9bcea7e75e716a11f838cc2f22ebb819d7dc54a31f25baf39865e88671fe805ad70dc71dabd43e35e1986e809e1da9c76c8dcbee880a441c5fe41e52aef50d26327115f1c55098101704faa701b8bf8688503db0e089baf503e426da45567bcf4c58abdb50c71097c1ba09c2ef8d3a1b9ca54569f0e5b72239f901c6a97bad577935e37ae541b06c1b552e8240ffa0748176358f44de2781592d1eb30b0d69b036e346436e4c9ed43b36e211ba282f3e7797550d5c8e1c778c17acc5e5d95fa9b45b11b341c3038ed43a7b5818e12b312b175bf5c5a21cdea21f1b6aaf28e9dc9094b13c4712bf3a907502f73621fcdea4f1d836e5ffaf840e9d0d1c445bb8e72c8e1b05e23d4f578f4c83f5f3c69aef385dd0aa03552cc32a06ba62ccef41cd15dfbdc21120ed78daff910892c7a46c4705f8e8f72c0785ac27e1eacf7e9ef4215369d1fe6e6eb6a5891ed4216e9d117f204e8211030d2c69d2cb0be0ed7c62806ecfeb5d5fbd222521df89b0f5a76ed67a000a8dc01c29e47a386c362fb7588b1ea6916a43c3832279fb4348ca7ef97148bd4edd3f3c2a147fec4f56418e9922d62a7cf28f1f2f6eb6c96903e6ac70dfaae3191679b1a33608f319aeca35db7e31f52f03872c14662231f51108d007b5275c26c8720c7e2f692b680cbf6395af772dd2d409657c616db1ca56cea3489f81e0540e137458f5b27c77f054eb4cd8ad370e4ec00c88a7c86e0a39ffd91ccd1a152657f20cb37af4b52db1283096fda74603ae181aaa77f2d4e2768359b06875e4fd5214c972a84a942894e241bc31c291ace4d07a68af9c342cfbda418e253a33c775d49ba400e7e4691eaae613e1bd55577c62a4f314177c72192d79be21060dabd854daa3c1e0aa301e7791cd66a1fe03f4d1aef7dc3ca179754dfe631e0447886f49230c4049fa4365008a15d8a0a8a008f4e627bce3324a030cb375acb4fa343e324e34ae376b73af679e46517da04217e00727efc4eb399bcd47bf91773a55b0b95cdaac27be9b25ec6d9f93211613464a7c1b23604c94f5dd38318d1d0fa7049c26258aaf48e3155b25c4a09d8cf5018040529cb19d59e7fb617230228300f02ced04568c47394cfe7e51cfc4681d306be4bac6b3817eed28ecb4b62d91ca075f93505f0ffca352d676d82f2b75a452873c742c601e5c8a57ad12b6a95b0d56351636d372751d43993ab8b355276ddd0c956d104a2f7a5dd19c6941323d8d2e71799e5ef315030800b0de3986299aa946e2aa30faa27ae4cf6dd46118f1c43672a5faba0f3c335780b277474594518f0f36a47dc32b7768f697cc3e0273e7fc8a60504440b0116c30e29b81b76ff8ee3be976d51483ff87a21e5a169d7765e7a2f65b779771722be620a56b851fb0bcad6239270659788ed8ef110f2ca055ae618ee50e818560250e333acfa88f6f382887b07a8f7c1d069ea28bc4f6818f21dacdd4d992ce93c1bd4f31b167f5a16b286554c30ecf04c54c7a24cb9c419a1576884da81770fbfb177a7842ae87d1c44b1a722df8d54beedff244bc13fffcb06fa26754cb91772e31017f51f945b90af4d46efdd06eae8201ac72ff7eaeaec2e4727eec4d25f7dc59bb3a1b1e61e5e182a97e0579ceba826b8e1c3008ac7edb14545d64c7aaeba3700a363fa6884d631821d34af9ef9db882738c0fcc78bb8f9f59816ef6daf2d3f06cc078aea307d928c095994fb2f258e4e9a465c04be9400dc4f98b7042db5744fc513c4d34ea0deef262f9e6632c1ae985a71b13879e05b1fcc1d7f57ddd7bdf4e33b2be2df844ea227c520ae0bc579e4c44d09466dbdfec4ac7c86f3971886a078b12c33df05854a2d3c4388b45d1e6372ec79c35baee20ee5c77c9577553b6100fe797a5d804e4e8ebed9c5ebd8e69df0cf1ab55dab4d7165da2c3dfb8e1454b9daa7b97834eb8e527182318844fe871eecc6706a8b53976a02c6c9eb32453b0ba4a4ef15423e49c3858eb7f55853d7f51d4447bcd2946bac8dbfd0db078fb4842f8f7b30ec0e0981ae814b30e77ae3a28a53143638e99208b701871fcd9443ad9578efa405648947d552b283fdb89c73f860a58fc3d2feaf9fce34fa0120e86689da7fe198607668b6d314709764998b1249c2b643331ef73c3c690792020a752f1f35fecff2e08bbf8dc623af16bcd8767745c6dfdd1e2f302eadb00886b815dc54c94bec25b8d282bcdc02aa011e4dd7174ee0362bdea4a139cc27229ed1199fb796cddf5ad39b3b41c8e84980aaf38a06b4065a4d74156a71b7027dab6eca69b283bcbed1f46b54a206dc6e011ad0f6a3b31944d71cb4b3c348caaefd9ea452c707a11910b742905b825c2514a4bf5dd609c65a985e99d91778a3640092c3e88dfff12846010579b83e4a824a0a06858ef24b2401623e37183d4d09d2508c09b3ca7a8d99699401985a60df37f535766dcc621097f22f3bcf8ee43877e172384d31a00bd1162da9c04b8e32ddb64b8d5dbfc2a2557c60097682ea5db92633190acc48d005186ea4f3f010d72f31c199fd9184936824d4ca5d4f7ebb048b165318aa6e80a48b1db8c52e8e269afbace8053782d9c34004400ef09e303ffc032bcc45d9cfe9825a4724992b372f93353d0d535e03f078231657d2e80495e1cb4ce22fc6ee1fc665ee50eede148e3a515861bea07ac0253f41262a6b57331821cad1c639ff457ea3a7ca7eb66de0cf08f8392b6a0825d24f250748017c74c5421ee98236c1a0836272a428a4c170e6f5daee96c4b1f880563b964e26c1806170f2cae60ab982e04f47ba840aaca4637afc5544e129581ac30983371a54a71f1e30c139accd23bee553397499662e4e135d8b392fd7b6b4ce61b5a99e115004ad7f847fc59e212c0c9c8e1d72b2a66fc8ec559a3c35890195a22dc68e134b7a529acddfdf84daf82635efe34f0990c20020aa45614af013bc250f90617e4518778f18dab57ee442b5417e07bd9f47d3caa1ad7f273b2adf99c70f4498d9ec86a62d2986fb8b847bf3160834398ec3dad3d29087db1fb695b43d7e503ed184361771e34cf927279cbf3ab0cfcc1036e2bc3f6a15c577612af6621969e6343e7bd71aa736c1456be49f28d437c01e51ee5b6801de6626fe430c3df309b9de0a0ed43e83a95fd7cf08bad185325c71c8b52b93b270e5724b616802630d1eb80295985943a791c36f4fb9812ef7e001c6c43176d6432575ce9f66e05270a463d22c5e5975248d7c78bdf656223478e41b8a2665ee181c7b1c96e0b671ef514b3d98c2238aded840d5398381e0ff52112ae20ad456898fb13277bfa47e16063f9dce2b0b1044f10f67381d86d43edbad0955f3d61f4e6fa6a85557cf0fc9e607dcbb29c2e82bea127022105f9ed303a75e46cc205c8b4c7eec075998b74c64a374e258f38c47e2aaac3e33aec8f7a3b2c4615392decf3efba8718bc13e3b16debd4ff2f6c076b0510a64817a5d18817d3fb65f541cc4cb530c9752fcbbfb5ce35c7d9d8091e6d94e3c6874e6f77b6082ea5f1d77cc1b6cc622e5604bfad087512395ded1641901725ddc5ef0c7f03dbb688874c79de683053f6abda228623a0b7135efa86a81941b0b38c674444cd2c5dd00e6776f2690327ba8aa988f923904af539f978818ae73d4807d075de716c0f3c685b1f11f52cdb23e86dc92a77e45396245a770d7c90e51ad66ca853b834dda2135a490f8a9c367c0e83c9696d4707b471c04fde5541f0fddb97645e9602908636ada658d7609a38e1852550b91211b37d0d6bbcd9e552cd726fac013c747d435184d42061972612199365148b08dc237771a41fedc950c7bfbad41e4a089cacf3d92c44c38357cf8df4b4d284891d22c011ffcf1ad9debc8a1f090397bc276a629d62c835c3fea73c3eda4ae8110b90282037e94815daaa6458d1492697bddc3d237abc87db84b66cc64dae0536193e38f75907e6953e3d54f230bbfaa7fde5c1c63ca6be85a381c0274de7c7332bbaae599da3ad7d1ba0d6a0bc6fbeec48b03a791aeaf7c0e9283cba7c63eb43ece2d16ea278de3a7810f4d15e93f42499192947f268310fcf565d726ccbc549dda998076f921c21e31ec0f3d3b260677653690d0ac116cd552a8a1ac4bd869dfc1fed5c4a55d14458b75497e7deb3506a775f4378d64ad86420219cccaffc65e8ee44ecf7753ac9fbb0c542b94675fbf6f9fa3d45f766ef9bcd1e67507cf0e36138c777484fbea3a7ac48e221182b74b13f313640c06168b9ba5adff2db1e9bea77e60d62cb30a25a8a469a131b3c617589b718b07e37425bfa8bee697798eda822bea6771be6bd2e362487e3e94f48d3e483319d27cb8f0f424fb434b0059be48de081cbee49e3d4aa3ac0d1cba24c19838a447cb32273f46c25e14355c04e5ea04e598e22f25250aae1cb59a3ae6f12d17920e157a00e66f8662f31b360c36503af58acf3f6ed4e8b3897f2fb02281cec58f5aab5363b30e361762ec043c4c4e1a6936e6cf3c035f0ef39160e0f83ec553f7b5d9fc2e75fea50ecbf408387ff422f1d09faed76ffc96543059e53e2edaf297c7fe6eeee30aed3d9512a20ec524125f60b21fd28217aed0273b0837fd2a1d670e7fb068fa3841978c7bde84f4683c7fe4e7bc999a1e0996d6b90ace5362a60925573d0ac6fdd577de7dd735ad5f523e2f6f99667e5c08ee44fa39c1aa97700d8ea1d843e265d1f196d14ffbd593b3479a4001104fb5cbc9d25df75ad37f6196e6f0336478cd6056781f444e897abb9d610f357a792d7978fd387c2c4bed3e604e828637a97b4ba833d27093862bc6fdab51781f7a0d53a0fd6517bc69336658a81c3d7a558cabbf4751d0fff194f8454942fc3e5eee68fb94521faa36d603a504a51c1c185744a57ef9c0352e2c7635431f3bbb4b5ed7c1783b4be9f96e766c652b46fc9b8dde0d6edd234c6a62e530138d1fdf1756fc980c84404a5bd4a96426aee994777f546e1074c0b0a64120c13ae2d58e03862413df5655ef6852839b4c728f2c22d6b351092ecc3a05f2d3d3bf7aa76b963fea16bc25f2880448c8c407c8af760fe27554ba7b8109a41b99db16e8ff39f77c34485b34fdbe220f29ff8136de6ea48bc1ba04fe259101645d4524ff7133e49b0b0d9f199b468dc6c47a1fae82160131a47c5f93124bd54ba51af69466e6c8adaf55d3ee8116a04824dcd15f4607a77d8c6cf9df19d2c73c1d84fc6cb01dbc2b1f8007b703a7535b67b6fbefe1150c312cc6ba9f164e7a74602d2fe87d250dfc4680d33115023c8361c7b1f4f8e1ada0b39b0c7f10bf62917f1dfa22218857b758295db0e23933fa178cc55ae24f9a2a2e07e0007b695dfe80f64bb2747572ee27b2e0f5b686a642701127034aafaa9779895bc4c1ce38013625419049bd72445686c853c3bf9268a611659e6d850802d1572679b4e57d710ff23e0aec44046e94bf2b91e6ff241426ef0ccfece9752f90b715ff5cd25583ae7455d2eb1d1ba4a3fb878df3708479b458ac8ea0967deb1d867451c8739f765fd23a462cc77c3899cc387e4914ceb394178bd965519919cfccc8d499158223324027e3f71d0a81a01951ff0a3df57f4b39ce7923ba959134613948a117813523963ae172088d99f3a5cb7af2426a00977abd4a2f8b2ab3228a988adf73de3eccc9d0d18dfe18c1ee88b48f58cc73e7ac8e6ae05fd43e79eef8826120a7670e26f91599252fe3c64293e5df0965f9bedc9680bebe316f970aee48ee89463ac17b61b62a2401590771a4ef3570e820fb02f6a068f539a90137c2d6f2c25f9e1467d7d66a196cdbcbe96d6b1e3abb24f380df8b16897a7fff8750f545825abcbe766954785f3fd65036e7bda2e46acf4d5d34a1fbb157c6ed80310faec32faec123179cdfa3271e54b034ff1a68e3fef68a594a78f0d2377be090b8fad5d6f8a1cfa312cb1e4571e263c6087539f93ae591f6fa876135de1e44e5b5d218aee9fa5ff565d09b9a37df6797dfe7913efba07461f478c407fedbda17e4605f69ef5c58a9559887e3e181ef11d55d59f90715b249b2cceb398820301a1415ac64888c60ae7cf93bc7b6beabfbb864cacfabcfc2e3a319d46fe709224309ee72a5f256df48f2fdbab2ade727f2de8193262ff6a5273c28064ef0084375de099fabd7c960e8ec8fd2ef9ab6de7b51e201fc8e95f5b3428d1c97f2cbe048c334022572f5c329eafd0a5f20227ed17da4a4babf8c045c45647d3926ada4a998e7b4f408b843e36d1e10a9714539a86cdb20d01da3ee5b0d280457f2753cdf9f3f3fe51e3019fc99464ba959f1e0d7af2051b72db3cf4e719ae73742d272a46e4a8f3e6aa9f071f0501ac0584325a9a82b4c246a30e9d5d3d775297732f254a6d8024b1a61e83c01f58bbae246dccac0326c3d82c72c0f274e28af304dff75286b3821f91e344576548ae15c2a90b2bdbf475b15ba33cd90ffc12947f2dfe6705b82c5737ad9ae1b0786dc5d8ce8a422555497c6f1107a734289b1c278742300f035fcc1f63add9f67637742dea65b280948f46197c2a9d251fa956415121f23a102ea5679fa5797846668358ba4d12bf1fd571a34d9ba38d9d7870a672e6c26a78720c56aaed254f9b0fc57a7a1d224c8e0c70e1a5c104384fe68cd9e27357e2bc8158bf638829decc05f6ce73944bc7fec0275dc38d3964f5c67e912b30842833ae79b0bc15af34d3cf484fe2e38eecaf27bfd984af0f541722bb0516dc165695c6a2a24fea8b070984ca545db26a4c7ae477c4bc9cbd1a4ba3d4182ef02b7a007f36971dfcda70fbd11e1b7d29e5f41f87a571d36baebb69da883a5d2b33b84a4c4ccbc139ebe94afe3c15075f35952de76d504712c9dc696923f0f3e526dfa5bf38d950b38ba2e21ffce4298e3b24ae29f68b54e5c3217d89fb47e3730abb022748b690252fe0505b974a241bef1905d3e1ba340824b30ed6e90558a6ed39e716f7fb777c5e14f02ea4f3c22f9339156d24399e2a86e8d7fa55e92c07a6e41ba5a2dc2314a7f5384dbecd7ef8e2f3b580978aaa19e7611cfee769c4266b311ba03efec6bfeb92dde4b6f7c8512ed8367cb280ad15b4a9a508dd71342a872f209f08e0069a90c1d29e6b20c4b1db933a14cdad1c0652ba8636c8c7923c2b3c4025e539cc2edaf892fac45abd59925998441ef0ecd50f09f765e983eae255bda5bd96b51bcda4f66ddc137da7320252f511d58bc0e65847e87811a6b7a761edec98593267969688c7480e2a2ec2796f89cc094dcac1eb1826c2550c13408a9e7cbe334f28d2ef9dc43b9496bbab86a5de9e2f36b914af5d974bca884e70d9aac409c9f6cd27a90faf5fce873bdedb6ce113f45e88c2880cd0a3ab1a38dbb3b48e15625d749d8fe958abe3187d52e215faac59b0fb2c2dc2547d764222c0fc57390</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>逝者如斯</title>
<link href="https://blog.cancin.cn/post/d7050bec.html"/>
<id>https://blog.cancin.cn/post/d7050bec.html</id>
<published>2024-09-06T15:04:27.000Z</published>
<updated>2024-10-07T03:25:49.058Z</updated>
<content type="html"><![CDATA[<blockquote><p>大痴不迷,大喜不颠,大悲不泣,大悟不言。</p></blockquote><h2 id="篇一"><a href="#篇一" class="headerlink" title="篇一"></a>篇一</h2><p>没有什么路是白走的,没有什么事情是白做的,这些看似无意义的事情,都是成长的基石。在我们的生命中的每个插曲都有着自己该有的意义,所以不要抱怨为什么不早点儿做,更不要后悔要是做了什么就好了。你有后悔、抱怨的时间,不如整装待发前进起来。有时候只有走错了路,才逐渐明白自己要的未来;只有交错了朋友,才逐渐知道什么是患难见真情;只有爱错过人,才逐渐懂得真爱是什么。</p><h2 id="篇二"><a href="#篇二" class="headerlink" title="篇二"></a>篇二</h2><h3 id="一代人"><a href="#一代人" class="headerlink" title="一代人"></a>一代人</h3><p>黑夜给了我黑色的眼睛,我却用它寻找光明。</p><h3 id="星月的来由"><a href="#星月的来由" class="headerlink" title="星月的来由"></a>星月的来由</h3><p>树枝想去撕裂天空,<br>却只戳了几个微小的窟窿,<br>它透出天外的光亮,<br>人们把它叫做月亮和星星。</p><h3 id="我的幻想"><a href="#我的幻想" class="headerlink" title="我的幻想"></a>我的幻想</h3><p>我在幻想着,<br>幻想在破灭着;<br>幻想总把破灭宽恕,<br>破灭却从不把幻想放过。</p><h3 id="感觉"><a href="#感觉" class="headerlink" title="感觉"></a>感觉</h3><p>天是灰色的,<br>路是灰色的,<br>楼是灰色的,<br>雨是灰色的,</p><p>在一片死灰中,<br>走过两个孩子,<br>一个鲜红,<br>一个淡绿。</p><h3 id="失事"><a href="#失事" class="headerlink" title="失事"></a>失事</h3><p>屋顶上又蒙了雪<br>雪上又有了煤<br>一千七百米上空<br>又开始闪烁</p><p>琴说<br>青春是一把琴<br>不要弹它<br>要抚摸它</p><p>一千七百米上空<br>突然断掉</p><h3 id="远和近"><a href="#远和近" class="headerlink" title="远和近"></a>远和近</h3><p>你<br>一会看我<br>一会看云</p><p>我觉得<br>你看我时很远<br>你看云时很近</p><h3 id="弧线"><a href="#弧线" class="headerlink" title="弧线"></a>弧线</h3><p>鸟儿在疾风中<br>迅速转向</p><p>少年去捡拾<br>一枚分币</p><p>葡萄藤因幻想<br>而延伸的触丝</p><p>海浪因退缩<br>而耸起的背脊</p><h3 id="在淡淡的秋季"><a href="#在淡淡的秋季" class="headerlink" title="在淡淡的秋季"></a>在淡淡的秋季</h3><p>在淡淡的秋季<br>我多想穿过<br>枯死的篱墙,走向你<br>在那迷朦的湖边<br>悄悄低语<br>唱起儿歌<br>小心地把雨丝躲避</p><p>生活中只有感觉<br>生命中只有教义<br>当我们得到了生活<br>生命便悄悄飞离<br>像一群被打湿的小鸽子<br>在雾中<br>失去踪迹</p><p>不,不是这支歌曲<br>在小时候没有泪<br>只有露滴<br>每滴露水里<br>都有浅红色的梦<br>当我们把眼睛紧紧闭起</p><p>哦,在淡淡的秋季<br>我没有走向你<br>没有唱,没有低语<br>我沿着篱墙<br>向失色的世界走去<br>为明天的歌<br>能飘在晴空里</p><h3 id="在陌生的街上"><a href="#在陌生的街上" class="headerlink" title="在陌生的街上"></a>在陌生的街上</h3><p>在陌生的街上<br>有许多人跳舞<br>跳的神秘而莫测<br>使我不能通过</p><p>由于长久的等待<br>我变成了路牌<br>指向希望的方向<br>没有一字说明</p><h3 id="历史"><a href="#历史" class="headerlink" title="历史"></a>历史</h3><p>我们的嘴唇第一次拥有<br>蓝色的水<br>盛满陶罐<br>还有十几只南方的星辰<br>火种<br>最初由上的别离<br>岁月呵</p><p>你是穿黑色衣服的人<br>在野地里发现第一枝植物<br>脚插进土地<br>再也拔不出<br>那些寂寞的花朵<br>是春天遗失的嘴唇<br>岁月呵 岁月</p><p>公元前我们太小<br>公元后我们又太老<br>没有谁见过<br>那一次真正美丽的微笑<br>但我还是举手敲门<br>带来的象形文字<br>洒落一地<br>岁月呵 岁月</p><p>到家了<br>我缓缓摘下帽子<br>靠着爱我的人<br>合上眼睛<br>一座古老的铜像坐在墙壁中间<br>青铜浸透了泪水<br>岁月呵</p>]]></content>
<summary type="html"><blockquote>
<p>大痴不迷,大喜不颠,大悲不泣,大悟不言。</p>
</blockquote>
<h2 id="篇一"><a href="#篇一" class="headerlink"</summary>
<category term="诗和远方" scheme="https://blog.cancin.cn/categories/%E8%AF%97%E5%92%8C%E8%BF%9C%E6%96%B9/"/>
<category term="哲学" scheme="https://blog.cancin.cn/tags/%E5%93%B2%E5%AD%A6/"/>
<category term="情感" scheme="https://blog.cancin.cn/tags/%E6%83%85%E6%84%9F/"/>
<category term="文学" scheme="https://blog.cancin.cn/tags/%E6%96%87%E5%AD%A6/"/>
</entry>
<entry>
<title>从你的全世界路过</title>
<link href="https://blog.cancin.cn/post/5d356fa3.html"/>
<id>https://blog.cancin.cn/post/5d356fa3.html</id>
<published>2024-09-04T03:43:37.000Z</published>
<updated>2024-11-01T07:17:24.962Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="5759b807e3a67ccabd1e2a7a8a284d733a1decde15d8187ccd52585cdcd8ec55">ced864f45009da4e5537372f52405f70b78fe67c36241d825ecc82c67b535a002f876ef72dd1d940c686399b89623dee3c2a776ab90597b5572b0eccce2bc75e9c9f6737a3170cb00323da691c1d68064b91d9de4989b2fc9787b198ae70c841da26e266560aac4ccd3cb8a1d3be08795566cb51617ed3e49b5948e653432119954e7c04ee1f8cb2ce8d0a781f4ae0fe9a4bc3ac72370a8ff34685a02c16d353060567eed6c994a0332e7bc94aea53d98bf08a86b0cc2aab748053bb9a0f8bd951e2550b3d76ffdf5dafe22b2928d0c7be60770816257673108113cba2485487c337496cc88798da0c9bb6802a39d35207d93bc40a649a9a841ad60298067f214c16cd23799d41291c0b4c50de90953d2eea8a49bf888ffe28c4b5b73145a46d5180957280ca128cf2e18ff300f3be15f1e6669bb16e5203e4083bee806ab11f003630e49b23a88231dd0fae3977db5b6ea1cef4725c3b89c68043bd8a85086456dda476e231afc3d1de3dd19ca7d2ba06a1be124845f698eb8b325e5b0b36819f87c5980df79852263f7cb5f4189f7703b4e46220d8c667883af41ef60cbc6b53c7903ac09e9bdff8fa7561c0c7fa867eddbea825cad877453207ed2237598a49165d4c708b38db5d9656586aceba9783487ecaa8760b4d89b87b29510da91fb1c378b3076aea8010ec0f2a4722e3b757257b029bdd428391ccc68d704dd90cd6ec5e2037cdeada768399ff6ba03ef1980ead40e2a4dd4081f6337d604773154475ce0932aca44e35e4f446d76476b6654eab909c9294e64bb1670c607c3bda025e8107391eb81410aa803ae3aa3a750f63e62a4fa2d0066ceec043fa56ffbd5db23a430b6b2244ba020b144476ea38fa00776f2c47356fe448d282733bb6facdb4219dbd03f4518d410bc18be7d50788b83e2da2387050693de94d33ba2d71d551f7c557f22e67e39ac859e665fee29b7a761b1bb55829374ec8e28c8675bbd88e1976c6ac0dd3c8e31cf609cf5317c2a4d9287a486bd520306bb7facdcf5e2c5ce694fd1be80dc1289838a4be12b7d72f61622883fab57d42d98136cd91b41e61e71a4e85c116f688bff7edef297d4f39da8b408979143921c8fba2b7c70d29badb81be1e007b509e5aa5d6a30a33c9782270176765ccea98ae29e19af2164f29188dbff2980f43832d63c892646d063ff06064356b50da787ef0f4333211b6a05803d2d216166ed771a8a0bc889c464e62474fa3537dc4a7b5555b98e9d86e2bc3e23477172d8560b837a47894e5668c5c26e06f99a8981d2fa3a1f4f62160230e072449a6a54d2ba84e333dcc1abba7beb72108742a4d1af736bec9d7f4a9cfc2e3ac21aeb3a11facad473a282ae6909be4fa0fc2bbd975dd7103db9b412763914d5e96d14b4cb101c2f953bb51bf01f690dd0d8c43eaaa9172ebaf078cbf8a71ef1bc7f797425fca6ddb0fc16cb45243916893afe61f20451074f4ce466fa13026f10832eaac74c13fbb744502ccba394b5682ec5095c9f1a77215283b34000c59be1c771993921831b3248ec209eb7b85b6a8ed855ae822780b4e2ecd1a24b018cef8125fa9d6bb76f656c798d0c28a009efbfde40577b3aa90a7d131d3de3ae8b148905c05988f92d2e875fa7ddc47304532538f34d39b80e0df6dfd2a8153f5e28d108ff987e1ee9f4dfcd000fdd7b70c60a4e6e6f2b7aeadbe7948ed021b92e3837ba2b85b48de9f8ef56061eab56b04b8e63d2a1452c3d54b446b472e30f43099b3e9813ab8ebbab3ad4f47bc35ca7996cfed798a47f712b9167872d60520b5179fc44a2039731644067a0abe6e3ec0bce51eaf99d9f19c7a736be8ccd16a8fa8f2847ec2e39bd5c48242aae07d1382eb92b6b40ae6c7f360ddc28520841e41e61a93933d3ab378e4040fd378c6326389942787491834e80ba14e240eb8e1019cd94c37675142596908f9ce222c53e7fc24457545d4e79d2e8c435544350d30d974d803d0ca56f2a15e37f466669838306343eb085e633e48b6583d4c942df11dd174a5e88a30dcc70ce14881f2bed51ee62240844a2c5f2699491304d55e945d74b18b6a8fe0ab1a6ded056dea79b805f785a6c9f5e5d8a158ec9107abc310a0dc960be2fb9b3e75469df68bd2b75d54587ea0d180eb6167a840745cfcd3536e2735d763185f32f78e26f015351cc8abc65b437e8d2856c6e3acad5640165784391e2e067ccbf7c18a0b21bb55b2a9893b45c7f028bfec1736cd0c58803ccc2941435734359eba418036664d005f9f56bdc6d45de90985f97f2015ce0a512de6fa13a3f134a348eb422acd18117427776a3748f93da09686ea0a06d0f18fd424c9ef749c20076933431f02525c5a2391b6e91a3f1b645a59e974f0113b662c699a9f68d545f5ce2166509811b12b7081b4728bdb3ed198388fe4c63d0e228b72d486b69cccd470e9b2658c4a4ccbbc1f383a70f19465385d67668acd8ccc68f0d44e00726ad9511feea2cd39a10cf617e8bacd8bb259474b2a1c34bf4a002e8adaf64d5d6b4c5be8f039e9921994440a5902dccf9149b7041a2cc7241a170eecd031f2653ade57a3b260bc9ece46f18f12a3edb60ecb41f0859dbf2d25885a9e1091431a14a7122a9ec3f3befdfd318a2a563521e68de9f14b9ce60d035858d6fe8174c5a2ce69d31e99ad4f22d1e55bd5fe50a1079cc28e2e2f8ae72453ecbe527d04947d167359877e57df9665bb0ed246e62cf9df2656198c41c88fa4a05a7c74cf500ac02d719ca83dcb912fdbeecf6f46132191b76649934d3a751f13838c7dac7ed994ae94e07ad4cf01fcbfdb92f34347e19a80b5c1cbf9e5cafd80c0b99046458e013bba2a66b151bf2b19949152e149445fd9140244c43a6914a5af8e94e8c9026d858d4f21b54a5bd7a56747fb81a4f0da45dcd240eae5a04ae5831a3c18bc870ac4d1f2a3b1456640ee7466aadf00d74766e9242c28ecbe25e83a4dc58a3d43a07a4b91018e6bbd20e60855f68222232612d4c2fd763d061539cc438ab23a8ca85be0a8bf68da779249c474167a8272e6cf7db76f0f8520bf7e31427b90a886959cf86cd66394c3544b8617de93d67325a416f206ad624ceabbc0404ab2996d2273d7de7eac61f670ee9d802d2ecdd80441ca1f8b6dabb23a867524491fc48116fd7bee7ed64bc8961e1051150f9a5d5b8f209693fc46496abc3f9aa58c72aa989ad3cfed3a3b96c53b277ec83b40a99a11900f82fb5dd7dd095acd613159babc51d216d7b6ffa89abd515f2e5e471a145b7280505381be3f1d742a8f18fe005293d3b938bb37530745708c594f9af68060443ee950363cab2d96f222360acf019751f6a72b9c8bd19cebb6d55af6d62b6af978dcd8767584cfc7d6fe1f1dca76f8f3c97350daffb9bf47e63bb7ca9f61c64ec810c728a2fcc453296741a943d9f60d8d05734c8200acbc7498d7d20f6bd65242d7e0c1c544f6cd531901b165e0e91bf3c678a4d65ae8787a09d6e7a8c5e7b263c4c86f5954af5f5ac87b0995ba85c7848cf2e495497c32c7473344f782af903190ac5dbd8f46cba2707777ed5034a8dccceeffa0b4a8daec16f756e4b4d08f8d2ac23f5ceec73ef2793d7dbc9240cb3f3f895cbd0823abc934e0f01b69060f3e82313aa9993ff75a4a90afcce4868c98284e5347e4096247a916d84d01c693a50d92e79cb872a25ebc9c65ff1eb7a666fc11f0c990b758ff5be49d00bb67ce4bc9679256b5b12038e073b8de32b9e69d68a321f3fff9e96fc087d6a43ac96515b24553e35cc453fee3840bd3a966d98abf351f54a09f857109ca2f65cd3487de87c506f0c4573e76b6ea6e83149f9f7252e5313fd7cba32245fdfab08a600d0611693fdcfe0f3f9b47b936b350fa2ec87cd035c6c8ee547a481e5a7fa3fc847cc54eaf45e6d18b76f1aab9ca1a10a498eef055738543ead7fd679ea959fe3e65bc04c3e8c07c5511c2e1226ccba404ed47ce25aa48cd323666c970017886cf31f6f0bd4d992f3f853cc5a82a8e6db0f34910744c3e6738baa8913a807ad16e849a6c263bf8611598030018e055acbfedabd691f12a57f68cf4cbe225f82bbc1316c82ff65fc8a04b2cb2d97f630db6f414de2fe2448c1fd160c1964b5b2c7dfb1a50a54b43f2296eefef83112d108415f4ead77ecec71c76cc2d447ef71776d0da9d0276ce48a5ed3bd771605a8ed387779b773c9a4ede8d6db9ef3f04e83f43cf8aa41b5322944bb035921eb3dea891af6ef8144a8d7b092bd50d7b579bd1c7b222bc87c190d82ac9b751c18d7960ddc65ed195eadadafd834c73a8badddb7a258ffc522300db541c848e5695c8b29669fbe97568d9871b13c4c2a565501ca55a2c067a01af85268d574cfeda21b46c3874eee605eba153e818a692a470a7aa0b2a724f1f2f9a8928e7aded840cbad1105a8e70672c1da880c9c8e19994ec9bb0f0954f3ecb684540477d5af81229fe824b9c26597d2483bac5859a74cfb59ea65fe35fa2565206421d2511351cc83a7f58e3160c3f397bf3608791d2ae332a9b45c4c35c435a745fa95d32be9bfda1ac38ca810a1fe6d7ece31a3f397b4306de9a9b1d9215121d8fd7902ee40235199bc0eda87ac9d8d66d4f895f37579c72b42a2d7d0e0ccab9dcee5679b5e041d20ab479f9d4f41ae991ccb667a23cfbbc59b8dcfede761e2d5c8a634620905d3328bca3923fda571ce6306f36c109cf97c998d6a94cb1057373e9f7c70509828a9b0e933fae4170452b92d7566d6463d3b03a92bfde5bc2588d31a542663ffd39c778d791a06cbafa8238170ddd5df0beaee22bcbfe86694557233d2f0a1c097bceaa410e4f9f20baf5146f35b582e2644a672b24ff23d7efac0c837416b398d5f132990bde592abcfa5024a9409f1a5ad1f14f0fa941b62acb402f12d53b4735e48984a7acbd05464411cee6a197fdf9339e35671a21b94d1dbd2b5bd347dcc988638a8cf908ab708fd2b999bd71fcc6d7b3a324f561f1373d915bfee9dc3ecec4261ec1a5e9aac26f1547c0868073f53fa9ac1bde3c5d8852d81c9e8bcf5742f11095c1bf6fcf929592be0ca1e81221f996a10022e07573bcbcf9d4968f22324f7c4c87e2dacdceb35ef3ea12a1603cb8bd4f8f77b40a78db2c5d3a2476dea3897bc08d34ab5a4415bcb4f93e09a5f0b3b3fb707d77f14348b5898cc56a82d1c80d9773f0651802457628000c549b69ec486f97379e3af2607603efdac6323ad115a33056327cecc44a6f1a5ba5568c1e1e4efb8f33063a53ac5928d70322d8b43f67438c151d3a812390df1f38a6358e93cde670c6f6a11483950f3287bc31df5bee1d6a5eb54a185707b124527ecdb71da17fa1f5c4093a01859b0365bd99ef88c30c4df4373b3c9e8b1b18443306112ed5b08d745a2563683ec4ca3d7982276a17c49ae039866f0044a46835932a2bdd23c02e7ee4f0c65da97dc78b4b4f98fb7054c463e9158b3a0bc79d5ab33156bd91c7ee0bce3697dcf53fd937ff4fd9958312235fff918dd9847d280bc196915025526f819b32b811c1cb071f0c3113a1426a1427972a89e2e0ab7ea5c723dae409e21c4d0db07cfb2014bf9d5661d29513ba9f7a6eafd59a57bde6dfd3a9e98885c2e230fbde2e700cac44cbd91730ce76747b938be30aacb9628c4eaeed6f4affe341c8c03b2fafbd48996168b408309bdc554317b372a1bc686ffd4b847a93ce89a42369fda6fc883ad40ff225c57174bf1245356a1a792a325d276cf49b1f676efa96d80476f33d4a134f4b8f657888733624807003f88ed49cb15c1202538fdb3d379e639b96c3f25b9d2ece93288c8f5d35b460d278c50e539a71c07ecc2558a6e87ddd7ce5004c430a6cca8cb24a5a378e4b9f7a8d9a6ef6d917edb0d4b6ba187ea63a4ef814be1477f18b7ff8723799090827f6bfb0e156572d73abf73d9eb8eebe623a58e8555e0f444ed032772c9da12f1d864fad66e66c63239a38cece1670af96f55c457a5a1576361d4152d474edce5c334829e3c675c188315e23ec580652c4c46947af4c65434b8f97455ea3cbf3967546d6058bf71ad91b6a5e5b623eb5e80151de75114314d6e14e9e10b0338847aa4307c0f5ee6cfcadb9384bc84e851fdc16b193a61349067d354fe93f9ecd68162ebe6850b149ea1a6c67dc1fd5f79133331b9bf8bc2b94d60a034795d7461623ca77d8265a3446c00e3fd9958b2f2bc788d6c236ad0ecb198c4709043c2df8cfb290de6c702df4bb0c235909a0004130e032eb3d12b02c3ec93c9d082011de37b61434c7baa79b4a3ac4fcb3dc53bc897152a16be390a3aecb76a2ba4a6db6b31e7547e334edaafeac6e7ec4d7867aca79797beaea47f3987f9c0e23c8d06b6e1869fb8fea2d7a15d9ecf67381256e1b947a07c7aa125a55558d1a3930f4a72668c533e88c412d1a11e3aa7999b8a65308b099f69da6d5c2d68a49b16b3075292d77ebab18499f08487ef69f4bae5f08c45ae11752c9be4c2c592b48068298c5683a519510c81f5ec71350b6ef8f6da3662f13fa0ef9ba2b3235b17c65b6faf98b7c7a1bf6f410df5027114964d80e3e4590a4eebaa6ff460f00ef66706cd594f35c8cb7900bf494c0487706d7afb5e9a44b3c364fae0f59954c560813f48f3951ada13e98f14b46358c607e3f4cd999a6df552432479606b9e98edd8ff407abe9d38d0214c1a040a3b0c3f232afea84696406f8883068b7f2d18608280185272cf77167b997c7b11beb65af2016bab139c7ef63be575ab249b33ab595140a7522baec86f5ae47c45ff48e496d344cef3b523a1844eeea1b56769c6f5669e18a13733b61033c7723e15721700b98eee52136381c1f2f0f68df90c91a9b58e1a01036395f4f8f6017c80ab7b465ceafe804887283dafb8bbcb197ea493706392653f23418e5bf18c418dc17829cc2a1836c6e99c39cc7b72e917115cca8fcf750fa18650e4b9d095513b8310b52467dfae1fe539d0fb4aeb11ef8d7bcbd1b725089416e78d978c9f6c66f93262a5ec29684cf55a5556eb4588ac1d2c08acea877ec05018f12f42ccdb85e25c2968270dcdc06648dfe4a1cc9371686a21940d07fcd8347c810aaf6910a9ab44f056a15b867954ba48f90f562352fc64ac7f00bf9a1cbeb943e5b8fd656b7ec11ddbf84fd35b5298c4040d67c25d5d06c1a9446a68bffaf5189ea8fa99dcdac3112692aa63c72fa496abf529482ea0172035854c30ca0885b73fabe91d70bcc387b2c64a9f5afab89788c9ea6a4223def2dfbfba62b2908775c5f8e694a24f444ef3709a78b778384602db0e8d54d777a4463929aaa4d9a29a1ae670f99d64cd6263c945808ec2e3aa36d8993544bd9524601b34e2d407f359e2283b4ca85e6f2000f93aafbcb371a5a40dc8ace1a2445ad75151e4ff63ff8854485a7219c1314798e9634e0ef9f729fa2bfe7fbf0e3caff2e43d435b0c44e900d715a5bbf9cb7cbd26ba6ca08b5312eab6e16524acc3c8f4e0b12b53ab0387836a99aa891245e1f24810ede65bff4bff23f359dfd7395e5a2888bcbdd0cfabeb281c17604fb2d81b6f036830a656254d8bc9fd3e0212890476e8e6eb3eba9285d00a496b68183735e5769f357ffd802f7b6e43875ee61a175f6cb8a7702b230a8ae78a74a9041e25556a3d6daac5b0a7f21f956041a671c57c673380edc281be47f7d6514593fbea7ffc62eb90d181909c25312c8c110cfbf27feef04cb23a36dd54c6ba1aed227f3bc0ea464a0df03c1203bbe286c56c93feae8c4dfb784533934f57cccb3b5437e0f872159e1e671433fd05cbe386806a98b8e8254d5392f4770fd042f7fa8a8c8c028d14dab9087a96eef22384078714dff5ca05163f04cf629beb0f193ddf149bfdf0793e0138a35d0cfa690f95cd705a1fa66d02917bac1346299f83656ee6680b2ea77451e9568b069b03ec8c1c8b0bc4e000137eff89bd9661e58bb37a563be6cffe250e0ce1dbcd876f5f899ba5cefdebb72eafae25446b9b672abfc7f8e0f12ce1382216a46d833ed8dd80f298950bab122200bc4d1397d83bc096d9fd4ff18d4b44d02abf876eed331990bedb36887eaf87c777a6432e4612439f9b845e02c565104c30f6cfa8a8eab530ca3c205d8e72b079a621ca047e8b71730d7bf6c2e5d2df126411180dc3446f6cf66899d0efda1d1a7bbca8362fe08dfc76092fd7176937de080828b9394f6ea9ebbce3266bda52b47339e9dac8d9a79e045501a23411c9da97a130f49efa348b5821b966a506fd1fc9c3d3a42602f826ea57f968dbc07acd03f22587416802748d830e4b3be2625a2792aef0936d541ce62989b66905766a7fe70e3b7de40d196dca9ae0b5d2751240543f0d25b916b8be2f28c1dd1126e7996359e69619f9cf6d6d817fdb24f7e7de4ba383d10bdfb6134161ce16020b4c4241d62f4f5ab95b235b74512467be23344c5225729d97aba25cb982fa2920ecab9e2b2ff6810a4b5adfa59e290e5147a8fec5bfb54d48896402f78a7214a05c366a46be16c6b97f08170ec39da48ef7e861c01d271fb75dd98b1c4546875bc1e429de3565e006308bd6c306f9c77c806967af2bfcc06634e400a517b82378749ec2c200f9cfab3a818052d52c6001297a73e71ee22ad2d7bfafc8b52df89beea8a0eebc6244c8bbc5119fd3acfc16b57db6c22da7a8637c14f3de73b270cd086e0ee7212ee69eafdcb9c62be37ce77307b13c5676771daedc7e235a0621b3e64349d7257c561b96fea3812fbfc7d4c11f8f006412fbbdcf0582cb257f744df83ae5495efb48faa1d6e95895f9ab7840dc62b27438c797d047dd48c064f5f4be3156536311d55c0c12a262a782d225d7ea9d4b4a8f327d7d016bbb3850067609062226cb27bcbd82b30c7896c9fabcd2581aaa9089269c07e82c2bdbe293336a9625fdbc9e00efad0c48b81aab7a9b26bb24d07579cb6dd252267c90ac0d16885152b2111a4c49ae204430a791737019a6294c5f050c24496ea6fd28ce1509748d568fbe7ac11d254e769abb4f9cf47e687ca1c46aceede6d5add462c7f75fa504cbb45334ab2e73237fc10286341f6c4a7f4b1c7386736ca2a9264acbb0d350e4fed187151d335ebc27e14e06bc3528e4566843a79e2d24b3215b2282c6ca95bd9693883e5876757f9cf256755a92795572e190efd339c4d9f255192b2cb442df06c579a904cbbb36d9b9e2b3e2510900bb3ed5119b18e8d609cf6f238a466e241628d1999f001f3dcf1c19a3394c9103e34763397040688a1fa6db06818090c8ad97e690da3f98ffa5ed07facc03a08920dd904f51d62f744188960172d4017fc51a7d640ef372e3b007a3cbe37af213577f77a259e76af5d31371412555a88a58458592bc3784f02425f2e98047dd1b0a75fa3ed58b9f87c4fbbce6ae7348721da8c89c1c8117f21c8c2bea10f302ec10f2654cc84ccf730bd74c0e33ee8ef0ce7deadcbe9233df37a0cc9a743ffd0c8ce9bae44b9e0dbb1824a64ec475394b0e513cd2a25638e4c7f08f38364638272f0cfc0e4b11b6b7f015919b942f0b3fd93d722ffc91b04e0c48c30e61d880c0664a88dad2e8eb51a455c095bb16f6fb2ac371538ff6b729d11a18a7e975f569589931b8d052dd9790b6464c295516fedbb4a6f20b9e3ffe8e91e3dd47783123b327bece57189c6f9f0be48ecf85a17c9f91eb5a2dc2e60b7b2171457bf8861796dedc879389448a491763f0c1a88b46b9fa83441908903c5b4355b43fa68de6a8d862b4a406a4f3341aaf3a4fb5d5b8902d81bd1d355d9bf93a78d38bac58f4f7bf38360d2f35eb68b75935ee40bd5091329f78656a8ebcf0554ddbae290bd36f33b6a07244f9d94035c01a91a9269be35f54c65826cc49af3173bd7709a001049d5e01403f0aa5726e744e3e7ff1c2746d7000bdd05f101208f42274ee4085a939bcf8231134cd273e3fb12d5ab2cb4209288ea1d4e52f56ab4a6ae40c4b423f75d2aed321ec9ba68dacd8559b151799cbb7f31dc028dd67ee4b90b27edface623d90da17961b6993d299cd71cbeafeca702006c2a1e1059047c99e7d564d89e57f8c73925645207a6ac22e7c3219a61d6110365b01e3f1d1a3b59ddefa174a84de8fdea9320968161af7d740e0a9c041756503cbde341b08273c3585cec4a658454aa019b7aa08cdf6798f25327862f5c9167e263d045eb3acd5493e3a9a4ddbdfad7d5e775c0fdeed73490257189107536c27a24855af843e2caf3a88d4113ff64dca2bfdf5bd79190994bed5fffc4bb00be2b48694e9adda214c32bcb2483f66b1186a1dbf0c0486bdf8d1f810c11a1b1172160ce037314c9e4c979d8e7968691e17b8b59e859bcb7030c6d6a6d6a5d3d11edbd5f08ed2d9ef18b5dfc5131af31aeaad240330e5680d720a4483d58ff7c49a363cf28923d76d1c088ca82a14ce7f9fa7a9e249e3c29ce4d8c7e527a33538d2f903aefb5290c1a2fef4ca5f2f966a185cf2d745363a0b5af396c12929843d9f7e73d07091054766e96c50d99105d58497105544848a42fb69dee4e910c9d137a431639fecc42cf640f822acea737b74980715cd158b572ed920de2aa4b224ab7c3d523d8c6d7313b731f366e807771633c33ec092f309635a17682cb001746616685fa7fc904edeb1dc447e2671849c6cd6d05c2a1081ed27df50277099e892da9ce95a7e7c19eb98c1bec6b9b9055a6234169dec818f3ba2ed5faf95aa13b23379fafe3c13ef43d1c840a8986f3c0b5fecff51023737ba1b1c0dd7a4c87fcc8857c19a8bc63cd1d01c52ff219368981158a23403cff249dfecad60d334802f14c455d866a2f41423584aacd8b25008f6a1fb1ae236dbc5d9ac6e3729175961e4c5f0267ba0a3cd7a8a4b05b39fdee7e7c8379be2db727c2ac4b73ff1549bc874dcb6788d33af4b2f27cc965e8d70fa5c4e918b08e12e30cc60f7b75cb115996444af669d2c91ca2c38b667d26bc8de60b34399f788d2178427eb7e32add8e55670f8dddbb3558c445ec9b413a667f908bc2589388c796585b81c172f47fd9aca07986cd6e68114fef3506f5cfbf8ecd275fcdeefbd747679c8a3b0fb2ddaaeb877bd7b2dc65c255f2c98290c28fd7e3dd66acdb47a1e14729c72bdef173f03b4cf39563c07820a97ae650461d7c23e0de41e73027b3d09cb0ef284e9281ddd3c586f329db96c9dae9d9386303d4ca73afe40787d87931470b3659bb6d68ca668f8066bea9c1c674766b4f7a10235adcd0fc421434d1a2c0a7ce422ed89ed12628c218a7641fe582411b2dd80f6df517839aa0cebe173a48033ce3a22297a7ea0c579a67cd5d7b0b1defbaa6616db02b6564bd4dbad92459e11a8ec7316614f22146dbad3c64c91eca452c1ede3b9fafc68b2969ca5db61b9c00476568fb213baf42f07a162da74a1e384dbcc155fb137126d71bdc0bd4c9561a0f2abfb2e7b349b6250266b6c51ec6c8dbc5954f13fd584fc0c18155496acf80ea191a051cce8eeeb4c0900d12fda169376d722297b46356ad35fccab3f2db4a87191c39eccbaf9a3fca63b766558dde913bc6da85ca00c1a11d8ce933583987a2f9f626aca926cf5e7f01c22226db2e82b57d15995b2bcfbba69876b09103de04fdabd11f6e17341fe100ef6cbf3327bb4b3c25feb058aca424cc6627da02b34bf659b622c7c50797455e904299889c3d5e34be5d5885cc295acb7931507e64a2615a21f1c0ed541365f7c56b877077378731f8065e42751a46bbcc5c007f48fd3b32f60b0cc9abfdcaad311de1e119b21c5a60b0d77b0498468f96080468ac40e45518e31481ec8e7cfdfe4c90a9ebd92897fdda5e82df23556db4503ef2afef41d915a9b1afb974ab589f4b6fbca5f87b7e78abc25573f48d3a4f043776fba6d308566a3d51ba3af5c9a7883bee71398d3d00ae31fc9f8f9a2482a37223bd8203986c6136f96339d9f0ff5fb6abf01078c1349ac6c5a8d26b614c368cc6ce97527d1b92f7aeea47f19d3e188b818b97c0af9ac70ebb467926483c76889986f88dbbe9cc25c19deec0b04b92538d6276b33f765faac896b0cfbef34cd5a30fb2c0d522514a141d89525294bec2581c00a1597b50baf806647bc53d728dbcc70ab884dfd065974a11f7c4092cf7003e2b0df97a1dd028e0a42846f1692ea22385294aa488735b9b02c43c44a3746d36d320db5c0810a5651bd430fa1cc8fb098d18bc3b01fc32a442122ffb86e821af9be099e2b4d20b8394a041db5fb3353abdac4ce2151886f1aa8493f5fcf49750eafb91fcbcb93064616952333eeb27dc6c4a83193ff2a1fba51630e27a4be3e74020ff00eeee2536606868484031b069cd745b21ed5320c8071c9447e044eabf43dbb691f08188b00598bde70da70c150c52ff13e6838177fdedc0e0ab8fe5febcdcdd1b2efcaad85d23bddbc9095c38b85ddfb1f286631220232c1c7d7f0c2987d47c8575af9e70a496947a31c901bdfbafbd4e886707137c062adc212612509a486b2e8fd7e9798e51c0dc65078fd7892ef84ba4d35c9451426483205551416fa08bea96fe8d8cab6fd7c6301b1031af430f6dc0e0fac85fd14a4e660d0dbee865134a6721f231295fa7654dac24ed4b963dbc67ec28c2c84a8f4c8e164ee1b6351a075c362a276d6c356a87ffc42a42bd865286b98692e1c4e0d654aaa08988284b28d4a257df1a78bb6235deed783284de2f9ba087de09c566964d436af8f13406d278358047e0d457fc6f4c40fdf7ea985770f96bbba00abc942a6f64e1a03f17631e2091dc9428710a4f9ce18409f5d14b651f3893ada8bcb00b08632dadd004363acfd1a432531866ad3d3a642126fbc91d22f0356ec1158a9075934046608b7d17bb981d8fe99352d19568cbcbc48e43a903d95d5ccc16386b1e15f1c1263dcc342263a86f403dd77815fa694a50e74bac3a53588d3d01cece6f045ac1d3809e550e77aa1a811b259df12c9644a0cee10b2d778e84ff697b390d3ab56ea3d3158f4882fb6644344d19a65ff819a6016b8b8527e04652b1f75218dcd49933745f553ba204464718ba4604fc706d414f8df077f910082d4386ac835294ff238c52ffdd180fbf2ff68025312f9946d09552f750344c685ed7e5c2bfce1e18f39b3542ab85847393cfabe9af6f9747555d546b5a8c6126f286b65087e4c3f23da3f69480d63219e4397cb13fad7c9704d4026aba78960087643bc2fc265f561bc40f7a918615d7082092d8b9d5dbee832f090dcae997a2ba44b10220987b99f6a1e3cd94e79c03ee3384e1d7569ae7a222a40fa1ffabc150cd965dfa51a627fc4518ad31c4f34c0a5bc0497b50267de0d9ec978dc607a57a6d84deb28d85dd89b7b65a2252042db8ac7cf438ff6cb3333a594ebc3e6e4391695f50a4d48ed81af770e6ffda772f54df24a187aee2657a49f01f213683833b7a70ca39b578e70503c531c2358d4e112f603c87075ee87662aa3f205134b2951f598a84519bd7c1b5039cc3899fc4d4d5498c8323dd708b5b4d5c14783cf186e497a8cb5f20d342ad85e15c9a27dd520f11ddd44f2efece8ddb990639d9bab953d41d953cf176cde2cb7e5016e1dbb03e7970dd1152a576b0fd4a3595f75e72eeb3a748756fe6069b0cdb3d3632402245ae6a7061efe2074bbe9a2ba088e85a14a8503765494ba456c45912a6696ca2f270a318024dd7fcacd223325354da64761ce0d2357064a74076800d66a23757c02cb4b54f55e5f1fee14f7e12910ba586d63f1f9b35c1c00cac19a36a7ce885c48d2f76fe8fa6e3aac193f6ead66f7ad7367c3dd53015f0a61daf508f7f11c7267aa78022b07d601102217bbe66adeb3c991349c5e1e30e81615c6bbec7a860475946b350888cbd201939e04f9bae09ccda705cb17e7ba29fbd8810a37fc8b83fb4a7e49fff53a3d765b88180fde21778f33bff548995bbfd67c50d55af42bf08da80499c5895c024856176b98d9486320b990f433a14258f7d3ab2b74626b2902d9a9f23d3e407ed5ed7b3ae6c56c6743a664310a52eff91208398000bff90190b8f7dcc171a71395a9a1fd66f221686d480d802d00be550ece5d30192706835d1a22043fa3b7a47859d9eac2ab0330bb4117f10801243ff25d9d145dee2855330a671fbcd522e449d704912fce6ef0433b603b6636717416d0e6c7a6f3c24018479c2e96d0a6251e3a8297ec7ce50bf291d811a108e08f20b686083132ede8ef974f087d02f7264e364da82505a7f2f146333a9006038bf7e7d454c851f192f25c87cdd855eb1b6e9b2da7c753c335901259db171f6259ac836a1b31960e4d9dcaf7026da163c6fefcb8e362e34725d6ae8060f057546b8785b8a5db6163287d660375abe8b14de3331f413ab95205f57cd01fa69d5b65800b38a77b4d5610db59808759baa606abe36662b02ec7b9c4833eb4b5c550f8d71d3c1144ff1c2fa2ee877131629dd35638c07d6a6064febf9747d1d0b74aa1ab698447127626dba9dd0c169f7311b4d38e3b6994d8fd922b0ad1e3f0e9fb60d0577c72670d5b69902813dad51f71a6570312ac74bc77c031fac429fc1a6a9cf8a4b77948e25f7f9839ad3c8125ae8a555ef349e786ae54d936f7b228f5ded7731c3a544c709ae14ab874882cfb5f9496b308d6b2226f605b39ebfe4b95a33f8ac132b46f28bf34518cd59de191c431f93deb8e2419dd3e0c48452c70b2c6bc389cd65633d45ddcfe0a235cf80b556c4b1a06c35d2a9e9aba25d8acb7745a2dfcf4cb4493dfb72b9b1d121a0f555acba1045e104f81a159dfd9f22f676e2b5494519e892183ca91b56bda768e55396ef25b902c46ceaa152ce0d037833d5e3c4a55a30b29fe07c14ffbf3cac20222f46679fcb07b423aaae9b9a70f983c21471580203e8414bb119355e823e4ef0c3d066be569efc8eacc3f65286bdfa0e6ccee5315974acbf2415413089beaabec168aaf8aba692b7f35915d0fd7e9a750524ca43c91f8fb4412b5538cb9278da347a0d20e4ffa79f4b141e398498e8d1c4371d83f5ff33f0dfa9464857aa06da2ab22265cdac22ccbb5bdd93c914447032672cdc414484b53f4d5b8152e7283f95b8fd9326ade96161304883da3d28a9d77cf7562d55b1ae754c3eaeb5b5ba38ea3c80f61efb4eea86c1ec1fd92e5b376bdefb186e2d8b543c8c327b1c44991c6119dc2fdecbf0a47cb5c14153b0bd2d0ce8ac3384dc245ac0b1f8e1f3fef9dfda07ffb90153d80ecf5b3bc558ab115265084320d016a7deb7b37c15eca7d9a34d82175c9a57bdc224e20a1268df75d2126cf6b75c6a885c3fa8ce71933ce49eed00bfb21e9ff9716d0ac7343ff44afb8d12c45757107688ce1552bd40444d3c855368fd1e2adeb7df2cf70ce3aeab8b1f625eb47d50a75a8195cf13f40be93a120a5ba5ba2c5fb600597a3dcf2421cf139adeb0bbabdc80ebb66e66cb2e7954fac273b264c5620ff97d1b5ab2c4165556b4a786a920e5558e325e5a690016a4aeceffc934bcf1face53e91371349b794d3119175f9235b722ac6ca85bc51ee4c3ba0b970be13ff0b52746bbda2509d3e5fac726b642af3cd47ff94bc3afdea7bc29e6a56b065c2369f414cf108b96ab818d9b2ba8b33194b5e36c166e1f10a94dc5ea43c7326054a3502d79f165d6658c3f0cb5e686c2fe86e1db3828d53d1e822be3619431a3d7d5cae5457b9a7fa5de9d52ed91f67f4aaeaf3f74d0198b8a27176b841370a90dfd65040867beb5bcb46061f50b5720679dd1a421150e74e19f6efeedc0ae498eecf6eff2351109ea2a7155bfcfbc0bcb7e99cdde5e1a1243e060f35d82f805ca1178a63db75236497ef8dc0e2292bebcce9f3bc2494ceb0676bfd0589c1444394f424bd32fe9732e97a919ee8f199663503f13dafa185fccec94a91f668256aa0bde325727a8925fe92793e129b02f671b32011c9350bfc477a257949631cf12d133591a8edcedfbc2239c1e0dbbe32b07c0c076a06a7787febd78cfa208d37b3726026cd8acc41a860e423f71713369b615f20b9348077c5136244ba89dd8fa9b625d643949870ad59d23f06c7023fd9f3887a37c0a49a26624dbf991b83156abceca7c781a471672fac4cffaa48fb74d519ac60ed92b419f6b6bd42a11f49cd2666641b308b6cad3c07cac9c69a26c56036b9b513f511395431e687c448640ab4116445d0e5b856c8d7ab2d0eb25867a551848c4e568ca71302b0c8f064e2c3fb6d7d419a1533af27df77c92eff91aefea495ab14496b9ecfcbea222c8c83d1711245f9769dd0d093ce7a7cc8f7fb972603c9db3bc51f698d2039a3800372a5a643edf5a2ae8ad701ea7488dd2c1c91bf34b1db6e70daf20716f518e5c6fe3d08d404b5afe913e1fd259798d1f64adc11d51b3246d5d15a6135a474c3ba7c906ab2f0177339c1429167983fbaedcb75043014fcbcd3280b952cd8d10bfbac38efbf28c67767dbb64be65305d85043cc8eaaefc26f241c990ad094247d9d7c308c93ed5f218812dc2284c13c3804da183ea40d32fbbea13d9830959b9875da7f691197ef8665b51bf68ab543a78a8c403364a0ffe118339c24dd327a8b6e4122a180ca9380b40b475df70d362226ee0b7055916f33acd214bfbee1b3952d143c51351fb2f407ecec15e1be2189664d05c23bbb7cfdd9767661a341e0e5037c8e467a19e9ade6eabef0b613282d64b0712ce6e5bd51968e4232bd21e746332a9a62f25a6564f1c3f30de998f4b44a05a8ba34d00b2e19ab2407c1dd30646d565d71ddd0eea0b2f6f9280b584693c1b72e1b90909351ddb8e6d760569137954e6e5120037bbabd4d9905ce9f579d22caa31ea5f97bb6030cf5e8b06ccfb0b53b8cb3f4698e2556947cbe7b2316d3b7af52f88b976c4c58680d2841be79daa0a40bae318b98f409e2fb8a00797c2dfa43dc97f27300cd80fa27104c48aac71d742d084c8f3cc8b33aafc5445389a2792a215a4581582c13c5780df30813372ba60c6d70e3484026afffc0693926402447629fb4065056e17b484e84fa567187f1f3fde9be755f033397dd584882004c9f2d25616f13a753c4a61e2d00c62b30bd4215777ea34b29c3b8fcdad464b21cf74986a79b10296c6a2cfae77c54e52ac9ed4661c4a70668c76d8d96877b70c44b85ed7d0243ece0eb75d8265266b7bccf2298bf095316cb69d822b3474e1080ab8da4184192db2913513cec33f6e3d1003ab6839b6faaf6a174bd97b6a0a352ec5504ff0d9dd60f08bec2067012d01a2dfd0e8ecba7ea580651b9c3665a356b619a244241ca0cb8ac66a843e0535bd0b260849210903ae8d8c5bbd0ed3281e25c15ad17753961e2512a0a829816a5ccfa2a9dad02b83b9500f832e2e2bf4efb1367d7f4962b8e50cd6e68ba7d1abf76a961ca93d20e3bfce9e46ccafc560a5116e038dfc5425f262deefcc01783ebfb8574f2f56098732b8c13340ec6ffd5e6a500f65520204dcbd4b533f2aa0fab5b4995a378845fc89716dec52490baaf01042470b94abc61df2fefd5f7c0f6d022be36809aebd0eb1e4539bacd389d67e6a514294e23e311c232327cf444db340cf56e7f33070a2bf4f3ebb6297ebb53a5969bf1ab73b658b7a5fe339f14e6b4113017bf44b0a355f7cc684d65fd648e7ec0455f4d252ce6eb74873b1789859daf3faf628161db110602a5f02c6f8c75d1aa2b3b734c558399e095917296ba8b8c74035c7c2d0e302dbde27515961c0818f8e8aad7ebc736f44418a24aa7253fa43db00ba40d8f16ef03b0c8803d4a75850db89d19d0c7d82639a7cb08240f74bc17073fc7fad384171c02c5c5c11804f7521cd902eb2ad5f07e3d96f09de0ff5a4055f6374cceff87fffba550e3558e3753383425f172686df849c16a535d78dc1c64d96c51adac75e346e599c4c4dba79f32f80b1c0b65a2354085bb07cba9154a9cd353372459e161eb741fb77a8a6f3ff566b72b09699a3957c32794f95d6576ac5563238c04754b5e5303c26bc892ae05c315ab117d6b334579a27fd952892600420dc4cd00f6702bc8b0cb8550d7a24b02cd6556da1d06b6d683d2c5217ca965ff2d22fc95e33e4f73b6eb87a797ffa5cc9e958d024d05277c7fe9c8477823a8599d0bf5e4ab3d93b3a091f1aada48457fa9add57ddf4cdf134e29b4fa604647e60826a6bc1d2f948b6ecc05c00fe723a54c0661c264b2ff7a1fc3162ccc965a43d7ca75e4b0b099553ff052b3859eb8499e7801cce894eaa12b3fb3c9fad523139177c792e5272712b89e82f5be2d3201ad3e1c73be329ee4a9a9619c8b64b97c72aa7f4c17ac96e1416997b4b98429a9d6a5aa6a19e13d403083f0be76cffbd6a34986fe810a8fdfaeae958177ddac7de7dc13f454245bd8f4c2d4f449df5c7217abd202cff3e8a0dff375b2d364ecd96703f7eaac9cf5c2b00fa87499998175620fadc65f4ed4d96726fd5371f8547828be5ca6416e353bec87364c1c13431a51d353795f941561e32310793711828c9acffc13aea98a2890aac07c845b725ca48556fce4b705fedb9545f05123aeaf2a06c98abb226b6328fca5e5baa8e3e684b64250027b4c75bab86fea3d140ec99a1c3e387a71bf48b336ec99291e2609b82920211f42018266b181b8b753dbd4c47c746ce91098b7ad7899161aa0da709a188ee8ef6562ce504e6b4239cc5388df1e024d41bd9d991c94d5b8cd7e39765a06055b6ccfee58cbdb7f17ccd1944bdd0df80e68bdd4b502d00c9b2d4e73d69289288a2814021248f45d06e1e8447db988c3167843bb755c629e56d0b7b84b956e5b0dc1dcaa6524da5de90f5848c8f194dde867be1acf59d90060776ad20bad24a15b3257620ba299a144d1f28d1f62200b5214bfc8da3d089e5075e95b8b17be6edf29120cd7d8409412010537acffcdb2acd17b95805eb935629d323018e48e2ce4629b3ebb3e0c994f0f4a89bcfb94a603d0763a563bdf69a30d4194446256aaa5468367eec8f5592e1d9042e42c5ce47568cd59bcaf2860eb73654cd4a1499423dfdd27b3751bfe24112156923367b064273714c1b80413d42e53c9ae0eb028e6010574fff82dc83e7122956a77d941b941685f6f23040f5afbc459fe7f1da18c694f393f9e985e9b4c8a7b1f4a621e9348cf56319c9f7118396ea22540946e5d4a552ee6af675eaa22fc335ca85957570d968168d5c30f1561af36b9bac40e90475f4147cf82b9edbf531b5986f8b89e2fd3c2a21310a3d427de5543cf435e7cc42341c807be29ae73574b79eecbf929c49150112d6cd787324189951c9ca3bfe5299e6ab1cc1e80dceef3230a20eba00bbd559a67f2824b490591c264179845a58c2d9b7802de4d10aafa884d6c7e5f17c3ea0e50a39a15c981fdcf9850c9f50f047e057f27d241c65252cb8320602ec138c14b3f4ff8066d9afd4b094faaf35b2338a3b57beb11fe7b5023270fe7a11633d9b4dde65d889e157aba1672e7f3a22c1faa44183aba6ca6c7bdc98e4a9974fae2f2fcdb7128f9b27bc2d427076c147fb6accfad8120fc2afa940a6be436aba8c5b221d0df0e5491bbeceda34e25130a937382fb24f3bb1380af2ca1cbc903398edf9dcde424eae2b43097d9797759422becbffe6a83227a4b36aab433704048c0a2f558133dbde081cfe6b530c830c6897b2033bfc8178a6f103c4c245bf86e025d12be9c448576a2e730b1c67be420d102efa7fb91c3baad746ceb0d63d56dae96fbef6794030491865120794d54495689b5dd99cd892b631c1c2138aa85b47e954d16a72a632d049a6499cc0848ad95f2b1dba494a79b9957953aa00283eb4f415554caa9fa07153b070d83d6c5aa855877177c8a00feecf1668297594c8e68b840e4fddb34bab2d5d64a0558879d1fe4f8f533e0595bd75a342129eefd8a69baa39a8a8a39464d105189bb369b56de846fcecfb65a868d94a42f85c5e4f164ec1a7ae8455906d1c3e248f8f57b0f48bd7fd379855593d624abd68243f7575addd1d6aad6392ab48795aca01b52363513d69c77db0a6a90b1212a29fcd813460d6fc1e832c81fd0829c637cfb8df138096528522a9f843394769f8501ceebc35cf955829894b18ba5f33691179a1c080eeb7c33f995c075220f0dc5e53e17f3c0b4fbf628de11bcbf11e1eb71db489004de02f53346db1c782390349573623e5a70829e047203bb6f45ec0684bb286bce970ee9d1ae00c79e5c1482406f6b9ba0de914bb5c6ca31d87fba02f75a7f35bca74e1028f9ffb449f9fbde86094ed2a3ec993a2f06d2d96577dceb2eae2cd22597295aaaf68745e3adf2da9b034d4a1b757f7b172de0992cdbb8e32a685c7b88ec1f3c511eced8c70ce1a43cf7b55fdcd01ac1f7d5449dc40061f66ae52f5a273627d3a8c07493dfad1ea445eaf61bf55fc479dfd09880aa21051ac5a81787f170218b24b521e52f445068a7a329fb75cf92f7a4cd455b9b31081b2de2fc907de988f1a6dc91a6cf5c114a9c8fd5a57fdb3c0fdb2c3be2aa4447cb43787dc55c3524c3c604c784d9a83f0b4bab110abe98c294dfb801111573509853a623c775008c9056b190c22a13025b40f510107533966ceec9c6b925fd5320b622896f7f8abbfdd412fe99053bb5ec97bf263baa0696a99c4a530cac3f3ab435161e9e626798faeec72bb421a6ec4fcdd40970a86fd01208d44c9eda472a24bc2f80012e1c83739c9b893830cfcf54b566cc3112e978a3bb7a37380c8c4e15eb07e142899a22cd99a64690507a8e287e6334d1bea700756bf25fff2a2c16afaa2e7ed25a4725cbaa51849f2d41a67c546809972613cc0aa64b16131ec1b5e112f4b77c04baab13f1dca1dff340a65d307c64625998f189732592f8dc69bfe63ad3923b4e46261027bcaa18a33a5901662483327565b5fea08bbd350d6d2071c3f688e038e2ce5e581c5c74eafb4771425d986186fcb65c73b7d4d364efbdf944c14fa114051f402a4bfec1facccb295575c3249a14fb890f4eb27c4e1f72c9f0721d8fae3dc13563ffc40dd329815586db14f6f9f1a426be51c916de14741307da0c71bb8ec64f322843a94d7a18bb00b2cf71ebe035147e1c3a1dc679a89a9aa82316ea694160e06937b7cfca4536f8421575d0e31feee500d6de896632f88849de52fd3f8dc8354635ed4589039974ff36d36cc64a4fdd3705e0fb2ac0a720dc5fa8ff66d42d52cd5bb3740e540e49a8fe31229c4b3522aa05d795d0d971cecc64354d4e90bb5ca73846e9df2bdd931d2a2c29f5280e7dc1b673276782ead024a7f73bae30505e357b20312992bb3a01c0790471bba4589cd45c5683b48c4904022a57eed83fc8916d480575a2d12690754e1b53b15a36c2e3049316040fcb2cd8487ba0f799a5aa7833ee06ce0e450614b736ce2af65e12b960675b73a7343c99a62b32a24429a66412bcc43bebdb218512bdd4cfe67d3ee9d569849641b024220d17443e21ebb6aa4685d340324e5e5dce8d9a2f3d2ad0db0706c05e49ae39254d289ed238793a6fa794666c8634deb2b8de59f59ab76f4aa6997059d13c9df209621e6ed8d3254ca430c0fe31961c85f3646698ca7f8b85b2b112c5b7a180cca1f15e26904bb45156609a0e1e287c8d1f78290516fcf4acc49573f6541547aaa8d5777d8dd12c501b64490acd68364cc8a2c16f220e68c950c6478e7804c916e2204e9bd993c4dc9a7bdf97ea7b72804a355bf6aaafde0a63aec34e17d45cc480848dfc8a1226bb68105b3806caf5956a013bbf966acd94ead1dbdc9be18100b15b078beb96db5946760992e3281bd8f14dac95040de6b7e9f062875f29ef8a0ddc3811fd4b9ffd5160e91366fa31a5560369ee087cf008cb513304ae78b600809679a1ff94424b4cbe28b746484335123f725de44f32d4bc74989ded1ae626180765cef519c212d6072c29e446be94729b71822df69294e6b39f0fd5451f8c104b74b5b4f752fab625aa1f58872fd55421d15320e84034442c7969abe3d8b29d471fec425e22095a45f76964166c010ec2526fa1f9399bbe9fc056d2cbed4014216e8128426dc4e258bbd68d40ffc8974ae120c60d68f678a3a30972be654b5716f3aef5b472e7af0043d7dcc2145d251737f5bf55810bf7b85cdce0782f635fba8064018cff0c1307c7109658e135e5d6f42d6d73dcb0aff31211a14de49547be73e1785c347ea595a4a88920f0b68fab480d9dea68d25d4f85bff7901cf1220c7579e07f65bd5d25da0c5236fa57ea814826b1ec68e21c3ba0af2cb5c9124775a47f83d70a194df5508c0077d41c47e1603ed9b7d99ebe352f7ffae4f3dc0db0e99798adbe6bab345d8185c7e67614689e2ace913e75fca3b45f670b370626eade7c6a1d0b6fd4983c646f54d906b8b53e8d92fa0459373b1425ea3803f6bd1e3809ead6d9b7149190f2513c6de17f915ae3e09b88fcc9de97a73abc80e77669f65de8f4d3c3e48707ed032e6c00ec00864ec083d45ff229464cb8b24f00f4a9b81b15ae0b8690bd5c0f6d54933663678bcc8ea1ae48c323a7436d31495256750eafd69a603f96e9792a8e83499b99018fc4d61f4557e1b29007f01ba72176349d22d1d65d3baa33b505faf5d4cdd13cc3db145deb5d67e3a30080ecaf7f4e53ee17f1499359beed642c587f35251fb5cc0dbcd55de88302ab9f8e371323f4e4328ed8b3b69cfb9a91982bdd01320110fea2507bc4ac068f12d2fe241e79688b1f6228e5db6b4f829117c4239ca124cdd9a2cad328aadb4774c5214308ee3ac7e5edfa44ccc718aba3134009a1770d19d0602cdc90ae48dd6fe5c15140c09e5eb300a715ae8d2b6e6c4e1e541df1aabaee5be6163ee2d5a9f6fcb436c9a9eadc633c9aefa67d5e1e3be2965ee5b607e40201e62848ed9e7a0e21a26ca56a1a59c79e5d70f7f810efd28bfd5f06e97baea15f86d37a4249cc72285857aaaf07485b17698ee34c0dc589f86fbe00ea32716cb709ecf8e71f84db2b54c15316ed406d7341187dd9a04c860de186ff765f6b32c494d86c8d6aa2fd596ab57965ddc9f3fb2280fb0fe1a5919ea406013afc32124e96a843108919a609070c5c06f38faf6d522f64a4c654b30079f727541cae525525818a4731b7eb35159ba218bb08f15f0665cb456faa0dcc1f7efaf6ec7a1f36597abb9a8d05df03457cf8580a1c92a81e1027fd9a577d0e9f8c270653a527908a330c42225558824a3d71db0987e50f275e78e6097a7a2b1daf0e03ef3f92dbcac290bc17de31d71aab41b63e5767bc56a3d15fc214e6523d03a03e2a2f6f8329151e2c28ebe1546492ad0d04526c85dd43906552e73ad0a601438d4c95a37da2262289f7386345c154845e467542e08ba2704b36006520805babbb744ab4bb65217e14d10f0700237e919a9a870e3ae91226340711bea316f762c3ab8617a7de6d46c9dee6172977ed85a7d22ee390c2cc17f52f9a30ef71f8cc896895c0968016be4dd0e2b9cc4ec177dacd9b9c633cfe198ca850c336d4b4acb0b87d66b17e753456b500075d7ca4a84f8f4980f3acfda887d034ac958fe31feb8032c24c7edd91fd2e0bb12043951afaa65af2fd2fbcc0f11d7086154933e52476c6f703cb401e0dbccec24e97cd52ebf84bf8f17a13ac413c8ed35a0a98878e0fc847fde01cd294e21ca008e1dae18d384b836dedc372538ae9017bb94155efacf42be354f002dff4813db4221b385ed6467228e9642c6b41ca1fe0029dee2fc751f43332e6a57e1a1ff26c72d8063e808562626153114d16b6b346d59d0460f1a86dc66af33d565660c7c5b8f9971f0772794ebc2ea30031dd392430f2a5e01058fe01dbbf956c4f269c55061a6db8b1ba2bedcdf2bbb64b71f0d28360695f739b19d25ba6d4a826c9f81d6cbea4ed6d64607b49a74e3828a22af5863f982c7c60d3b70ee5155c6c8c06cfdf10766ddc402cd6e2a17eb29e7208f202a49f3309608ef0b4dc14d37a777187620bc2d70bbb8c8870506e1eed043130b2252fe884c7e2dfc7f9b3039f4c4fed849063858d404c9cff8bef147e0970303e2f3292e46a1e3162a652907be1fe7fda6add1d2bec2bb2c7de67811797c5bd59fbb84b1c1676f7123ae3f6633b94d42fad62302b6b5031d36dad5b3133400d946ff1f4ee1f0c2aabd56e5fe1438f552f5f05ed9aaecab9f97ed72b386da075125a4401b31a527f645f947161adb67cda8017aff82c405684a5b7e8755db253125bd955da515f04a8bf70024c00624a881e36aac8385483b993bf9627cdc9096e9811d20ffdbd494590b5164c1c10a4a450023ad0275d18ed199bfcde369da6418f463394d8c6cdfa849a9400dbde87b1d2ff1baf9796a41713ede51ae88e867e6542031b0e63e2688922945673d26bd393e82023a87052a4aafbce6f4789065c56f38f397feeaddd0784c8455c8eebac4a514adc342f3e01edf1381f6936bb4951ccb52b5651b81bd971a1894f070d83c99b0e94074a13fd13e21005f3a7a1e82aef0776a94d9c2913875831ee74e6c145f6eb013a6235b74b20a4331d7348ff5adc43e5a52de4840aa17f7d3f7a2951e5e620d2bf81f39f545689c49449b230ae474a182375667702a61120c039575b66a2f4967f0516f77977131cac74179b508affa3d1c341c8628261384c679824a987b74c558665976613d8d8fb0daf2a7efba72b7f5035290cea20ad151222ad67b33cdc817eceb172c5264fc5b48ad98755801d49180ee2d67fc0895d60482c070833dcc14f70b225d46f20a217c6f53cfb4857c584390e4bba5a43943cd9b562c69693300345000c23d9e3459dbee2b24bf41f9c286a2476fee0411fca394b22de2d35d502dbfc06da605f66b868ccb2b4e0ba89a650c6c3f5f8685aecdbfdb9684e88cbf47d1863e8ca122f08c28256a0de29b126b91df0d6bec17f9083829c0d6ee2e161dbcf90618763490c7fe60d12d9b73195bf467647741c965748aa9f5db8f041767eeed21c24e88e24903ffac0dd858bbdf8d1225a65af737b8ec08d4beb099e4c064694d28970e46d862c2f945dae0d0080676f0c502d9f89a98c3429e2ee6e35e78bfb9fe6ef470514dd25562a37672e1cad4d461777da15f50627c1e1e7d92f1c7ba38d1781b2cd25854656a0cddd1554efd999f02f262287b3161bbf4ec40a8e1fce0b556154a83997cdfec900f013c884c7b4bba70f927459166700633315042e737127ba43fa1ddb1693eeb35452635bf89ae4aceb2ec730a22f9d68510f4266d5010a835cef668e11f1ef6caeed238d1109d4a04099134f6de87621456efbe8f10df4018b6a304438644a85778d929d67bf9ec05d47ee32bbe7d3e786d9a959ca784fc5bfc15b9169f25789e6886a6be281fca5c8f9a1fb8a169449ae1f95c73da86abdadcdc319cfc7a7f92d9b64562e59050b5ef5b6d99d4f1f7617905058718d4c2db10bc0aa43b53f3167a293a81ff276a7683132ce90e7608a85b551f2af9e9ae8618f6530d11d232b75d7ac8c414d3541521655251c20783c8426094c6489f7906321abe934d8b4f341c4df11f562c35b58a0efc379cc584c82faf3103c94beaa79d1463f9c7b0cdc2597961ff78dbac11f25ee2b130657b0c9cbeb7bc8b36e1572ca3ee9cc256797a6a242fc8019228576a084c4f9221525a19e62c5deb17e98d923699ed8a64c3afb9f3bf3014ae8ee5521644be78b57ec1a3dd908d26574dcc25546af6ac22afc1304457f2eb4084455d457a0f73712136e8d907a1e05ae180b3ff053465457d9610ab587b50aeee6ca61319fdb3d4b3c0d53180a087f4d09c34c3861338309b961245be3f02b72d31cf310d74e0144f4a943a3f04420eb2cd51dd27d1fdf46abe61634e24252fef409f7d4baa8d053ad5da6f23de0e54d4fa996466c57c2f5e9ac97762d91cd69030015b4ff7ec0a9e80ea3d86621cf52f0041f40204815fc51e89938dfbcc45f328f6855c0e51cddd196374dedeb1a21e72a7b335662da8f87b4d3a9c35fb39d571098d43f186dd23dcce2ab8d05459408ac42f845447e63204b187c406e050e60ecc17ba96943ce4754503043e2bc4d1a2d09d0834c71c85f3de0898099912461289df1b51cac070ca316fb4b60287408273c09e44eefc6439da70214352207e5a05337dae9012813f6318528c49dfa40e1e0e0f660886dc4fb504de327e6abd8d35cc123638941b98ca6d5cc3888e3a77f97b3813874705a17c5c4271323f26f893868cd63499f17637fb12959731aa82b7b688cbf30064976b142677c3459b2cfc5428d55eea7cff1d86769e3189e257528a43e6e7cf59c0fa49d078d00ccaafdb0f9906a50cd7bc03fba790bb3e442f0e4003c053c288c356ff404b6a4225c49a664089431eb66439e110404edac7b48ef86bc5578767414a0200527fff8bb38d969a418582d7a0044ec43aa41cc585f6ef64172fe4b516897796d68587bf65aef890b3bb1a0f09319edd8fb43e4b33bfeea4e2b1b4f1ca4097b21c954a0d702ab1723aa9f0dfebc3f69d62813d27b4c707af004691e62a1f4bd558708663d500afcd93d2d4db8abd6f909501da8e807b5a53b46a788bda76ec5c72f84b8163e753aa05fc66916a84715aa0f9212307efa2f4adc18c1ca04f82359bf63ff7a24e7f0fe796f4832663bf368362eea905b5ed73457bac0a9292855c7a190fb21247bbee1e97b1ab5977ae0ebdf818749953989af9761245869ba2d42d4814f34027c24cb748000ce10489cc7eff440ec6b33cad14118f01dd5a80465b6891b5b8b2ff0949105182ce15df799df35f0a310f87b1bd15b4b2a64eb9a8aa54433c83c462366298447574bb462564b6e501103e75ccd899e81d514366e0e854c79059e6f047f19514c16dfd2470913ee53a04df7104e80cd81b259b0d77a6e5930de247dd92f79b102a61f34f557444028c1ef53829ec7cc175d78b10de67c781c3d7fdc19daabe9670e91447a14e10b161fb06d4fa8109a7571fd745204ea17fba0673556de22d0548e6475cf35e06b8e28a14bfddf3c0cd1d5de76503d8d33d0a7a52342179cb3d68b200aa5fd130829ad2def2be7281dda16c7f941aa0129707e906244a112149a822081f3c6b81c283f672174f09c5e2542660a0db50ef2f0e097ba6a5dd7a68362a201d2899327ffe6e1cbc29edf452f389ac4d9a993cfb5d5fa48e18ef334871659516af62efdcf6e9e132ebf98d3738c9f01c221ffa6eb72b32cb7b0a4ca2ea1e6a2179c47b2d8d9473473a11d459a91808f87da88eb484e0fe065e2a9a8ffe5b191fe085a491cbae21b41988692cdba16328c735c078eadd8935426c9d662a0e6fbb9d53610ebbfff401add3f232fb2f5a9fbaeade6266f1a0b26af865540f6a0d64361027f4893aa51fb9ca3cea837fee057393dd9708aa7f9516fd09fadeab95ac02df5deae0d5e31d3f35d841322f0c7be7c20560ae15c7e842a4eacae5557aad862a1033d1ec9102baa0c1a5d1b9ccd9921695278f30703b885ad1a854ef2a104b6d9c0538ba43d2776436ab02b08a78af53cc09964e46d63555485461269c7ceaa3297a0964f1e95deae10659b3555c03888babc2f88dc459a2595fff598674bc3cd9cd938515ffd5408d944c93836c70af02b10b47f03fdb4b6a9e638da293663593fba222cc39ec4cb2da767bd58b1771fb01a9d77a0aee8f96c22dfe5ba09b4c085e05d24cf0ef506ec00ead536846aadaf4339b2ac111eb01984b1493fedfac6a09191b24a136d3647aad83e216fa17bdd3c3a858804a13bef2e04b3624c9fee50acbb0c3667811da35e32c248ef6ba94b2343d4647c7fe76f81c79657e6924fb22de126b1f49cf54de545745495ace11ecdc8454fbf9377827c690d331ef5e4e75be11575809798f485147d0b6cd61388a712c931f73b0d4f0539088045301396c7ada9ce102ec5991aa572ee6e2058ea80b5af551deec3dae9214e2b9e8b46039168eed98e33fd7f8ff29e81400ab642acec522b3681a721a232e464255f2203bf19d4471c65e515b70c33e97df977b8f3e9cf71e2a633f8761b16d963d85ffa663c9788b792621f02103f22c380d380637f61bf0cc32cfb06f5e38221a70f4893441ce141b179c2fedf8f6767902ebd093091fae4fd796f37ad2afd98256cdfe72e43a48090e7e6f6746d8e9ed47d7896e77fd91b27d97722f6c16f6f338bd41472f289505f49bf47ee47babbe8bb5700d5ed3edea701f60f68debe985783fc2308148e00b35e5e2673aed714a500e8ef5a040c9395c3643e5282684bb4c595ca34f58070a25498c3d440696bac87a810e01656ceeaa95b55a85c45ee48843df299cbfcc539903ec92e2636c96dc8e2b085dc3942f4ef4e36d83fb7817e88b544aaf2075902fb623a6d34bbfa556327bf4f1e60ee82e1e3803fd5cb4e7d52f3c7c7de74d5b8a49003f1431a4bf7ffd2059b40c61b0beda1302898a8799495b56af413bb6fa5768103bcd1952afa603c8e41e0221871f90260674ff0bd0bc621ccbebff64a4ef89c324dd52f0cdaf0e0789157edc253ce0d82e2a54b0ffb47f012612c2cc027652925bbba399067dae656f149735fe1f9fa7ff92d5c5b1b86319c1585b47981f027996132bf66e5b1405b9cd3b9ad889dd5f0855fefce209d4352ca96a58ef463103630d43961c8762e02bd9d7c0ad579077a91cec1a4cefbde80ba680574af6daee07f9d1b73e9b615e980952d4a44976ce66443e4596c03384d6fab2bff56244e4d966094e8f68ce935bc25723a87f30ec72a9a8427d6da02306c6c4211081f27c72deff6ba96f87972b17e5c1408535475f60f94d2f5081efb329b4b27d25caea1647f609dd3aef4f830c30b6889aa1526721bbb42e43d0992a5b04d15d2cbd9a6079e52bcfedec2325cd60cf13b4b0d33f3ef36f971f664205f69eb9ed6f62deefcba93bce5d026e8328aac90a83c29e7f098eef5732261f5b7412a0c1d138e190aa3d0e768e8254c588bdf9522d50886bb1aab0aee07da9323c450b3a8f756e1e28573f4880fb422844c3e50c8448cf01455301b55b300f510fceb11169fd4029fbdeaa1644816598ef7988fecca932fa2d7289544e12577834d194aeff40dc5d0b02592c18bdf6383144267a109cf99cfd5f3beb30acd38d1970fb9fed829746f94166b1baabaf85281d23bbf32dc7f60148e8feb59884d4b786afcfddedf1a057dd88f0ed7dbf7c72791c6406a45ec96dd8607edf66d2505e3b432a7e627829f9717ea1cba9d9714e6700bb24faaa022ad92d53f9834bbe9d7c092f3065babba84a0f00d93a6e6393a1246b873a93190225e8d01f130f0660fab562a2699c73e56cb26e58cf441b4492982b5c82bd8fecdfeb1d05ff58d85e58e841e09205a168fa421fec11725452767a7472d446a2cd381d100b1e1ed76d2b6fec3f16d3e49dbcca5bc457426d6bb4bdbb1a1fc87c569e87f1be3931e16395f710e776cfa491cea9302450c38bd568df1b7ea21ca4b57d23e8fd8becf1442680dc6546ce2157c9e23f044129bb0a6494de70a183dd26bc602d3066b534cda75bb414d0fe70cc70739dd977d361b5d8a347f7f7e48ba194dcd0db78c2d08bad79aa79d813a7e5dc51b27baa4bee2d0cac5711cbf995a9fb56e88d718c36363345cef47fa6fbad420fd1f11646945f0aefdd345f2543f832988594370095babdb088751e244fec81c6bd5112ed131b633e2549cc6a09c011bcd9c67a7ee9d0a171c1c380ae539ef2b6671521d55b127959cfa285433d394653fee11e80f4c04892742a5db8e51cc1843a0dcbe0ce7e75f60754fdacd935610318decd37cef98f33d29e42e0b0f15d561eb9814ff3a77e55b1090f52fa7286e44f3f26e4e05cbea30e1c667f2fe6411f78357449a4299f863ab3a333ac749cf79f74cebff7e54d958cb7a03031a7e0538c60ab6442873cd63bcbc68432c49274e76fe37e0bc2706c713c2a8518b12523993e29362d0ff50544bcbbcb0049dc005b8575ab11a01f8c447a1c2fd0687a6100b54c41cbb9fc8e030a6a47823bb34ecc8d012f7850d3c0826e8ae3ac99c25e67b3cdea9968ab8ec46c35c7d2946f2027af73666d1b3698cf201510213c584621fed127bcfeabe9d990ba4892be4bb9868d31b0f7293fc50af8c427101d4a54613b8a85e6eb5c2d88b2f2a6055c7b05db52176a4b8e5c7d24cec3d0216f08f8c35bc19c9fb11e702502924dc91555439a0ca16f05244abff173c6c30b4fdcbd5638c0db9ea9aad29cef86582cd7bf154b4dfbea38eae15e7a2b65669c26431cbd932d9056034415d49c7ec14d4909b0b6aa1c4fe78d7e894b77286cc065c608097d317b7b5560c7fe5a26135d02a5ad69c39806eec10ff5927489dbe8e9aaab4a857bbdf4de05e95261824a61429b44438dadfd232a9d62cea04db129e11d469437d142a3b0d3ab0e881deda831085f7878227931f2266f3b2832fb4949c8bae41107a7d418e33c4ab63667a16775b26c2314f67fa3f791c412a0fe35cea69d2ad60d696ef3a1a799ae0adeb73f2b3f1b8a09d1e37d43ac436c4fd3eebb569936968e7181c20d9d38452e1ffaaca291118d44578c41e30e229937445cefc8a2d1c99ce7ae756024818a3a14e420fc9900b39522394d6a7e4ac627e1816792d522251cdc248b6515bc1964c3532ff0dc38e6eb03ac1e5d1f8e6019668db30bf1c5e9aa2b893f716dd46f26bb8c4c2582b66ecef3c177d7998d92e03a61f7dadeaee0204c0108b8c0c7e18e1393f2becae5f6437a1ac26490d77696315a2f3e6a0dfa59766d2675f59e88ad9c271b46d81981b2537fb6ceb5550b8d74a4d86b26315a2a55d5b6fc9c8c32a72a8aff37e6692d1f5b9669c9c6537a6485e9f3e357455925f2174050c6c59c3fdf48c22bb5b66b558ba2344a7650fa526dfbfed7dfb5a4a317eb7ad9d6e94839abdbcd511983038e5debee62f94c8e99435ec86411ecec395a06752855a40bce81c01962de0fbe51fb8b4ed93376ac96dd1e93a7980ea34929b6f6fe202485e27c19a02f9033db42a72835e8646472108f340d3376d0fece2ed4f003c276d10a839731b46d97dd921d4901861578362eb2d0eb49def5144911538df6c99cf610113d712d7a7bfcf628243dbd2a24c0b9876fdb2fec2329b2fda4f66dd8f49d5acebcce55e4b855bea12dc6d2bf2cd112740f041d765ea2605dfa81f1e3bc37d7d041ddacb3acd67481a544ea680f68e32f807f1f732941b1145927670a0957d5fd2a78a80f092d289a9d79b4dd74880cabbd6d838a26c40ca012c045be44f9561c90a4f6b9ff1bc62039cd07623db22e7df64a34c826031acebe8d2991a41adfd449f9f1b4fa95de9416c54abf7b71900542d0f78787f53dd9c9cf0fdf343ed001af9432f4ccd7d45c0f45749a4a49e39f6bc441769f5b348ec8659ab6b50835ab6378b3c1faca2b09e5d4f78a6263cd7ed9e948ef8bfa05e90bfa90ec2038eb6ab9b3b812065677e33f41d332ce915ff2d93782003b62f0a701d447db23b4f2c6cc0464dfe8e5cdef9f59aba8930a87f8ac147ea1d274d793144a96ce7b9bac56094f972a479d3fdbe817a168e982fb1602018ef2f09bbd698be3bf6dfa3bcc0dbddad094c5d7c14f8319b231631da4bb48d75f64e84c0d944579d9d38536a52c2a71a6829a36e7ca19f59a9249003f1b1f271e7fe64423a0246b8c075f504cebfb1ad9d4295bb692b7e4b0b5391669ed882ebf40d349573043534d67b94cd862ba7a5ab7ea70d06a5c8623ebb57aa2fff5673ef3f65537342ab61c1758e967f48dc6317ce18dfa5b8dab9cd4093c31fed73ac5d192039ffdb60d7922172d7079338da769599735bb07032454f0c485d736439b8d6ef6b08f923e32cccaae2f92477f23ca1cf00c9b796059bd6765ba145b6e8bf0cbeb93478c988146c83ec7c29e6cf82fffe8582a90f1272f4ad5d30a5a945f45fd62819b35b64d882ebec5941e9fc5b8475a1cae52b659f67a512759c8f8891a36f9a1bd4de476b0e4dfb04d7763be813044e3a3c56bd9823fc808fd5a0aa60bd6c0c8b18e916b73020c39e194f027a0cd5bed67ac80b59a4727e11e1efd6866da66a4a0b04995d8d539854f40d649c354f30b9be5ccf3fc388e05f08aa49334f678b1a7c4e66947cab1115a2cadfe0ad67dca73041c5b64690846841a9bc55f9a7cbb9330bd8aba8931a7231dbf06698aa637fd53df0cbbb1dd9b5f7055f0d94ef8f1d8de7d680e97673c8af7e45b752232bb35facf4bdbe44da3af87d01d0cf46bbec8c0bda2cab04f76e3f0099e809cd327c7ad46d11c5a88890846d1debf6d5ab4781a6f87998bff2f7a92f912da8e4627491a8f4f9285895148f90afbac8f3bbfd2900b069b8062412a213ad1eb718f9afbeab5139377fba3c4d7281c052e58135b55f263778f0cc26ff57c72944f71bab25e951d491e796cfbc5def508af9109754838243599c6b60ad5c2bce78dfa6cbae28b312d930f84eaa22fc39502348f4ca2f9ea343ee75baf9ce781f0996acc8dbba40f528c44507cc840a10ed8de5a4fc1f1ad2b75545e894360b184629258e38337ba261884fecbe25be65034f1d14d2c298f290b56ab2965897007b89f0037270c88a2397e82a40f2115b20627b49496edffa87b3cef040f47058b7a75515f10ed8f5d567bf5b0fc400f212c5a6980b0f85579bf4f5ca9ed6922179ca97522870c971f415508b1303ac5598ef40bbf40ee0fdefddb91f0ebb68c736193934fbf745b52e4047d880744cf540b7a4cb4727cc96b4a82f5b393d76a7d543a48c968d7d76e965b3bbde0fab7175b24d924abc99ba7be6c8c95b195f52180d0b4f0ad92e244adad2b4d9aa916672986de1d62165cccb115d6599991e6371a30bb5a5bbf4a66add1aec5d9017341ccc42fab9d6ff11a9ff1f89eca7597d165fe7b0e75eea06ada2acc7674abadeb284034281ab5a54b604dfd95e1070932927df67ba82c7525cab89ff700246bfe78346c6351fa516b0cd10117cc3a22c1bdc9be29258a1e8afee28c99650563b19cf1a502db87538338df54898dc62b7f918decdecbde0c2a5597aefa5813eb714175a9a22ee41502f272123beb3260300f0ea805be1b3eeef4fae0669c3bdf6072e354f373c03b4ea63d62d9daa6fdf230269155f4915a051b6770d2366770214a437f3148effda0c4bd72d6e317e133d198196f4d65c63b9e8fd4bf9bf8219317974f8d3c81f95dc48232c118f7f5dbb8006048446d10556bc6353a511f67bb142aa3ef78f28114f0b3c8d96a07f1998cf544ba1ad8cf70af387660db130803ab58362529c0efbf652a06513073d2e95db4d5a94dcc0e376bb934d1129362ab0bbc2393500621411d5fa04d757cb084fd7fc66d609627c16aba91e0fc6e69e70ef95e4870c42764ef532c16e6541794296218991a569a1d4ef82816ae67eb3b74e1597bb283bf74a20b5b08e37087d15fad228102d4a32471938342ef3e13316d8257273fbabfef6de42a95106a3d4295a461300cfa801ce9d4b1ca3ac51a1aee6531c7fcb8d5946b2b10e541b28414e50e32756deeccb55344b01cb6456abe17a56e439d3b8c0beece2860568297069458ef731bc25f38a5f91471d87da0787244bc1eaa115ed42176c2c7b037f3e4ea4a1834088313597cf291a46547e2f7ce86781d597b59e1317a6089485c6ce9413ef9a517cb7ace275b34385868a194167a14044b301fce44d6fd7dbc0eea8661fb52128e132f5fcf2c64191b99081852f64f3ca6fbec8832b0daff0ef2e263a36d2aabef2ced5e8f5581fa4a38cba9bf60a1791f50b8854683a37bc20f331c1b8c8dba3b7fece60250fc42593954c94638712be8accc84ea1cacea7e2fd272e048acb8817809434b723d5d02f3644e71031790401a81479304479c58629a9a9dee9f5c6be137aa47341f9aa58b86b53993ff6cb90d97ac56f51838c2e3023a95ceaedf1627462ff37b226ae1401a6f6716bc77439ab81ad2e0770be2930b0dac3e46a4bc4a8f13d8de2f3113f4e4fa040dd191cdd69e9a17957c37fb96227d56b57d4e4621276f5c01636a0fc2b1cd8aa9a536ec3139ae6f045f2e9ec82fb17d1a276eacd9d9c75bfb9658e9de37c65d557095e5e68a6146a51ef8bcdbbe525928d87657ec84a4ebc4fbe98532751d348e9b26f64d7c110879caaaa17cd35f82a8bf90774d139d083290c3ff51f2517dc88debab521ebbda785a32d530c1efec0c727b797db6fe733065839c09089726307bb4b93708aafc665cc89b47a86e6a321aa2edfb2ed96d6d0a61004c001c6780a4dccf52da3a4623f6c2eb55d63646c0a1dec50036d4bd6f89920286c56d52e8902229faee5198a4566568b557380242ba51080fb082a6c91948f33d2fb2145bb45c1fce79fe2064c2f57cc4acaf837da4e85ec745e67c085578a8eaa02df32b3ca362e61c38e5d263b6d7b54424dbeed921fb03832da7ca129a545aea86ee63a573d500df32fc932fef6974a4fc9457e2da7ef4b798d7e4b3d841849da903e57990e9b768abbfb3c1f2bb6c66b715d7e60e80fbeb7f41c7cff3cbcd03c5d3935731bfd7345c5b035f3e9e7d8713e5daa89cdfb63d4727712f73e659eb84df26ea97f6179a6ae1eaa945ebe89bfcd58fee1b1d0d2d55e9a7df4464891ce607843844c006f77bc7be49a1bef4c8852f1177a5fa35f78131259a58cf6ed49519e4c3cbcda15315094f3c3689d2dcb8f59caf0ce8ad57103c3d789173c8f1a71a0ba99fc2d25a271324092e94e460a207675c874bd175fa5b5290e7a533e085d268474ff3159dd0489965379ca7e27c0bdea1f23c78852d225ee174fd30cff8811421a39be4be6e896f5d4ca338af687114de95222b577fe7bd4b75056debc724f9c5660b8d2b16c7314368893e8bb241f45342e54a7ced1ae2aed0e8c2f4bad9130952a3cf08e300caada90066be187e2dbdd2a669f484106d094cbd968a8df8cf6129aa060f05746b3bede526bc458eddafb02c04d40664248cd1981f03175ce75d84de035d4263fc6ca20e715c4ebfd4f762def97b55ccb1ba1fc0efbc5493054f64af293e804aaa560952ca09c20758067cc176e5176bf0b3dbac1e84a6be28dfee13e422ef0499b156b86647df9074b50879970bc0a2780e4f7ee859fc9c54fb3e5c472acb86f4f7f95b9c15307ee83d2253e186200c7ea2c115ad5394b908e2de0cc8fdff4e309a3397edda37e8ad68162431ce0ca821446967b5064488fbba4504ac199d1d90e70e2421ffa075788e9182122e49e63f2dcca8839c31bc8ed4102cf4dfa0d95939e20324c87851dbb4d356fee8b3f871bc409c5c5a67f5a890e5c2d0be1c8a0024635287d29e125886cb507bdf714e9313d499708c11bd41bc18e723cebf273971dcd0e87317920e4a0f5eb50496bd2b261f9639c62c8d1dab24fd55d1eb7ddffd0bf721208a9036ab78fbf77550d28a499385a912d8daaf6088170a38c6676b2cb25dc22347e58e36e61ce764c170cdf180e16fe5565864438fa5cba2ce3ac0ac010aec8c2a3cb6e54a6ddd04f22020eeaa791b88ea5fe8fb6aeb026ff40313a9460d59f70a421e0137e6c74883d356fac2818e98636fc7cc75d66665670043b9f3dba83dc10783d22d301d812fbd93d7cd21261f0d64004dbd8793eb036a7214e86882c57a4ba217f673a5839957197dcdec03a63c50c15177137f01514013702f5f8f5995f9c31f0d43ae6ec3bbc338693a9545e68378b2b6159cf8e9d8183dc356fc69d28e418942c0e79570f9c0a8d6cda7b0878169bd7ed2eb278e81074155aca59c59975e58536e08947cb7dce0b6029a9375852e4df7593b82459a9959f504f5a27ba2d0c5f6646f5194d390b61ee10b57249bd36c96e03101bea71b6d95e40992f6bd9d17db9f31e630b35fa304431a6c82422865c9ce63523ee679d4ed9bf05ec631b6284bfdd0ff0dc60f2b8a68b93a1a9590790773f15820f35066e6cbf6b4bf99e64406137f92eb16faf2e5a58ba17b40feee8f214ffc138a41f093896ed54215169d6a36e7f55582af7f80a02de306d664f8d1add5ef48cbd36e75e3b4294b89ea2c06a43f6827b0c29d6b9d3530321ee928e8a98c677750480247b730f505959aa540af9bd1af2b6cd66b6467f899e516f2136e0c30df37a4679d78c9d341a3ab82891cc6c0149261fb7b59fbf00b50559bec4049a179c07eeef91aea0896d372e2ee2039bf5e45265e7882b8554a4bed011e138837ceac2dd909939d2232fc1ea6a5efed47a35149db6865e0d38d7325695754028fe81e5a04e88cf650b6a0049b8f8b657b81a2f718187e38e5f044999b18a2d2265d241088334cd55f3dfde5932e675548aa0d67381e06a3fe242becb62988e6dce94e278c813696fc32192ae99e214dd87dc21c425f7a11dc27e53c332c6a28cfaab2e9ffd5fbb035dde5d8ec2858bbf81cb1e01abadedc47e43295f8b00d8d5ab28d1221a76dac7f8ee11fad8726d73b70f4815f3d0cbe66c74f7e92e4ec5032c9ac39ba4aa2f23000d87ee70e0dfba7e44b6d9250a96831f5975addc0650bb4b046ae4d906205a2ae62d1732703aa0e147bddfbd1a7d202f02e743d57bffc49a387915dd8f1b3fcabd8b37fb089de82fc5339075fdaa69b6f2de3132e5b282f65fb357023a69bdb306cbf4ecf04ec3eaec60772be5e5c92bfc08abe6eef0d8b9c1fef2ac1e83b386fd21117f09f0d9e0541577f635d58d535b82ec4e09701472c2ab4d136cdf3ac13adfc2606535ed656926be40c389038c6640ba48f860e84705055d56108ea78f210c6133836d6a12ecb40dd325d1d7e6762b2966787d03898a6829bc5d9a7521787edd4cbc83bdd2462ce0ff8083c9df9d1505fea6aa7b852c419bbaf36e1840794091d903f01408e9ed6489fd75e4a3d5a54381dbb891a92d705132c5892f2092f7ce79dfe165c10aaaf3304e023b277fb2b0316d355d5561f9822d727703b584ff9bbc7e50c46ccc7e508c6b6c718e4496d04ef913eb2b728fde763e1ab24385bdfb1ad31917eab7431fd78ba96c589843e1f3841a20741d392a6493de6a387aa76b1d52cd8c614c1da0affbe928b31c0eb623fb6047e9c7a6db748f8c1acfbbb68ce991c98724e3548da0d67a85453f855a96ad8e852c8c0db2901b841b02a7ec3f874234f4505eef8772361a27afe4883341d9904817739cb6fa2a254379aa069d23b36ffac7f51d66723e0dc3d407fdfbfb92f0746bfa7d44cc08416d590d5b13a80e7183e896969a8f08d20be743eb9e3aa46ed4c39219b108871f11366afb7c83800c56dc7efea8c9266662abca7e53783352f078ae0e73d140a7cfece32c30f668885177144851055cafd3886c90e8b001504d001eccd9bdf9700852f03f4ff0afaf64daab164f5a8b15abfa5fc86e7052cd5629fb4054da164fabf9c9607607f5f017901acd7f005cbad087152342d971a00a27c65eae123777671edd0c8b2599dfe27cdc8604572fdff694cd3f6364a49b357f50c429cb557827de4be0b5c7420dc90283375136a8c9b136b9af90db1a5d7bd05af6d2e0431711c9ed6b0774ab3588471dce31bec0dd822424e5c028535375fb8125dc0d41200ed16bedbb044a647ffe19f8375ab7a985b669ffe2682002ea73eb0284482824949cf31020ebabe48dc53902f058d82a9f60431d89eff1b8a620674fcf4595bf60bb8add71c0a52974a71afc77885f996cc0a94d22759705b1e016557579b9f5e1f9745e790d32d72cf06bb81b9450116f2355b1399704a13d2d63dc116a46526a5d2e63feff159be7f4c8d63d52274c709dca37cc5b2bf4f64c4dd45fe1a8f5823ef190f01d230cbcc438942bc736fba7eea6032d5c05b9f08e3aecd6cf3bbacd3e7ab2218ede36217bd5879b95b98e3d51321e68e3f62bd80d654ab370f29d280021f81c3149ed75fea395aa611c9ea3563cf6526d915c79de9903153a523eb4c7ed1787e44e6c9983bf05fb0269bd49869c6cf47c3c6f1cac50ce2fa13b5c413bb4e8409749effa000f9719e0ae62de48b369d83e0f4e31d6488d84c759eff8ef0ecd27abe3f9bbd3862057b2f3b7df163503b49bc0ff2e56a055321adf314272a0b5dc8c84ef6529ce93e7a3a67ecdd6060d637d3f36a15b60c3fc6b4889444706a173212d840c40e35d681cbbc615a46e9b960a59e84b87ddc26eababe567b3ddca5d143b3f23dc84286226c80110a7c7fdc57430286da1cc7ba7c4015dc17c8ed295caf545ab8d4311a36ae4456b10db37f1748e87b2d84883cc2beb97eea0bf6c4bbca966bdf7be5a26a6399c5fa3010f0e37fd6ce08e846370670af5d6cd68e57024b28631df3783c452dc09e4cfd64e1ac0e98d4ece40dcf765975e5e688425f51f57b25fc195c09d92b3db2a14b2d7f0f5ec7ca9a782dc16a2a868128e969b905bea585798d4caa9d388e152fa64536019e7c751e3dd9cd2d5ceb3e76673e1bc9b7e379bef41bfe38313af11ea0f74c9534e177431e45c085a31196d1adee40ed47c9bdc84270b84706333ffc3ea10f000217912b4e76587a21a472932bf99141d428aa7fe6fe23967dfdb1bf416b18985dfc7de356700f49d2c79693ce6c5e0c8ebe96c6759dc929c71c33b17e5f67fb5eedad970f6c57fb2e6675fe9dffa372691b7cd8dba668b36f181d0c0278355c3fa13c0ce20cff5dcacdf307b9a04fb44819b4b3a738de7ca1bdfca37e88ee261ef2b21cd5838e93cdff6ae62963dd903189eea986de53c26c55018141c01693c40bffc39bc96dbc3ab9e3adfa1496f78c415d632e37a2243e7cc5d2296c79a7c7f2c7433ef06adcdaa56152df732f22f6a45a6a79ac81ee2745403eb03616b87c2f970dde2979a33bee8b8d2b9118e1ea0112373f63fd99bcda577791b593fed5656b11d46d3c282232b7e06e01a14c1e27bed9b78a5ac4ed782e29b0650cb2819e7b5f4c1d288d9f5a1052b775e09a074be160a6e520387afc973b926e53d6a48c2c4e8ad86fb3abe1e30ad3a4f67cd0f7d4531d05524e9eb65e9a52fe911bd43571c8882e9ae0959230a804bca638cf7c56400032ea4b7520da674f565e21678c12394392a3fe914c4b30e97c0de44df655d1c69b46f83123ff9f1fb42ef0f100a55607046cb557ec9f12e102515714fc29eb8dc45ef9f7a92ca1cc0a4e8370477afe5a5fa42a0222d40efd1a77de7ad3b7b8f199cb3934e56ffefa10e81ee51d0733934d88091dfabd07339be5134bf353e637fa9ddb884da7024449e3628848aabaa5e1848e163fddb1ec2ddd8162ff0e675d943b64ca984f437694f0ca35153f09ecf624210f8f7aa2dd5933061b926378bd6de1e61a6e57ffbdba8fb2770f7c687912a81272b06064a7f971e38b03a628f20631a885b3415461539d22610fcbac89372fea09f6fcd7642c3c64e79ba5debcf8ce12dee60442d2327a1551ef391f53915b6fc7977585026bbe373aee2bb39e487f680101f77ea2178bfa0bd1f2acbd0827098b0bcb2cdc973a744380a23dccccdf9090106a397e14f58ba2638dac52b6e43ea87ec10a29a89627153d60deb4b5c3a4e8af332ad5dd736f921f8752aec95a97ed29a76b4e20c8e33634d3a7b390a0025d080df2632f77ea78a06fa6d1f33e05d5249408d8c404c08af26a9ce70772997c7368a3bf890f57636b3a3a24ffb22423653fab86a595b902748b165b08a5c28b7fb1bf4c0e834b857d38e13f68f26b8e4b93eda9807f50dd35b0e8666a8329ccbc6a49765aca2e785011b7004e9cfd86985412ad462e2a54010b4f306abd10260918d2335bdec5fad6c6277d8a785126b56c7b885d2dd17757bf703a4b13e1dff461f2eaa3a7774295b25ca9ba29cd79f7203fc0f6b0a864b01dc9e2a28de5565021275bbfcc7e5438cfd15cea913053acc3f3bb1d1697e07a4c8b02b1685e4cef53591919ce875d17d302188d47c4a1a8f38d9865b3162623146ef85893e697ed26600be6f3b60a3c0a2a2daf3f6a739807ebe44076c521d4d733c431a8827ed58759f27cfd240f90564098b57a57dbf2ef91afbc1b48918606329000201539f7a892092d19c841f663732f8939791246408f2ab3615d5c62146fdc06180a7503d48f55e8410aaf08dd2627627029e4666b1aec01af04e678b426ebb5767bb391ea33d2a82fb7efbd26192b97e24c898c48ac8324a9566195abc31d09cf761f781116cbddb9c4a5021665f8403aa68c0fba974c109fc688878938e1de98f80032344f9ece91cc8c30fb9d0c6151aa5a8a2f655b3189692d083f0f2dd40f9414ce99ebaa49c21e157d3c1809688e6b619bc1ea5f5c22efadf1e47dfb5397f65f9bb7245e31e17fb4212cb89646ad0576ee8594086aaeacf7563005eb0c7c22232733f47ce597b90dde4df32f384d8b5b277d71714dcccff3b09e1ae6a3c6c8fcc3b39211e025ebaf856056e4e59ef91db372cd196594528d03214e44803e3a74a14756c5054ef753beb00a75fc9901122c8361ca47e1770f521a9f9c223059a37ca90879d4e6db364a32b9c118d0119686a3d65fff4fba63e3733cca7debe7d9091107cce1e704ca2c4c529c65c7ccb60338d30063f87f49bc1024779a983eb119f9e7b9da9f93c33754afc511d58045e86c9b51ac057bd615f6a8ce784482fc0d9139339b38af07391b5765283d3046b65453edf5b769aaee068276c17962d3006b463eda05ffcd745947f586b9d35482827cb11242e021bf9d053991cbc52faa34fe249d630a78d8cac096b6aadf770be9a099312bfce3b7ecf58a52bcd5e24f2fdc117d97e71239d39183e15430a97b420e79b38ef3695df1420d74e658727f00a03ac095ae2a3943c0e41e47091b31d12f171a2137568b55b2e7803af0e07a2611ae087098daa029cba158e9570440cc1f7bc4e2951d03e0dd526e8ddbdf275a5a397eef67715219b3f0437d4b118df778b01b94c3f03e6dd094af027206738e72eda533ddbce0e4aeba30442017c76cace20cdf7c0ba2b7d23be8b4f4a6e691091a4245fbc65b26b6b50e2a4ff4477557459be9d8586bb545f2350e92ef6855f596820b14504e0406e28ca9e9ca245d779a10d5c650a63756913aff5c539bf0f764919fb08b14cbe42ef1f4900115b41b340d7ca638307006a2cf06917dfa8d313c3eaf90c593b1ab7aff06c6bc8ec2a7f21e608110a56a4a04fbcfb0b75091c8c5184323b72ed8e57b2bf9ca272075c34f66a3f9ca02c6b78e2f3282bad59934a74170ba154d2975a02479f847b1108f7a4178de20b9da3cc85931cd9c83188a5c1242bde8a347d6c85627a068382b1c894299a906312edf6dc9984e262af8fb123c86092c98ed58e33b9ac37e49b1adeaadab839acc7feb1810f458f4d3d8ed4a1ecbe206f2613c3da69a62e2eb653154e429ab15b41a437c3cdea69db1e476a062d9ebfbdb7a0aade7dc2250c95912ec3d34f1bbe432c63cb1af2c72426b5fd0925748fc0f593414135e18fee07c9c9faab8fafed26c68f43e23235987ac91649b8363d63f1415ad9aff7b049492cee4c9d7ea617c148d61e2c4ec9818cbe7c581be6d7d1cc9b7f01bd6e2421e1f08e35eb70ca4833e30f496a00b0b0e70455e1a840edbdb8b47cc52107c31eeb588c1421799eae23f51ab2615d6439b5c923e9c7fc99abcd1aae373ccc71b8b6c88fe27fe732cfc8bb8ea499b73e47f389ad5309bc6c62eabf7d774fa92e270ed7c8790036c6ac2d3128604013522a0377f3e3917f9244aa1a80dc77bc00d112d172a753b5689becc3dd99e6abf804efffd57e76f5a340329b7ade7d1a36f1c32df7c91b1c4b78089f819912630c2de1095335db84f9745417cf6f056f25679904b539352142287b2a18dd5831837ba5cb1b3fbf95624f14b392ee33f43c8618bdfd69128f129ad49aaa38d285ef4628d883ae8a38060f105f2a2643478c4d249f32f6293e6db892a4b47a5dff46ffdca84be121fca087713583cd39e4b6aef4f999e35e349d369011ac4364dbc68e6ac93d7031f5f76f88252a6d6242d8c9a5150e11cbff18f5adbff8c569ece10d07870f9e1b6d131adcdad92484a3247f9fe8fbe00358c1d611958f4463a3341dc645df352867b9313136fef05580d26aa5d3332487852d61c1d8f0f9d736e7eee7ca0b0a909851fa9cb378b7f4d3de8b8c1e5df6523d61cd37709d40feebe72596a81b30b671e59e782158c9d1b7a34ad7a625977f3cb2ff5cc9148bf4c7bd04ba22318f25a6dd311af07c65ee590962f0adf42cf9cbb9b3f8aa849693cc54c2bef30415e34fd8df482ff2564b7be1f60b42cf504699a4ca0e4d53b9c41c22e62b335d82f62047add1e2d3ff8861fe2b9a481cc1d9a4bfc846d82aa987f88075719412e830f0cde9d970cacb24a947d036fd2f26b0e5a512bfb258aff18a57c0cc5491fc1f67fdc9a2e98ee7cdf6c62970dfe5b6677023c9bf5be686b34ab9695d48cd33a19cdd60806cfc502f10e575cfa49a74a0e81eda44ed1a6c291df0b73be0be45df8f02ff050189c2b30e758320fedb6b20e079b327553f671bf397af24ad3621074e52f829fb12160be9964ffb3c732a850edd34ef25912c3de11b79de18b73b826e03cd1c4feefb61c441a8fee301c00c2a215c76b719a21fb3f56bb41011fd491acee96dca678b52088b33e88f49c526dbea934b697dd7a529cf69d0f8b3649dd396e04dd20ac1edb22b9eaa573528c5f9dda0dc188ac1d29611bcd39f8955be2e70725a20b9913ebb7417f5674378e24132ed3264a00d711ba58085025253c03f916f2adbc8b38ad242852902ea94acf6b25df5fb540f90c9199c40e6f8492144ca235145b1045db1d0f35376a68b7884e603c3828d2fa0a14e2d6a4f9e15db2741b0a468d295303f7e91508fb8ae425d7b93e821dfd2c861520766bb86a68d7665b5dca62eb5db3dc9a03e5b92c89759916376a2855637f886ecd7969a876b68c3833d5606c0b2b5c6df611db1900a6ba2df289efed8bbe32e92270ac4a1ebf506799a9b398007cb78551bc3e5efa1f46590f61fde578cbdeb322a22b8706285d9c8432732da035c0f0c58a97f044d03423a0c204fbaad2b1b73fc3fa942df591d0efa44d32b69882c3ebcfad663dca1ddf16ac61edc730c08414583ba91fc93431f72993e79d5446a5b75c7dec4b57ada28641bd198a920a4cbc70f2212476d4f8a34c69d3898254c9f694b073fa70db4002fc6e77e4907d9bc08494fede3e165aa1651b605da70903dd2c092c4b6b08333e1af5524f94c75e5a8847fdf28af102be72bf7b0f9faace22d09c8e7a0ff1aec5bb17e70017a53dc6a848bcdb2aaaf76cff628b986c41d5eaa399ec05039102678b13983a49afd494946c0e4ab6c9b699b8c9fc27b15e5fe61b6e8705f99f4bdcff6cf1d5ff482ff39e6f8a5a974c095963a5143fcc3eb8546942ee41d57286ca2cf259825d47bb734662a2f4491328df60b36f754a5d46a1c7908b0c06c6ccf5a15a31fd45d59a9c0d71ac0949cc55ece0af43ca5d8c092575b168b01998ae40c1ac555147e0b72ba187ac6bd0f85ff1e54c80d23cac8d465227a7dfaf7888e707657de67cf12a236abde9ceffc09ce79fe40eb9d89b169ec847a1d9f6bcfe4061e8d979957163a7cabbc7dae3403038b44ba540a7288833106665aed25d5f0a5847ef9405ec9cd8d1df656abed3f93eeaeec9a38cc70a2dab290ad60f7f7f1c7458cf1e0fac86cc29f45834b5b35a579a737191dbe5c3c1aa44b7a585c94a924697199bea9ab9dd3a68c957120bf10b0479bcb767f79d159691051521212cb730042291b5802d76cbe025330798813eaa970a785adc6f2480a34321c0aef15966bf750a0a3644acb72405ffa8a7eba5ef31eaff62b159d95d22804f22b8537c28c0839bda1e5ae722d5c3140831a57aaf05b0f34cf4d8ec77f5286af7c6d0ae95f346bc15b6b3af09fd184e5e6ceabae46aa0a240b65066371c144e172ac33dfe91ae3754c416736d9842f64f48eb32ac3472a7bd7608310c1d28a42ef66f0fcb693d8d5a9ca56e522a7ba3926523d621afd9f9d201662e1b761fecbf2e310111e87752786c9f46b442055e8a69e8b93c44180297a3ec2de95eee5e5094878ab0e8af759e7bd1ba4a7f7b9a546fc9b7dc549907ebd2d0f1ab7e2abfd6ed891afe40941f5d41aa8742f5c610d4eaa5d255c7ae93446132c88d991df90392e8a04eaed5c566dcd32e1baf179fff5c9042fe4db4a4092a5cacd82fc6d1c7d93e39f5b6780a75f197af947722da89ce1744346f72de67ebe252f98ab323d77a5a813a3eb99dadcbcee7a1fb1fd84326131c9433d421409798de9ed884eea487a3c8a97558e5b9a0697c0f3713d3f009180109a638b1a03050e13cdfb7017b04e2b0c229b72a2102e718ab77df4a0c9603e29190a1a77dd42d6f36f11214144af23449fe74f2e0145c1892f02f6ec5d65299fc04d4ece9346a3da841835e5af67e6e133f178dea354f0a29ac54910cc8a18582d81565821735b44a70bc16ff9e6aec13d047ada2b970c5d2655c363dcb2590a0e37a97e34b9c733ab509f265d4f5f3d21b90a06bd6dd0fda750bebe02473caa2a5a5dc7f1b6587257482bd683d294ba25a8abac6686f03a5a9dbfea0ffbe7ae45afe90b6e51e8c2d568f5d0a031abb79284e63ccfc1129e8ea06bd644b9c4553e98a4e1066adcf67c7f9480891321bedf01d4464b28033f9a07c3ba4718e326e5038249d33f61f8038b208cf39d497e0142730bd7d96e65c0403d4fa0a377799b0a8961e4cdb5590e2c954bef0f060953f88fd6e3978debf1c68f4ade213ce54127422b89db9977760ea3478d0dfa44af83d7d187f8ae0dd212a903b3233b13629fc28ef61b473de6320b17c2adca1b5875b0c5016d827d681badc93a8726328085b20a39f5672602afcb31d00c8a82c6a83182f0773cbe49e9153312bcd7bc795c3a3a3ac09b94a897836c8a613c32cba64dc20287f7ef8c25cb29c6852b60bfb6ca06dac93ac1d2b049b5f2553abb900814328b98ddec133125b889227ebb2b6d25d056af34d1d4ef6877fc255a5f062d9caa4005444176761656fd931c6a98c4cd293e4871b5182ed3abbc8ff3d039cb4aeaa178c5993bf2cec5def9bb7307e552e766c64b6c6b39e327aaf3ab4ef112888c162e72723728dcd2b840fa3f33b21aeda9a4e475a4227dd10e1ead0cf7e8be2a1078ec5e3b8f730f446df26700e1dfb3982c7b6bda2036dea0e9820ca6f295a03a445f96340cf4f0f2558f02b56a87b787bdfb21f200514ef52a25f4036ba7545647df29f5afb7a1e852958cd9b6b5fdcbd9c74c393471cf71eec9aa81bb17829f6c228450067b0e7743ac54a56fe3b3007e5fc6beddf53f6abb68e00f5d67735791b330fbb351becb786dfeb58a2bd55f7f1e4ac1e0db41619651d580dd50506f365983be7e2e04f04bed39128ba3ddd7c891016fc8703748b9bcb83cbd6526be2b506cbe6b91c96819a492111147c6f1095fc49576170687815155361135ed6b5fe7de85a84f2ff84884e108f73320c486cac64f89ef8860a1b94be45c2c53f87d09f8c755a24166ab0f623aca23fb0770b0f1f6144299dde93ccc1bec54ff7bc0c3be6030b3322a24cb252358707dcff85618bbe0e54f63d48aabefbf3a2fbd9618296b95889ebd9f5913da437bdc25a421efcafb081ab6d2ec79e72e4f72e9c4f08d581fffdac2681907f594ee04116178becd5b89808ee3c838b8c4c37de04c7617871661af2fa15310f47cf65a3073bdafbd5eeb627692986ce77432465d6a5588fc1674cb5dcab512ef231f63aa996945257ff06e21d6eab1d5dc3c96608cc29ad15f2666da5f3b1761a1eee0d2bf3088e3341d8d8ad8550c6e8682795f48d8184d50c9119108dcbd24b38ca0648f6745de29eed6a3005d34ca7ed397bc0cd456941ad9be66871920e78617d28643b0c45430e630161b51a3845eec3dd2081053e77a60aabfaf5e842fc7d0d8137d9326cd3bccfa8c8a69718732aa6914384e26ff38f73088010c5d2ce6a77f8518047bab9fe1e5ab46cfa25ec93dedc1df29899344f75600b11f824543e4897265ccfe62c4d325cbc7e34cb5e61ecca9ebad40571c0e737fa5603e19b898f6529e27967dd49964d4a61746b91c0106b3047134b18be617af07435ef457c2e61a174a9ae8466d6fb4df6141fc2c890cc76ee44d8411db27c48db3363fe2141886a40199eae18b85f018e3f008c08094530d549d1f8d0ce58a5da6fe03026c2a7b63e80487d068452e9c08f9a72256904bc18bcec2989b7187f3cf939392815a88c79d3d6d048b3d3ce32eaec3d7eafb80bace8f26619d2379ecffa5aa9b28d0ebabd1cb84a7821d84258786ddf848ddbe1967ddb468a1b46069be93afcfda5954347da7bb2f7f08e3bd437c4a5624ff0be33ec8b686a921d321c965e4ab07e83360e5162e9c32dc5c61ee90b574fc11c0aefd4275d4276191550946f4c82f987dddd196010bc4cf1c1845916b39243306c6671f3d108defa5ea21e1b6d7740baf792a94a3423f966d0c2266a7991b3d0281e0f09f4b54f4fa3b5c65e7c1f83ad37ded6524e2e01d074456bcf454bd58a7d9f8710028cc2365121847d66a79e9bad113425945ace77d6a10e4b220eff291baef1e5835e5740bf28f9fc77b4e349d6acb1d2f91ad3b92f48c8f77db3108a7c433b82e7a160116302388b728f6916ed695159a8eb3a09003df09746eb82798d2b58165764914caeb19849fd735a448bbc96e853af30f2814dc104abadd45d33bdd81eecf9b7e0235269d1a89b56ac66427b4e264101a0a942c2c45e9cb8217a65da0c456b6f2336149f4ca6c62318b0386a55ffd3ebc4bea11c70b200039b42b61f8ceba9961b83a4741d93368132a0b8a3b5b1f65d8e44d1b4e551b7d76eb3f0df2d9934588c89454f457d607e585b94c591442d871ad6ab758ea16e027fcb6df1ebbcee98f2f9ba3ea93c2433c6adbf514182d0a4437db7716cb3215a3455d3d86eebf1faae631e5024b0ec53e6cdcfa2c6b42143cf180da25fcfea94065583d80255bd604bd138f88cbfbc55ac6309394b6e023bd4ec912c5fd80cd4df01f4977a87a1dfdd544f5322b9809704d99ff3e0aa039691742e41ea79d32a6ffceb255e3db080c979d88a7a86f66c8de3bffe91536e41d46136b896f0145469dd641d5a68763a27d022f0996ba771ecbf8c5211c3ed483e382bac09a4ad9ebe1025f85908ce18145f71cc65f0cda7d5ffa9e5d541c84b6a6e5549946cc940aa3ec5e9af9157fad35038c3e83a61a946aff3cd1e6587a06ff9dcec6528a790e4748d82db8d912354f7737654a3cc04c7672929d354ea65e5353bb0365ffab26470cbdcc7a18bb39fa9fa35b4641a10508743cd9f7737180e51f66190810354dc5ece5d58e7a3a0bf14350eb0dcff39eb2dd8948c354a410fd4f26a2de476d97bd72a29cd6fb61540941064721079afe70d1dce456f891015cbd14349ecd7ec7b8cbb475fc0578ea815f48448aa0755a399cb1528bc20ed17fc8acd8d3b22d0560dd4599065b9cf54daf8ada041292ef7aa995da2166eafaf10681ba25a58e84c5259c999631221556bfc238c40007361c296ffc696adc6ee20188c6c6413f4a6d89b644028022f8eb24a4062ed183e100fc6b761e832d3d0861b14227a517e58391e0ff10ab78cb1dbe08e8e7d9d740b9daacb9d2ca779ba2f5171a5e6b359843139849a8e699ba9c5283e77cea42c1d12cf7a6a49ad89c8d135c2b32a9b2e90a9f8b61fcafb5198e3cc25daa2743a976a16d374f31bb4e1183a749eb5c559c3fea5f9007b3bf6bceaf7f4b64e70d779deb669f4a32ef897b8dd74e87790c14115c13f412bd7dd1302fd91f0ea1922a61e1c28f3b2654078648188cb86f53dd7b9a0024994e351c43afdf6e6d98a117b617f8360c513e49278e153413d0972b8ed7b3f0a905e83ceffbd75f781bca7e1975ec01710c439fe9b19b5fe311364c3125c00f65cddba494c5509eacfae5ec01d21c1af1bc5a15ab9eaf3fce82935ea44597759661df973e01f3ba8ad5483fe00384250fbd4f6448463ec6e990d5e9d787eabccc20b0c937e4cd4f194235d27c2ece1048453ee9e165d5a459b6b84e0077374c984977313c3c7b84e27887ebfab29a857f4ce147b87d9e8b82837dc4b88789b4b6590730c80adc41b4e083fe9b9cc71d8aedae0521b54b8eb0d856364fa914b8a17595f6b31a2b0b86d61859e0dba4e38bdfc8fc3414116840705566f8a7c73a6352c8f68f2242c6d802f24f25f9c4ca9453baf9e5143faaaabad2cebf1915a728b7b5f92c3762e15fafe2a63c69d79024bbbb385482b24c3a2b8a160c3df3da549ea2869835abc2c77419349875d8b8f5d284b59148ece92189255639431eb020dbfff425192acdf283a91615acf91aa5a0575b875a1cede4dfbd69cde3a564250228ead956600d8b7599391a85d314b9359d8ac319d7e61731c5ce9114e36f679abb8799af6e5ef85325096b0ceb9cf39b05313c8315d7507a63336dbd2c34a5c2e6780e1ee07f577283e78d03fb93a389230d95c9e91147d1ab6d34e22b4d0f266fc779c4e6d488f265303bb945b65f78d864910c49b5a423ef644bdf82bd3f9f7bf83685f04295f48c0c50bc1655828c82386a55308e93e99be63969e5530a90687cc32a92ed758bbfacde4ca79b1b0ef82eb91b91e388d5c4e8d880b87ede5e1bad61b66d8cbfd7e0d4efc181f726ddb7c27820ef14393328ecf7cef2d77723f3aed4f1e1159391507768bf338144450eabaf07987eccc619a74e633653ab259da596bb1d2582035e37e0257c215500687e626457d7a72a07f3f1e118b52d582e16abfdca77b487b7d8e652c4e6469330746618d56d78a0f89d063b79b0eb47b416c0ac582686ed28e5fd89548a1729712a49ac36a55a206cc9820ac88bdaa881f169ace561f180f1b9aeb1b6cb192114773967ff542b2b79c1a616045b96ecb42fb89b48a4e0a1cf32a7a337b827f005c6e9335c504d5b60961a237762488c3863af0ef26835815a10ac69bd8c159fcc6877370bf4c8ffe40aad9202ecaf58974cb5425de723454f6ad5bbb752104f9419eedfadeefeb1f32162c9a0dfd04904368358e1e0088d6c5a92e2a9566d6e5ad145ffa700967d78b5430cf82e4e4c3fc9084be119cc2b206eb2a4abb1127eaa4ead9444de32d3740f0b59a9c8efa4f010fcea6efcc5e5614a5119070a1e10b82239e4b98893759f0bb25f027a9eaa62ff23ebf7ae291494b84b9ab85e772aa706e500ad3a72d88027d454a2076aa2a1581e856374dc49395213d9e7a7363f415a508d85a1316df58fc69725de1035a0055cd1c0c895a5ee308859e94e2d1628a86ed4014832ae67a9728edb3f84cb0a8e6fc7f5a6e6419cd6487589262d286f4cd50cdc7710479a8363ab4f9dc74c906105623c804f8ccad7737bb196aa7f9a2c669916e1debd7cf55dabbdaedf14afa87856f46fe1debd5306abb9718050c6c19d2ac583f34f7b15ecdff7d3b3814b2fad42ee35e06c6f314b34f1af9f1877d222aaab85902c745307321d0ddebd60a5025db0e7292d711402a080ba1f04881469fb13c256e3914d4d045c01439a0a0dba8598ab933b621c7539e819828ee13a2162ed486dae06f7b668f4a876d5e7ba56b18f081d0a577783c994b7bb5357fe3532d2436a7851347316dbdb7cc7e9281cdb4f7e6551ea6e3cf12240d1ecf2a4d3f0107fdf6e2322cc8f9bb5276784d1e2f191facef393f1ad97ef67f050cdbd618919d5b9552a115fd9f9027f4abc68ac00f00b07d368a09d04a4a4ffc093a18c7b6ef53a24593aba8585f33856946d717b39419377f21625e5cd8c328d0853c41d40c6cefdc5d6d62830bcc71f32ecfd2f4ccfe6bf2cab48cecc8057c510c84ff5d56684d547114616ea3cd5ce12eaf06d81c6f036e638530288ee9dd7e61dae7aa0f0943f225b4e0184bbda2067ee6b132ed7ac4638d725b9722f477bc1131ebff05fad644062f395589224195036515e37889746dd3c880e672ff7ee6b0af98f0a68bde4137c82ecd147469754199c20cfe019a9eaa7f1d916f4bff9227b7161edb64da0b727bf901d0a85bb2b7a5680ec9889e2a98322d24fad313599b103a22d8db11671e75d54f4ce0f71699aed2eba2c7f60142803d21d55ce7c5b2f2580152ac295f46d38f4569447871075f43b4a3038294efa4559df566034f1fb1b0a9cf514550b53f949adb5b412de6adc3dc3fc6e15acb04db048ac688a398b7a310b2912e48559ee955ea22059cd5767842e870cc0e9a49704af13f03edcd41a96cf90309d30e59e68100c86c5f7fa52b562fd3f71f882bfb61a5a6d2ddc5a0398c1a523c56aa37f648b401041a5216bf189a8056c96b3b133dcc35c58389f4ded8466505ee86fbd839ffb16923bf42c2e09451c0933a34a8cd30ae9865878d78dedebda222e42938629c8477e3d77984904748d134cca4068a44007b72926c2ed328590369bf974e0abadae4b671539d4a3081feee213e536f6b370fafb530033404c91305c778a3b1b87570e4d8ff6bd1c8c61d75c14999750be8c4f0e5c8f965263af0a17b440d629a64a03695ca0b927b956d990860a0ff45f5ddbc7ca0ef6a6806373fd6258a1e2b17f9678440e5f74a53f85f71d42b28bd30108b7e4e7a6e56880f12c51a89cf9503a9657846eca75c9c0458a349d1d6c5a17cdf7238f35426fc74bc779b626364996402988878c746dcaf9237ae60f332b184f2f6715662d32b30cf1755eed59c8ac7e4ba96d39b0a0ffd42c3a8ba3c6ada0862efc22ba880fffb7a89116f53bfe2a2390eca45f3029cf030bea57f7e3edef1dbe6e8f4300bef10483bc662b26f2d8ec7098c629bc7b1341fc0dd905a614e174f7fec8a09d33e108a20f9b92d786b934f953a002258d890c65bf129baec4d8ba8c36c7cdac958111369e11ecc23e01d54330378d9445a38dba8c17965d092ccc62c3ef74487cb80c6b637cc67cd7e7b1d922e4148bc779206e66d3cfeebac40c6163318470506e6d22cd7c6af9e4d435c2c4a44c737c63dd627530548472a13a459fac3adbfc62a0a4afc8d96b1c80b2c3931fddb1cf9aa0b3722e168ce709bffa49f57d8604f11d500ac1f44161617f5edf4f173827f0aba1bf830f8d44ac06268173309350aa3d1710be6f31337e4c068e0f146910003fc26e30b985b4ab255dcbd4e28afede46b9e862a6cb41ed308a4442ac3b5c9cff4c53a0e88dee8de96e254ed4405fd0e9b0ace3d43b4c865557cdd744de0e96d74dce6a3564441405cc8aaa51c84ac5f32e153bd43d56e426763f1af01ee96085117ab373713fbc6a35d432364ca89da7f8b652597b6c4901ad73b9ca32fe4122aeda6078d0284e82ab1a4befb448b66aed9e84f46500059960c01e027d41eb006f2b03e6b84cca990c48331ff5cd6a938535b237cf69716a3641b415230f2727508ecb710bb98cd5a2d03930daed8f3fc354cac4a3003babe76f2313fc4f6e8776a9118339e25bc31e65cf0995fd3d6faa58e64815c2a4b2df2c8818b10b411ef2fe0f6991b647b7225d9cbbd6cd4953873fcde874cb490d6d62d61d2b76255faf7cc2ec49e0ef6b1549e3369392471b8bb948892b1773b601a41efbbda829567ab8175239ae3c7cd3c316e6dc073893ab83e33d8e867503022f262957655677c95b2b82bce1cb46aee14fad426183e90d85ae8eb21caafe74115cae0b2ad363a12c4f6c3d3ef1119dd039ad4bc494de90626d14754e23b9f5c5e69831b05e4b73521cfb190e00624e9a8c7ea102a948ed9821401f0131d1b7261abdd28d026e5cce1cc636d62ac7da684df0d95d4fc7b1a8c875b02b5481ee5049f3d235a33104709ec546652a743331f2cae12958366c35dc0d763f70cc5bf1a2e3d6b8dbad89266f5a5bb6ce7ab99347a518603ba26041418ced6d3fe9dffc489f1d5abfcc5c14b01953a1229583a9cc0013cb386540b1d3dd8947a0ac9ebb3b58ffd1fd6de4b8b952c52868e9c7c0494d97267ae9c76917fba8ad5d488a93a2a6c76d0f829e7ff576678113e998fdf5546c80022062ae37a94ea572902fd35b7628892156349b078e4f3ff6c9f013c4a347e391b540a3090e679a9a898e2c9a36d4bad7ee9191a2c26321ae7dd0f115e66840e02a4b3f8d852e07eeb83327daee49355c7fc75ca66a304ddb81780237507f6bb50c09d61671e7bcec90d3f2534a3ed08bfc7e044c61d1c858e75be37dec50379960b87c6d84fc4ae37f094a6312b58fd2a1d791e23d12c5be7329daff2975ca8402e82d4c13837e80f8b4d629cfe2b094a5c5a5cdd609452750cf5e823588794d92107f6668e467d3924cae630c79879d461f29afcdbd6653a641c7c008c057f72eade19cc25965db111a7faf8ee6d14a78bf89fd36f1dda465c97fc039015905b6d24ffe691bea4d413c8773c3a95a7d5de654abc6cb5f10562bf800a6b38fa33c508a8bba465c92416591632a28527de4554e56e2f6af6433fba39263dce1a77dfb3842509600a221e66797ffb6aaa69229e6a5400f4c757f6c92f8cf744614f1bbb1b6c1fbbf5481ff6d601f59d61c20d0060435b3e769a2a7ce763072cc30311d90ad5a24d326d2277160a0bc4ff1916f8356790e4cb8707ba9153f85a7c76b0c21c956ea2a4a112091ce0748670c7f57fd84789eb1aabd287c7b334a3eb64f84e23528ee29db683d49ad48a05182f82f019f079683e4b17790346d8c6e2fbc730796ffa164e4295b95d32163de4bdc63738af103031d66082afbe4ba643c288f3a593336609ca1cb9f3c0931e36611b6612dabff57e3bb992639d9c4f33745cb24aee811371bf49509c61de7ce3394ef03a7e77d087bb9b8884e43bf0ae4026ea902b72715e8a8c1253c23026029f77709d6b3a55f6dbc52c035993878dc8193233562a8d1d827a9772683839fc073ed67b991ad66f1f8094242fe78514a90e87c91745ae210dd956d20db07a47d59528d40a3a65dd700893aeed3a2529901e845d57766076bed0e9aa1b6527eb27183537f3e26190d97c702800eab5d88a36cc5a46a28f44cc99b3f698bb70f16eb7ed2a4811c7b4f312c46949861e7e189fea0a1597d22ee83599f1c64bd90b82f6d98eaf18356348737be5021112e0d1d47818214fd75fec4c8402c78636d23f911c38a43a79565e01146fc06f9d6ab95af896fd525d4a2c6acdfadbf39d1e17f91821beece896f34d646d740a583f5ac387b83b6a206f05f60debd09c9c0e0ab1d2077c68ed48128bfd68fadcb697dedc06bcd2e1eba431786f9cc8a270f4ce76d075615f2f2a56ffd43ed53faceb24418c7521b21e8e1ddd78ccb822c379f60cff6457ef5888b8f2b60458ced194dc7b3ed2c43f7dcabd1c6f3d0f86305ea37db5109f8a7ec8dc0e30b54e733c52620ffe9babcb4819c4ab12429ec50a38f27160dd2f0408fd1cc1cd93c95f64ddc4e49bb46ae1ccd4e03b804a1fc34790cedf8598507df14157745f48f047bb4cb4abcc75d6326f4b8a6de50d00ca510bff4ab3e03cd0a42b2c8d298a260887179b885741157cc93585fce2dbe550d74147a873a9b16badf32b8d120183505f397f3ea4944bb407765db56064746290a8d3a3d5d9482ade38736b949af1bb8255f36c2178dd2bf6cd663cdf11bda35c0eb5b0472dce7525a08953ac4c8bc114e5e717d7a2aab82cb81ad1a45cb13af7868ebaea4748778f46b43b3944959d1e4eaf3ec55a3f47e07bf7a5f30402826b948e964c72908be8ead8baf7c24b5662acf548cf3768822a592837937646eec306a35ea8a7f866fdb30a3db75a6638da2fc8bdc915a84ea319a8cf1386c6f926a89480ac5aa2aa267a12222658bb6ca65cbbd2cd492c5288c2a819e15715f7284206be441f603d60357dc78a64a63db9ee9fd0fd41580fcb783cf3f91b06652136428cf6b7127f9df7f54fe13538ad138939d6dbef95b3db70a419748c104282dea16e6fd01e0dce93044073d50ea16e1f4f7dfac388e437485502dc40470de2e37c6b15f4899ef58f6448572831c6d769b52874a19253d4cdfffdc5aec546893d5636c97a2955b37b2de60ded4c0fbbeb08fccd7b1c0ee2d35492a6475ade46f3ea2d5d5afa030db2df16dbed60146e232d0909abb4a7b77d2d128ccc11f877fbe866a93a4050d349f2befb6a76cc7ee0d71d0f115504334b4f5aad87c9e71c159676c05f94576758662142240009b71c59538d866b82dc61f236487a8137f4f87ac445abca222c81857987ce8a2523c12a2f32417c621aaac236d1adcecdcf3fc4237ddb49f8cc41f7802c3f2eb2a897f957e69bbe45988f3edbfed8ef9d87c929cc22a16460c8a5eec8cbf267ebfa87038092139058a63222a111418d19cfb86f835896d1a6fab27d1baab90689154df19c86072eae5236b3b8ed7acaa91a271d4d8131c036aebd9ecd3f097f1903128cad21bb908b4d823f8d8a75eb0ea0612059221f7723cc20964cfc1901888fa49a95c359822c28df0afb8b24b1c47ecd7c877211cd7f4ee8502d30b7fe7d308706f71085b5b71aac6ccb00f90c8201de3d010da6d78fbd933fe5a656eaf8cdd809539a19b0750b19c56fb5fdb0c74e0f0dc1f4b6502ecf7eb9db4fb3e5af4f25b0d7589ea3c73cf3db707b06ff53ac8aec2c1e41777f3fae0ba6bb5847195bad344d3796da52f1df3479faf2f3e1e4ad20029c5b8ad28ffd3fadd4d5e15a304fc74c5a0d20958f31e90e9683a57d93b3c57411f1b50b7e4ccdd783c1e399c919adb602ac42d5e84fdcf0be88c1226d58571aad5f67089205ff0fca4b603d5d39eaa8d8eadc44cf6598fd602c4d28fca03b12f77cd5e16b224c20ab7508bdfae60ebcbe87da0fbc4a03613b276d1a0362ff09a4034f2b103a741d4dd857c7b72141c28498620c6e81895011056cc03fdd88695c4714398604ed558e8b61d7ab858cd4c5680889484b5cff0c482b16caf0add832b691343965cad38acb6fb7f61c53f54798f6a98a3e02344cc56b43ef7d41cadcd14cf6c745effe48cfdca85923336b917cb477036afcce506623edebe9c7c3412d6187da6cc820df4515f5487cba0f4dd63ce9763fec3e0286432a6993a4321e2c14f0ae86b2f6ddd28868cbcfa34721423eac4d0cda37b20d2ceb532886d5c03768486eb82d26e17c58094056502c18b99de8f1fb1a2f68857567f980dad88a8970b3c215e003ce295746c3d91779044e3ac5032dd11becff516e359edf2cc5ec7d181ad90faef5f0339daf79f5dec45ef1f55753bdd4a87ad7af9155a79143ca22b3b07e6b9c990626141f8230b43932716ccd8a65c3c43ee3e8b8f1075ed9217b91a2b751b7761975ce0b9741d4346a37e4c6c4eba017ceee5a11f9513431e240fe9d6780f0c8503b9443552e4ee371771be716846477cb10cc0671ef4d1d975a80bb70d83182a8d2d3a50b176bec896b6f3899a0c115b96ba97c1d1e5d048807329b0d55527db02047873aecb509e467b122ecdd4ee2bb1ab662f24ffc5440325eeba333dd85c48534ff3cf21e0e90d31d36fd6b094ab8dc7236c7d69c6f097d13ee449ddd694729228c416c74afa70e37f0714cbc93583f7b6a4d85877b4e7b9c1606e88e8b7c54b89126047b28c8dc3115bfd0ed236056610d84bc32d8884e90f71519512eb1f62131129e8f56d28cd3645cf855bbb824b75f3143007678a17ccd20b23b3f461dcf1a88019377202754d2c039e050ecad4525808ee307f90528c09f83f82c000b6fec5f9b4cae98c0a35f2d7603bd148db29293d6d05a5849037c839815c5e1a9e6b5ece8023bc7930f55fcfc6870b5ed2e15bfa4899b8360f2af031275acd14eb4bbdd4c1cab17f436d2bd2f903ba0c4a9f46072975c062e41200d689c2ee9c17a3ea58326e53ed8f1e741673db7656fdde29ac7f1ab7c49011d1b4c216d678b9297c0275ee650892cb21b9e3fdd8b66a607b87ba7bb870aeedc0a6c6d47b8e31c63bc82cdbb492042d9c26bc2a6e4b678cab340cbe63e529d5478e94eef4a23022cca6571aa0f419032ad185333a8547d123314eca5e455814abc5bf3cb8ed63099f25a7172c4353cd281510c79a0a046966acaad4282b291825682c5b9265812d84ea6efbc8681c6f453fc04e7ecab551406259fcb1ab85a4817d93c28529cdd8f21b8a16135fbf5cc4f2faafdfb5b446628ec645f1fd5ab8177e5b3a9072cd38d34b6dad9495eaa032f50f311f56052f75801a74aa91c4d60063cd1a4e8992be652bc67efd4de096c5cdf9cfcf65eba73bf190c4b1cd5180ce707f83416669bb99390040f2509d06cc152c39e93f033a65bf3894bda5be7404dbc58bf41990ae8dd9888b4fb431b6fd09bc52855ce0763efe9ddc154437821fcbc6895417ec3b179f363b6b2bd5c762fd4a3c26af78b2384a2a0cd03cc9ab84494fca47902b613792c638cacb0e297d90531ab99948b7a116e7322ba9a89e02bd33d753f7508b07b838f8e6b41e7a0085b57e7b728d22dd8a1e8028e33435c6cdf76a27f17a5b3439480a10db61a78cea89b42dbcae5020279f197f1738c57e2c2ca98beb3f44f763f79722f0f53ee2aa0a6618b1a65b2ae912e6982906f2bd0f9b6e848b8ad4b582436250670840e76aa57e590d324d1420cb93127aa1d25e19cb0d7b7e604ad0df418ed709426d7cd18741dd7a4c103942d1bfe2a898115d9d1b4447ce4ae237bfcc159c389c1065693992dfe3d10b07d9dcc0296a55701d9414f19650930f158e7f41c6e9b66ce88fad2141c06ac7d7612f0d684345eded0f2b0d966998a20bb54a5370ac11968ab2be473482fcaefc466a3eac95457999b6b913a22380653f5d5da98767cbf6255ac3b9cda4bca871b5d4405435df7b0334c19d4758b6ff848fad7cb978a86dd68239eb09d602ecd60d5f545fafb07a1a3a5209ca4d5ec30b3e7af6ef5ef37ee3f1f9ffa6f42576af1e5e5d5cd63110974eecf1a25abcbc704f66886d22bfc72e4669088a6c358fc36212ad8dd5877923f6c67f00ac4e736b94c0e2c3e3ee1c8aee697bfc13cc533fba32376f7ffd0165fc61a9a442b4629e50e1ff71dffd9c38b86a174114a1201cc815a6bb4a926b075e7fa163652f5e228af03c0a92e6e348940cdb00a005b93bc9ae688b78119a77b5e24d436fcb793110d587e423749a205fe3a7ca90f620d4e4387881644874d63c123beb04f4facb99e1fea2cf91446b3144bcecbf4583a0b52d20771784373369ae97059b88fcea816143129a6b3c4e37b9b50f76c718fedb8e25b2481f02a68f621c6c353ad8f81368a28d931a8bcabf8caef62676b4fc04aecf4e7cd8a5cc28894076c0d4450211123d6a09a0bf3c261105e6e467dce093b254595f94b4f07cb85941d8be56154656d8e65dab0b0c61b530436816c47dab26b62915d3e876029a8e3c3b46040b9ce9e207c9faaec77269477bb6ff8610d8e478058d6cee92b4f8d0d0a2c573b8439dcd72ee67e89afc624aa7b75273e2799cca0cb53b5a8639ef7f8e6fe50f02f4915ab9f19d74135d315080aeea8a3dc1430106ef1642c267d58af874ef5fb7e26bb150c84d2fdb2de1fdbaf924e4517619e170544cdde44249f5049e3dee7e59272ac0f462be27c6696be7b1e409065cae6a2cd508492332e74989bbd4071b0d2916836c97fc5dd6be8cac3994d3d8048ae2abc4797bdc9192b86ed68549eb5923d7e2565c606ce28320345bbf2361c9d256cc8fd538b4a525c3a56b0e636880a6dd77ebbefcec0154dbf565266c2916c84a114e876f8f9af9941ca32d2c26a8dba6af74eb8e9cfc7d827a0ea7b234d517ab03713715e170eacc6d5f19a96d6900d31869ee1741df09367e4671a747abc8d355ff8eff437cecea6a1fc8c62aa19c7a8e2dfc88257c59c69f0cf4e88d0e89bb96ff8dbfccbf5d619e8367deb727571a73d243b460e57fd696bb3db13b4c3c3025287c43f271048e21476e90dedb6c5d3e2562b34492713692d49295b654c574577cf6a86af8e9c20baff15650a2ae261c61d5d39e56ccab0a1b71ff1795f576c0c6e81217b6a60ee19adc14e88812e8a99fb9a72392be927f343bf1c1eafdd78bfe38259a3491380c0db8d4b75fc19cf4898b8b78da46143e40230abe42d6a100ed487bd4ff0a46c1f628879fbbcfacc28477f0abe19f317dbc9fc954590e6330fcab1c613830ec908dcb2016504c62ce56d86a579a7eb9abc3d224c04210f51c87267db2a85c77938d5c4bac13d89f16aed74bea36109534bf89cedc70cc9c171aeac72fc23bea25555ea0c6ba134277a1ec918f54e979cef66ba0ebf1159a2f935cd5b904ffbf6642596b65eb7471abb51c16ed1f320ed19c5952b4aac51330cbc5c366185f1b96bed66ef0eefbd1f6813f3cd19fa1e5b8b17566f689a96897f45bec1ce78d1264f4e4bb81ad5a31422e353c96f0f895093208d0242343a1c2bc0dbb22bf051c1a260551050103b828456e28f1505137ed32d38ffc624180a379c855d0ad0f7c38ac89dd862372fdf8a2e20b88ba491054eaca2839321ea6c0a73bd3d6934b0c8cdcdb3247f5e512d6796cb0f0073cdac1da8cdfc15e04a0bc1e5472a467746c1784022c98d5c5a5a320973c8e04c0acd0fbdf3231c8e730457c19ce0b89389be095a6d585272e69ef8e52ac64422a5504154cf9836383b636b1ba05081e509438e42ecc68c9fabc21653a5d5ae4361578cac907c14d6d64fa756107cc04d3b5b567f482009ab6bf2ad479b360870e113e0593939177787183c43484adf87514fed63ca345f75b9aade141c0b77b72e4ba9403596cf57c75f7001659069c36928c6bcabbd845e2f6ebd660516cffa3ec4c9041c026ce1709a6e6b77a81c0305172b0363e68009de02b1e261acbce092dbcff439fce1af174c86ed175ba902228274d9e5bf648fd4d49121ff53f9bc70ab24ad7bd3f938260c8b915d4bd48a7219248323d20dff25f0a15f14ef37ba4fac62c73ce015a2b4934c38afe3f8f3dc1a3acff439e4d3155032538616469db8e10882927ae5d898070679db0dc9f84c05b21baf06b12b31117741fec988d85ed3b57c01e4b45133e03f3fc0f247a6bd13850654acb58aadbb7fc8258ce58300ac2df97504006d1cb041a436663c0c41f56bc67b1dd3bb6dd597373d968298e27b54a842a6c5c4915a0fb4a23c1c949a6740abaad36a6a2b05440640988d71d01d848fe3adb46851f7a0618cb387d1bab4107594412811c0045a4f97d322369575600873b5a2519cde7d416252dace9ec85c9997b9d17e0e827a0a93a3bf94edbb792a02fcadec06bfbd4e8cbbbe2c2b06f3e9b9db0a4560335d68c4fa61245a1cbed72ef9e3327a58531d950a818f9fb74ade058dc5c7a5ed7953b7277d0e91a16e3a5f68d8d93469df1b5f4e2b71251566d7fdbad1efefeba4437e429bf2c8e563b922fb3d2c2843b49246b5169836694a42a4e1df6cc4713de2fdd68594a009b47a25cdb507c8498044d94e18b291d00d598108a2ec29dd23ae4d8d66523730a979e1f619a81d70973f172f3e53d4c141d3f09ba44a48fc37a2c39ad75f383a15a1f0a5b5a17dc63bbee309ff43cd870c313a7a631eca2561f533f07a6a6f1eff1b075cb9108650ff7a3b31b1c080848e461354b3e890255f3581d5dfb5987c1f8b2a71ea43dfc3950431a9c4909c444d00db0df162ce9afc381e96670ea2185fb608ab2f30a4094c89804306f9680f6b50045d4fb6c997418723b725e59d1c36800f8d325bad007260543e613a3e1cad5e5e77ae44a7f135db56208f875893be588e4bf975f0831f30c316180f649897dfa304b0f6c3f29a548b840443ac0c7b623f632987e078e8858f0d13056fcfb844d1081322cf5e17e2b7b83f639fec270260020b0855968c356758cc77b0afa705f03a71ded48e6a42fa0bea6a7aa5ad640d59abd9517d752b34680cd669069f0a0b38a71a5fbc320a8d3b4a57dd76b8d5bcac2fabae6f378f46d9f9e8b62da3abb7d37f73a00ebc9a01f61df46cbbbf90ba8830d209a6cae1f56d5f40eef9bd5d601de1b2ca0ca65573e7765923a2e2f0ef2d4e739f74bfac9b0371c402fd0210447dbcd516d22d0d49d70e62e94490c62a0907ff63064dce5b1d9ef230766a2275f01e1eeed392f2b88cdc9a61e5ba4a4e62b7373d7dd50c446b7b7836f537ee7193d13e474f7e95f4475a853e0b2097f592ba347e95dcf37b563614553343f8d9fcf9df63b76c159006b71e7180f305f7df0f42dbaa09a416edd48989ec51d455a1fc267d59acc5b844b22dced8f95742ad198d37acf80c8d4307e696e095c963b9ed801c8fd7a2debe8bef3df326915fba4503b26b339e16ff187f3c625317349a64ab6065f8ad1b05e1b1449804a069d2415c9c456b3e02a191ad5c65f18bd10042dd24f05ba3cb2677d4ab5273e6bdfb8f15d6fed8473ddf94e0aea6e12d1a7f1b28d75e4e8873ff295a455b1071b3bf7487d7e85dd1679dfbd23f74f915c2d62a99df8066c2d32b028b39e4dfb9f3fd0c39b125e43b0f5bde9d3c282482488103dcf69e7f54c543919bfae7122546eb06500f23b6c1152ca920fd81dd2b07222b39e2eab10ea2efd16b93c5cf2160ad72ba54a9469b14e9041a109f8259acf61073419881f197e679be53b47ccc4205e97693270431792701d1706464eaf8b0bd6899b266b0e6f9236a3e47208021be206cb551fbfa3cd37da0769530cee4dc4fd4b0ec4dfe8a451869024bc9edd8eb15fdb79448df0c24d8c9f788e44eb4ec2cfba55aac83d6af40badd3c43e2f7b8eb735ce88a845b7a8925cc879ddf38079ff7860a5fd06a865ea5b9647011353e3973c73fc2e1711a370bf20a2ef1ef40c25076eaf2e587f64dab9d0b1d80948af579f787fef85830e9168ded842fc2ec3e9d72979d27af8c1eeb1e1897c95d1f9dcbd8ffeb9a2ed3b6d6747b9fd0ebf5aeb6b32a4791b62f30d8a550ded5501231ef56c5a5ed3a038feca34a66d84cd4e2cef4c34b751a9319d7fc23d8bd01a6b377847b8b3649181877047a21ac5cf50122b6922f0ff40c0c1adfd913938b40d03da7a24eb5518b1ff9133a6354c4c8e1588c08897a88fc035f0812e42141e3f153e3a63d6080a3eeb282bff9f4e87ccdf506d1157b6dce230d4ea9374b2e5fe674a52921eb319f4b05d7bffc5868566c93765f3cc76bb026ec7fc99f24ac46b5d32dcbcfe8d3e5b1f61f2f3d76647fca4c972398a4ca75f4e7fe9dc70458001f23906a0b2063eaa2925a22dcf3d2cb82d5180dcb36bb5d62db7b0ccbf71310e5f81ef8b8e7a04d2f2a9bbb07a813e6cb7a601406cdd6f937adf70a34cb086a6bc3b127b92054024b5f89f6ce19d386133da7aa9a11b6adc9a2811380e80dac68b255a56a34b8e737c6e50c1a45a406288b0ce8ee18b63ae1fdad262c0c7cf060378d569562638aea3255fb9b92e2eae3fa2e5101830cd33ee8cd8d841897c1207ee8017634e551320c3de2618255be0a9d40068b06176116438c9259976e21c1bd0f4adf1e82a5ad12d1ddc7beb09ea5eddf9bf028fd9ebef603d7891fea1d50ced33cef416d645151d3316c9c5eb3b0ea816c5478c79f8835f27a8a13fa51bb8df7d2563904395b904b95c3b3cba29ef9749851397f705a0fd7891fb1657cfed1eb9b6b1a80b55b86b42169588c39740353c1e66f033f78963ac1df7da437bb4c0940e6a92b74af5c665710de3ee1b52fb6648669d5765eac5bd15166a1cdde76a85b4528e59ae949df7f1a41b57b92e9defc5b706ea544b58b30f35642b9175764f2afddf18387e2f6d92f217645237084bc3266baa3507c0bd013634be300ee7083ff8ef0f60a3076e3640384a5d66e749f93d0483c7cddaf2476640561ccc199a0b7b5cfc10fc8312622e2feb765f4c5dab5636adbcf3a708999dcf6bcf5a868dbdf6687e9223cd57ba5fc3b6aa7e7dc0b347ef07626aa5ede00db1fc5f6439e180d54e5115259df7fb5cd5afa3a66f5727169a9f4e1d733d8a6d7dc878ef88d7865f18c8a748f5e667b8117ba3e36ae86c5d6c574cc0909a0d09aa539f1e95f10092075ee946dfda4808df959adbb6dfec6d5644a7fdd7fa64d145a100ee6b5d86944177f583a1117aa3eff5b7867d5bb9991a320273aee89daeecae0df0c2dcf5f0f4bcb7c82557ea506c7a34de477c87972cd290437e9c665fc566048442e402dde97fb420937a37b05f570b91b35e242fe2bf7e3b199136a4f937f5d04dad6ea0feb279c110001fc84f8392ff9f40fcf393ca249c5c0fff67a725bc46cd3d121c93bc44b32d352fc90cfadaab1f49e5f06f7254f87223b9e1bd4f99be741e102d361b9c53a6984a29e6e7469270b6c40e08d25efc53e94ef07d45ca77615455ad6bab021f2c37bb80e19845304e74dd8ec64250d69f51b59f071b22bcd6ba6a64f11285ce8dc9eb3254bc7c6f78b40b9041322a58e35401cc0debb450457902d3266c95093f83cc4d39c417551afc59489e0eecbb64b18afad642230329ffe91ae1278255b0615df037c1508d25627c2f5ed80850027132b86b69e3dc34495bdca3e16ee6f6c9e484797f0dade7e982e3ea7fe7b0b1794763187e4862e108085b0531eadc016a80dad1d7ba65f26adabf85ddf08d2db1cc72a2b8a995bcdf319c0d321b5714a4e36fccbe0cb227905a52a394c60a6739e8b3ae6d0563a8c062073ff17a79a02f5a3d9f7cfdc233313e1333d606d5ee6ebd4e05f2ef3f62971b4c5451248b9f4e16d6d5f3e85d896d1c6d2d620801661abfb51abfe4d439f9463148ef71e4ae29acd07fdd5cafac47bb55c307405a2bfb8e9caca68c628bcbd58cfebe0fc7ecfd6eda408c54996854fa6d8337ff3ad88caff054d553277d854be29a90f8907c50209351f08be41f1e3fcccc11f704f49f68c9862e44b5cb44ac6ea2fa9c6c0a484e66e2b199498917343cc2c701dd365bf65bd360d68cc1386a80febf099e553b0ebc3ce4d64491cadd25582b1f90644232a91ad837b6fbf81e25e5b4a89f154b57e2ac476fc879328ae478b0706f5e40aac05c6d9f44c6b23c2cd94a2db48717eaeb963b39fff805f2a4a38ab0a980a6a869005ab8e1986a6677b4d9f08e17f01bf50cb303bc71c05954fe755eeb6feac5084e5e3f7c93afa3920b7ded9cff8c13715f5e900f02a835e6dc469d93e0152769c4b7b123008a29514a4da3f1d658545faf2149891780a8db932c1764e9edb95a529c88869b8c1478754d4f3585f70c2d4d86b250a7dd6cc93847469d07aa6c45745f488ce9decd46c37bebb8808a47dc772e441d8373006fc652604dbcba34b94157bd3285942a5e6c3d6a92aff87639c58ca8196e6173ae92cf9f6e5253adf2ddae8058845c2fc0ce2861108af447a24861b4a70fcaf976043600a2d4d1d5f3dfea9c7b01c0c3be62e28fc8e6bb7471c8b0d886b289fd807f40e6e077f9c7039d5acc3d5d1d37244340dc43bf3a77e41eb118a9dc9bac56b2e0d6e90e643343ccd83b5c04f355b4a60c8c725f5c6c6892e2c9fe00f7ff0f122e9708fe0f31f9459dfeba4fcbf0c15a8defc578ddb81bdee46569f16c73e74087c2c56c3bfef0dd2b118ec1f10e4fc44eba562b8ae214678f9441f72f8c8b21b9b22e5d35e21d4e4a61943c53c2eb5eb73f0c023306c1d19ca279fcb961987d1924d0f48307ecc42e7b542b7140638cf6cdf80c493603ac9a5fa92108f3a17f7e258ee8b378dc29588bb939dd3ce5a1c4081a6bfd26ffdb07b4d65cb354120ae290df116828b6fc207d4c5f154b0ad5b12ff28dbd8cf9b413876b2130fd13d977d7e2238649b3c245d003ac9d8d2942eae741457ffe56acaea11a045feb9d94c4e4f82bd779fc13b8258ffd4498e6f12548d4b6fd91d99dcbeefe4af344f9c6ebc803f9d228e269089b600beb0c51c6d0a6f702db10c66119fc37f3520ea5fa14bb67d47e1fd4d2ec2673de6cdebb81290786ec1b5ad503b7350831062ffd8ea267d62cc86dccb381729db50cc0edc1aba2ba748456b12f26af3a79c99d9ced760cb0f52e79e2e4e5c3b6d708f2950696597cdec79960ac38c38582ff55213ac1a2e22dea5a4e75a6b8bf7eaf0358ae0ac0afa09fba8dcea92816d08ac49a2131cb7d483386f50a59774210412ac9779e5e1a6ec5d19093634c38e44b191f5f2cc097c64171c30c7b3ea7117375117958c038ea667bbe81347d97dbc74079db84ac9d289e910e524af00a8e4b42137741bdf5d889483ac91104e074d4eea4a7c0b2581ffc9ae7807fb151bf8cc2060bb83b45a86c30c58e0ce9219999ed558b61c7f4475687d8c5257f556898f74984c03444c7dd5a18980cc7964f37ceb9b5a49104c7a1e32c8c3f7eb87ea31e8c4cd5485924c4f961832faf31ca70615b2c8a8ce98b6d2f92682f775d06632e9b1c39608a3136a777d667a4a874f20c86f40d32e091fb67afd4d07be9f5e6494ae951a8b6c53a715e76a4cc74949384161ccdd9d4b42327902d1d328edc0c8e05ffd79661c9dda2684788241bc8527f9037fededd481cdcd1f63ce3a521bc6d7e56963002f4ffb3ff40dc39c832030cc17cb738ff33d409730a2d328b13bb022c96fb5831743243f69d831dfad4b5eb44d0fc2a8aad124047afd07df49e3d0861d62f9a6959f5da7934a137641576527efa7d624449f7100951456bfa26f8fc5752bb958c58efc9f0a19e38576e0854e915210cb4426f7156d4b15fdb62d804e3b40dffcbe61bb7ba44056b77fdc808956123634177d444c577208fac6681ab7a4ede313c08a16ff7f228d4f49b0c3d6a413231c74ddbacd4b748e297bfbb0ef18894f2b5cb09be52f6f3bd3dc73e01a15231f816096d9db90cd8be2cf53b8afd76c543473f8318bb615e418a4d752dffb8945d3f43f96197c413e75728bd4790ae188e0d08f8c40d51c340a7047aa5961e75435f253d92bd886acb1314e4cfbec4b699dd2620d05bb2d2a790d1d4cf5ef7e2cc384f68a58074121fcd492617dc3dc688d34c09829b55795c7533d7ba71b078efaa0b8179f4f6796963f8ad7aa09c9d540c02d6b2c1ba1024a714e78ffd3126bad395b04c5edbd1d00034dc8dd691db8cc3234a9f9fcad3754311119424b0769a7b2e4256f77c964043e5c7d15b3dc9d456ff997dfeb7b9b623b2c8b7818f873d37bb2fc6d15e9daba70b97c8f2ca551ae8b03c42a2f47c69d98a156c19d659299e4c8aa0c7e084e3e02bd63d9b14ff9673f50b7e4dc7963036013fe5e4e1aefa0e555021fe2f62c9d4bd5d971b55aae0ebd8e30cfa0090adf32332d65791dd23aa9d09eb8d1d6a153776081baba419aadda63bd64b048a8637134a2da9702d88b508d0f2ede64c2f4d2eca2254a35cd7bee1e29ac2511218d32fa5ebf14f87619d3b26cce5fe8adaf68df47f691d057315b4e463a629085dd44a7095ac6cdca3d0a17c3dcd75b549001ccd0dee757a9b53f601b0f27af7ac3e16a2f1b13e687e4bab1fc5d9d147095866a2939e2223b02eb78445f6feac0dfd80a38ad303d251428d95f608f8764e7254061c6d31832e0fe77ab8d82693815205c074c58c196718a46074b06e0426c3877d37baafc543c1961843e3d3b65b59d13a9f7ced62cc31f13e686665d9e3fa48f59a626c20440de2c14bf919bc08ad9a47b3c0667a1809e71211722b10985f112bf7195f4adedcd12c7295d1826593b1f3acb2472c6caec856559338171e1529de73a8829dd43ef1f14d135600106d527069df22a5c1d9d341da50fff9f54aa0ce2b63c38fa4b917143aa81395988118e2981becca7f003e7114c5eebf19710d2f2e4a806bbcb3c120b375b7ad8159277b9e82b23cde34696bcbf1fd5b2d969a7de8aa634a08f28bd28a673e3fea299b8deda6058b26f57fee1d122231a533a31ad1df8542623fc4bd1039c471266f4e817a51ba7bbe2a81fa0a764ae73647f1796de3388738f38678eda33fab224874300acb7b6045a668cb0578f6a7252002b2acddeadd032b06649cc6cb10694e7759aaf3c3e417acb934075df321b15db3f2373d57a218d0ad229c7d88d4ee520415515478df891499e703ae1179c4ed651c3d0c0ca25bab93be44b691b1753c1c801f16d313c83032ae0f246e6877c112560a1d73fca73d27973fbb6d55ac077262723b73558bb42d102a18b42314aa15658eda72c58dcb3cfba16236324419baa33d84eea7b3cade9ae50a5762696f69e2d3dd10335d3321f4f4695f5082a07f5d5c0bc66f21150d2324ebb30ae4e5c2212bf9d19c5a3aac1f687f18c560bf5bd59cf6b0cb9ea2b91a51e931e4026cb5e78202f4787cc02dd98ac1e02f5dc87d4500a4ab096d0c669f4aa15a185b8e6e60144b56af9b9dab2739b5f5d26df7f5c20c65621fb0433162edc0ec71852356ea718a0fda7a4bf5496935f7f79897bf607ead04e6d230eb42078e193d63e176a6ea311d806d72e6f3f999a0ea81b7af5af4c0de6bf9f598a557a6a93d72120997e0f21b11f0673d9f8105818045e3d900534d72431d8c65d4c6e19b3b7ecf4ce27505a8f2bac3b51ef8eba3d676018644d3c42c9e8de9d041ee4bbee8323e0073076cc671e424ad07b1ef3d345c45a395f199371abc90026471b08cff8ea38ba17abb4e8074d459b5acf657fafa2d28aa2fa38c882e442192936475594563417ecc91612f1c6fb70bbd83ffbc61407756f99febe04f6600e85dbfd87d0749735a2a1348da7b28df09f2b671d99157f0924b9a2b94c8a2de1a87cd7bd318851c401e5ad52a20e84f48a52248cac525323993e0d09f7029937f4107e97e28462ffc5fc5e01edf90a0ed6dd94ff43476a84d2aa9cce6c292fcfc343f3eecdd9520e9472a7f367949bc126d6e07c8e51d7bfbb4c61bc3fdde325054a8adb2249db6498cce54e464e4e1e4f7036f1a65b43d3645da8842c84a806d876884609f54c3769cc78321d186c60db7710f95a6167c9f2f09304b31f1c8c09c4171dfe1db323f63bc9622718bcdd5cdbd330b6633d702118e4663d9e2d9e18ceb8a5368b3a4494995a220dbeb70b67a70c66a054c597f64fb7ffcf61e26c9187bc9345096277805baa9913a792e42a68fab4031c67620b3429fa96855831fb4bb0589668747e6c1ceb2880b593df93f6b49d2185f7d77cd55cff4d3e0c42bdab4be023be5e03cfe428e32090ba605457391adccade1f3ad5dccc086f4dce4730d8e653ca9d62530a1301de1832bfc5069e7fa2161dee99f288fe924492f130b694b51fb0685b7a9cc6a91b80904a7d731e14d0177c15ae5ed4fe4225040582357130d344fdb7ea755ae0a4cbb84c2b75a1b9d8556119e7fa3d645c67c3f90314617f40a82d4f3eaf786ac3c8616e6e0d0f15710664c0949d06339620a66379aaed59ef580282a00cf9c3bceb23d7f47c10017cc77de8a89f06e2e480ef825664fbda17775d435b1c2c1c26ee6bd68cfc5717d9729bc71ed7448acade895f65110faa877064e14d4dcc939c477aaca94cda3d39b979245b35d81aa3bb4243b237efd9471cedcc2163b417032248b80511a2bace3f01b79204956a2d1c38abde5dd64cc58459ccdca38d303ae4aabda39c84a5259c1c470d2a9525c5799d2559865c43b8af60c5e92a4875eb807e3de418c11415a74bb3795edacd16e748c83c3a30d834220ef889023ac8f1cacba1a1f2413f75dd7d8fb07884572b102c70341619c707b0065598a2320532193c135501d5518c6c6253892f63221ab3c163f17702f7c3b8863a6236dbe35620ef55ff49d4218229c270984c4c0fc0f72887f9bd58016a83bd1361cfae60c25e4d5bf5edf81d2d7572e91c04f51b5ee89c2bfb849d80df333719b06659a05faaf6fe1595d50278df28fee823da77cfca8d66bbcdd917cb7ff7166b5616524a9baa1b67b2c71895f343bafa2372c125dff19e7320f50faec77dec130125df1f428e0a6220ae7375e1e4ed4aea04129816cfe867e267f6a5ab116132575a7ab19cf5c85645fc71cc8ddaadd8a46144afe9ee6825ebfacd72513621ee2460299bfdbf3a94eb9e842442a59d25465cfd9dcd9bc7cb3f8fc3645d9a408223bd7ba3ce0413d1dc899cdace1b8e74c5a6c2386f26579974250869c9e49606b0f2cefa5796a1950197b348792151549fefa296fc8c84a77b0084f8113602a8ecc66a8e612fe27a54c3a7b0581a206e2a565bc154a120f052b56b982d5d8a70666afadaea1e081bd174703dc3a801878cd70f38137816c163f73cb0bcd0883cd8526aaec0a42e88c24ab5e1ec450de195ae47abd35fea225c532433dc563fcaeb908fff4a8a38e1b797dd0d4f5c27066d90d5c2e23c6f3701a08c8748548e553255661413d825dc77ec496fb2df0d48881b20bd55fc2ef6939f1f11c69fc995566dfa8d1ec2e190f1b49ed43f3ef56c7bd0bab474256e5b32b0b11c2b17179398a2971d9518e09be09136c3ce5fdf20274132751f12dcc0ad9eeabad01fe4810b38b093bb4922cab899dac66edf282aa13be2754e1dfa93aefefeb50c47abec60e68290729a61738bd653a33dbdf8e8f1414e91922dc71125694cbe5206e9da2304549bf4f4c28e88c05ccbd80a886902517325aa591bf296849eba09df0e8e8d3ae91a74a6b8aba17b0a875d8966e50e693d57023b2a5cd923a40b4598a39e54d3d43930a5cbbf8ddceeff59118e4a243491e0ff15ef82e9732aabe749ff07c2977d50d6788ad2a5a38f24cd218575d5c6647d6a2d7a14c954263f9926c7ddac219d8ddf2926f7b6687999ea0a72c63076f6caecebf7de7eb0a04332eee4bd38d1d783be687212d2b49d994475216bc5ce748a9d5ad3f38bbc8a13c2dad4b20181326239fd38e00af10d3aca2e284db97cc1de2f2028a2a7286e6bf52e1432ebf32bacb3ee510a945194947c3727ae30ee21129fdf5c799b3d148e9f2a54fb87239c64c23f53a82da7544ee41bca71c61554ffca5bc0e1ef4510179654f02d2e8d0531e1ec0ae25091a070ef2a3e7a3920e07b042f146ff56c73861c28448d9af87d7052b954cfb5f36f7e064e665fa33fc8e815bdb27c1c0e5e8d27be66586836fb22604ae8f1ff3cb72c0c9af139cdc1ebf7b7eba70c9e81ee0226e5e485dffcf1e8cb4cb8e0fd51aca535ccac254612ce7915a3ea04bfde9e3a4ef4b130e4b89c2f165c232f2b36a62db15227691ae3337c9c2ffbfbae263a07222cd10aeea2073d1f27e7ff142533df715cbc7ec802cb10c3a6ec357d04ea2d9efc5fc69796fc4babd6418e4424c828b85d87cf7c864d795119ba32aa03cdaf47950926c76cb9ec18f59d0fcb26b684c24426226b33e2cd3a18ffb46dcf4ca489d65cc67e26a060732863597c48b9bf38c118ca54f18a441335acbe29cdf50fdc3c9f11b550aaab1000836a5277c7a024f2a4b7a3b0e5592cd32f1a2be49b030ac8799cd85f6f5f2002d5f9b0720bda81b040ce6769dbd18637260aaabf8ea602ce878313acf6b7af18a2f7b4ac1eaa320393f72a493c2bf52e6b39a3fa2fa2776f37b0fd9a397682dfe26298ff4d33d1f3fe892cde6056b16410960b3fbd5228c5d6224af91d69d5e4a09420996ca20215e03aa51ce5566941e642eb66983c60f739fca259181e8f7d203a3620d8a52cdde7fe67afffe3b6d504c1940815526b47beb52698d1b1342dc83f3e2844519cc2275b0df6c1d1f676402d4b088bb0f91e621d41311b62e6baa31d8d48e6c07c8aad655fc4f851c117f98019523a795045056e3fab07328c7019d6d39fa4de996883ff03eb8041b4a2ac33e95fcce33cd850e0c7e03ffed80775b0c597fc90d116859102f25777e7e6ebc5831133bbaecce4df483f424a9c4a140e4a0b2c23f2b71e35197b9fc4d7d99c10218ade57dbee29e027b621e8f76ada4adda0e23b1462b9a348fe44aee09b97e38e924e11b1973ed6f63a8cc8352a416d499c9dfddb213e45624be9e5da8586f79bc1f635c978ac52f15e720e4a11382cea4adb206b10c4f4247da2cd5444b43891f8712118fe4f6d6bb6b557ae381301fc3995a27f30925ca70a6100af16167282f1c197d02b4bcb80846fde92fbc1f6506cf19969be1049d33e28978eff36a43e27699ff065fb99771edd21013f9cf59568b2f15b758464464acb6b565b94058e7ccb45203ee45c4fae4ffacafaa243bd37bf9cdfd039ee7c9097d6e9739d71888b0bef0919b17d10f66e991db6c0e26f8662d906172991a054414b7aa0137ba516b449a47ca4daf6481e8ce014ffb913265128fd094b341189323f5ecef666fd0a4b4522ec4587b530372f80faeb369c567ca8199132b2cc70e995723decaf7c2d66dedcae0505df8438e5a73be68f580d43c8caa5c6068446728580e4f326aa3f9b559afe936b46ece03a8d24663cb6c8a5c202a1a65dd61d1a54bbd0df18967eb48b5762c98a126bb15fcd330ad822949f20e4a019e4f24e6e9d02d562d28e4a2a12309a213a04f09b8e0cb195bb37cf46d9d1f802850d8b52a60aef530b855d51fa08b4d2710e0a9c84260f51c7c196bbfd74c551a1a5e38265e3b544f6c004dc008ca929417418c3352ec09a58a7954c18644c5c6242ead2ba2e9c6632542b523d2d94c3d3d9f42db9879f82ccc9a5d2bdf3bd07140e93799d8f4b22a4485753d8ea93083cf3245ab3c218ac8eecc8e45eb9f1166bec356a21955669c380e2f26baf83d5325e85417ce30a96cd0c6543dedaefee3d90a08bd699612eb6778bcbff3e487aca173769bc7aa258c94eeeda08e0e45971d6e12a7182028e12614539e07ec7497eaeba3fdb047eea6f4edf4ddb7b0d0d69cc77554b30a7b1a2e39d71c5850aec6dec1d1e27840f938308cb984e0c98321e1a461c9e92c2c89d26474da6219f05f6536f8b832e302afc8430527f7c999033846d04c390b9b3fc823ff5ff341e486cca1aacc2315339b9fe7286317511d5d742dbce595ed619e087948ccd4d483a55fb9ec08996cc3e898e1e5fb51a9d6e66434da6a0fe32968cb154b6ce30dc5ae279c6010cf06fe27d78e838082b615d83193cf8f46480c08d3d0713f99f6436ca50031ea03b4d6584ac9b2b6aa0730c6b4a9ca3e7230fa6930f59a2b9bbe89e32258351ad1f40a52f2fe9bfe1dff055d4f80bafa2dcde7c02f863a22992f27ba692a1e4928a2ace4fae563bca2dd5db64cd152f3abda1ca451bb4aa288f90a836d752c7bb6ff430e40e20d50c680539f9463c8b06ded0949fd38efeca1a824fa30efbe174af834d62a37c52409540f53d5bc1e05c1ebfbff80ecb4ad20fee8838a9ff8f0a13e019ac3e02e20639f0f39fa0bf8e1e6a47248cfb0622afdc1aadbdb2bfe5ad5007bc601fd24aa0df5f2d8e9e35199d1cb26573539da0f3ed429f7d22d83bd6cb88d32626dbd39fa949b0ea0bfbbc7324ce22d92488a4aa595a12bb3fb436d4f0d4471fbe7017cca68298b2d12150f966d7054b4ea29ac12649c8af6e64a464e3ede0a24badf804ba44a8ec2d121643f52107271a951228edefa17d2e4d6560039be72322c5586c6845f8c6ac42663b39262bb6387cc009ab28d853f36248981dcee8ec27e0cb0fa71dbc1d2e32a0eeb72a5e940e32e2dda99f298c232b3f8c69ca6cb8a3631c482261bf58794e3c49cb9a80cab75198e8756572202ec5a31818712bb3020acf96992849631972294d405ecd867e06800efdf1b6d54efdd6fcb46b14c9956e957be42950e9bb5635ab1c913039f2d5572394f569fe1e267177fe470e9288f1c5bc77175b3c800d9f5a3a157e11822729a025cbb3bbd6a7cf9fd15e955c9f4dd6e91255dbdd41f329e22083b3970af07c5ec7df9cb1af355c03e00a34e394ca1dcfce8b00de8bf17f8a22c96eb984a1e0ed0a2729c6cddf52cd8afded883041d6acee3aa5ffebef37949b8e8c6126b6708756122cf6abef71a5d6d64007456ffa988a143dd50413c0d24ff7d379d7216a8a0cdcdc4861e1823fbd0d55123da7be34dbb3359ab00afd1c40c4965f3139289146307ef09b2533da33dcce1ea001082614335e30400c5a6e0cb64cd365d48e7eaf5601fc5fa6c1de012222d63b4cadccab8e19085c3b03813730dda1e3e4723d89b5d1a7af2b9121741e10b935359d2b54680e66af765db81d4f24fb84863653abeef572699da19afd532162c80523eacd90f74c66ed122fa4c2d24f8972e990b6e456d4b9fbbd68de2cb551058e1621d2a4cae432df61cda7b3d9e12142d70effafb744992dd3339fceb5f9f08825c1a78d829ecd258f8e32dc2fa544612400b69de2702ab1309b8fbfe0c6501edb4c62b206fd0178370d6c62d0b5efb418c8ce572c34c4273edeca71d23adaa9bbe28df9000aab57eb1ef749c7f51ad272d655129455bbf0fb0703e90b94a9fb3feb549931bb3bd67456ae5a82754dbc2d38dffaf6f7aaa58ebd12cf8967f4967bfb683023c4626118478d5f2c508ed1d1038e6c269059bd7c0c8f7b101b865d75e94acddf5d5d55c8d75cb91c1411585db14fbb77945950e43d43ba88171ab6c52c76b0e901d2c40be2238d7d3c16a825ef8df59ff15a3f816147803bcb3aaa2d85b2bad1a4aae8ebe47f8c984351e0237c9f68f5fdfc29d423b615b48347850dd84937bd785f93224d3d892d730a1ae417fff48f6e3d65ae4d82f8765b2d108fef6c0044dbab90c76a1291111223a703adbb4dbb5ff36971dcb5222bcc7f7af4fd14a34fe6446c3af58210edf42f8fcf8a288bbb7ca44a867cae1bb9d77302ded10db5d693de0637070bd2985b274745e2665f1eb4b3b49f866746f0f0aa60157886b09307c892d1462ed9d669ef0c71245ac396e337dbb5093bad30fa6db2eaaa79309c55fe64b5d6ab64c6470237b3799ba3dfd708f06c4fee14104c86b745b60e37867cde915e15ffbf9bbb0f153c969b994008274fff7c3a991785375303e0c24b132c131362417f806722ee337eda0df4977050060d0a5a7df615ce4a4019ff8bcacd3980e1028ba5c1cf689af83ed78dbdce96b0bbb47e274cfdda38762a3db9ffe95ae4f8f65f921d8666b088aa7cac86ec5ccf5649cfeaf8bf72cc970debe4475d3b4e812e9181481d1a206eaf5da87ee141c4c5c7b1efcca42aa258d6df8eb07165e6264866bd6f727d529b278eb321cb3b5322c792ffd7d16f976e8d1944c3b908f4d47651b57d6cc89cb5dc7886a28ebe5c17afecd7dbdccd8162a7714be3edc9f54cd5652f8d2614090993ca0be54f9ad164d6bd7c0b0e541b8318d24ef184e51f8ce24ba8dc8f5a74df902f4f331b8236c59af84cc4a7e736bcfd69938a01d6a3662fad33c859f9272ee4eb0dcbf81690de281c25b061d590b75afa50952befdb3eed093daf56696db5849e7a158594ae46c39f60b3b37842b6f1d3e9fa10a0bcd8ab5095bc60c5074e835a654c3eef090c8bad23112ee3caab007714f15550b769a09ee0db326f706afdd5ef97fd18a3c5b02adca1b1d37bb50613326cf2978e2d42955e8b74dabcd19316c65e342dc19a188c5bdbe8b46e1e9f71555b4386b79ea9882030f5a76cb72edf564b73232ec89d1467b6778053b0ed64ee73048d43b0eb0baa5b7f7f8fb10dcb2e2a967391fa66d733387f8826cfa4fcf3f42b8058af27d435f67b4828d4320aadd0e63ef5835cabb191109f31a14e8621fc967cba4b063850c614fb37b9c0e3a8b2a31e1fa3b52c59faae87b0d3953a0ca08f450d61fb3729fb8d97a7beb9fbd32ebc40c7f5bac24b69e2a8fad90c51ed998681c6e0fe8ea59f9218366bec9248434550242af885a94c7162af7f945d53ef76dca6807464603c93d30cfa64cab88e82b35c51eb74c436ecc90f05d89d0a46a08ed5f691820fa770c813cd5e5b458ddec021350757dc9756ed518d9919711c58ce55ffc848e9e7448ce573332455b772045ff0971e37d9a3363a6a26cc8ff7f7ee15154adc70b24563d752f7ee5f135de3a19b7fd6a1e33d55c386459eef91476d88efbe3ffce628a8e27e5be1b81c8407722b1e3d7c0ab16c47c2419f6dd0b6004cb4f828cc1b8a692f0f23a33867a2d3764773ba22582bb2641624160db122e14e9009a973eacc645b08517930236fd9cac2963329e117cbcbe02c7b783321306acc5fc1a4c20fa54b423165b898bb2bce167e7581630ff8acb223a909bc58c94cc87dc2270af0b9d02f8d6083e086797c77344f9dc2b48dc035f5f8cbd9b6f5af45fca82ebe911e081315ce9ad6a463b06b89369bf17fa567584fdd9f6bb74919e287637c295a0d3b8f171c844ce10fad8b9b09e2f1afe4ff68117d6cc80fc79ef47742686e84cb8f9704c8b80d6f10534d4dbc2a78d24e6b2a89554506c9f75ad9a80654c1fb3509cbe166750945bf340b998428e1c63c333f0193abedbfd6c3c954c8919bfdd451987226fb12c156596c15d457ff36b9655bcac96885982b22ca1ea393f1af6a0c89494fc15ebe94ec639f7fb14af21b0b861838a7364570f02dee4d4daa2f579a5d3312d71dea22bcb23fb8c97caf1a98f730376d424f30efaae0b84076f10e32c0bc3ad8adf326a037cfc4022a1c073505209e416abd6c210f0c3145bc1d2a919798aeac5b6cfcb9439d1860f1c4b6b4f5b52b1b740ed33b13a24f12e72623f08b3b84086540d09d09dd056b7ee83b4bdd317a756c1f3056080536318aaf151666e7f970e56779dbf3708164cf2f96ca7ce2734d694e6567fc12511d96dd5ed5c9dedf318064e75cc3b6eb2594db6c1c2200de69a5eae44f767beaff6d69ebfa40065732624a391bee27c35a9556f9d3129f19068ff986fb51864a495aab85ef83097289b0e6ca25f6f6068421f783a13d5d7d15fc5b5b8153e4c1b260426e658e6678d4cb112bd4274e2215d840ae3e933497514f6f24dbbcd14f63208dde1891296a3fe1693acee6ec7916d3aaf4960c790ba7ad9ca820d78daa2beebb2650910e85eef3fd78e37d500bc9455da8d6c9fd80418de48d6dd102b38ddf3122378a91851caf31a8053330f8717b3dd26f6bacffa1be51f5b91ad4bf5e6c0769eaf20869a7ca0be9c2ac45a979fa6bd94292e47d7a24f8783971f4503493cab6798f15af3539d7c505928bd4ace3a737645921d5e27764ebdfa4ea5788108f614f35b3774b36efef8ad0fb2f1ad0e03187dbbfe66b277c121e89c4fb7547f8e9e141a8896487640e931a66d8fc672256501f4130e7e5224416affcb03d45ec4d99c7fb558f8306c8f12e685eabe6258d12ce290f422314b13dd29384ef223b6ad5bb677483b91d5bd2fd62378f45d40be1f29a9c0d3e7a449dff060b2a87286aeade476882706eabbb59596839d7905e0c6c103ef78ee109a7ec00cc97a5a981b9c7f7bc7c02b6903a267c12c9124261460950b9e9a1932b1eb6a81662bf0764d2892a6f3242cc5a77e32741c873dc2194ac2973323789867fa0efedd37b04035c4f29ab03ea51d7e6ff689886abb8ffe5d5a461a29f9ce4020fb4f69de6a4f9b8fa23f4d6e3c4996c524416eb972dd223fd50776dee197efdadccb8fc5d1e788b75f700cec04c7f828841273289b018484b6fbb30b5a34dfb7186153fcf76e29336c0104e4814fe616985410b0e991dbbbb4c273342dafb97bb79d4f550b34461a78ef76f0463c89710866d92ff9af1be10857c7a4f369644f1cd45140c50fae04af82e1081944730b5e27bd3f9076b74f8cdc88aaa571d44e0d7cd29c5c595d348356c49683c7ce61bdced8dc3db63ecec4cb6794bb0789d018fcab31f796f672f3e938115e990f61c404314e051a92730f4e094f016c02385830254aef88122434c6125c05e4357e2573363934c96dc827a22948e534298a05fe3d0ef78a090c81489866dc4cb7234cee64c4b90604eb73f737549aea074d2c4ef68b1fb97679d1acdccec156e098d57ace1bcc922f9152807cc4b9f738e0f312d82b6e20e95792b90a37b30c816009d54d129034526a99dd4e4bfa6bdb647301a449dfeb90811bbabe8bd1d76e50fb032b2fcf8d7cbd4370883e2f9eb61945d62217cb1e38d8fee6e54564e24a8c82a1de8dde7e7d7a55fa98881e3fdd4647679ae79d6f07fb2021e102b34ccb195982e1febd801fca1d4a01aca2790a8edcab3b1f442ef772fdaaa2d40ece2068b5d4eef5281550458db36e20afb54ea8d6c6ce0e96e5aca601fc3547a65f78db39eab8da470437e6f2e5a4be9813268764c19f1ea2d29e983edf694c9b8477bae53cb8e5498d1986f12d9fbccffad105e81078a8f899de0e746202695aa0a0238fd9af4db43df0abe4d9d82f3a0d804d5e4f3c2047a9a9b7a0eb984f3951c3fdaa8c63b4c5b1b99589c9e389bcef8490c5345b41203729dd87aa0e5262df6b3753088d8753f57d11ae300f1e84edb25148056ac19a31e0d0b227d03ef42e67a437431c58ffab171713784ad82a7c69334531cfd5a2bb47b78928a0a08a598cdbbd453dd37fa35a01e2120790106c7c369bd84bc6906ec9f929cd103296246aed3bedc08f87abb224b8e72dfcb9f8e8ee36128284f01c6f2f7ada0236ffef89703ca5f7d05c7d5e038e7c962863071ba38581690cea47f467c6e0578e30bf6e63c2ec1bc7793b1a6621b33e85a336785eb7fb82529c57e310c3c68c58133403b39c4125936cbda9809d067cbbe58278dd8c778e78eea54bd01daa84d8d8d218c68a228d2937eae82859a223489ea3feb02a181c9e821e930b9a738fa4f08741910a61cb1d2e3871fb288ab195f15562eb4fffe6888d0176aff45b95cfe1f886e8b5c6ada1d2e17db0e4ff8c143a85888ff172ef84a5e21b258b9b8d24fe5000177e9d43efcb1c27220182669ca321ec2758c7c77617128328d5af12c3931622a2d090d4535d303690f0892aacfd61744f3393a48bb836b03e0395abf96d16b6430ff357ea19f9a341ce56ac149c2f35abb0028b636e34b49038a9ba065c0e30f55851b39a22d3fb0dfbe8a27224ec86cb9ab9d2c786364c724f75ee05553d9813d133c32d860c88297f47f0706561017d6fa0def98c85696374d1957e7068ebf63d39e71cf17a1e4e8b6831000a88cc2dc0c6ff9ea79ef4990408c8bade6c141faa8bcbb9d7e5fc9e34cf6f26d6fd88fba141b07c494684286e169ffcb6b3b119cb2a6a502c04bd74dde00b48a8e0bb704dd05f1663c2dd3d834ab64876bfcd46269b041ef140af00d98e34533b1df1fdc65d715998f7c1c1f9aedd06ec5dc809aa9d57f957168f5dc506b09b59053fb678196d40b441131c02ac85a0c7a7a1f45c8ed994a534e4d14ff5db6fdbd0a715d046b92064b6525f070370fa9efd2f69044fe02311e92447c4c0b48988e6691cc7a61aa4eb98fb59ef106cc5ebda09c1619aa864762bb20d3134162f1dd7b4537ef08f9dc481d7f9962e91817de73dc54999ffd38eae7b023a9ba33f2ec78bea22f0b3492e02816da1e18fdfc5bb6ced19be8e363b0e22594a61e7313ad399e632dbcd4f0c2a1f95443a683e598b4c019ffa3fb9b00b1ee9d367f29174ae0b17b32798c572c483930699506f424f51c7dfaf0dab31447014aba68b7a90483d5a7c5728794daf9f675924a1f505231ce185d17afac129da677a4e6d0e6de7a353ee571088a4816f68cdf906a2c352604afaf07e5efa52115969cdf8b2ef05ad6472bc461c2e0abbc18e3d57b359bee24ff511834be880bd4a7e7a460feeac4814c11903cb3f777bd955d88a74ad94251df7b950b33758ca081e581e756ce1fca994a7c9d8f3b7bb420b4bf8ed9b582d655931c528e1972bd0b993439e409999455c0f8ec1746b1bacf16b648040ade566c70b758fab267ad8f665d11996926f7fdcc12e59b1d571928d91dbde4649eb0ced77f8f336607c42f54c6191ac3330870e19039509152448adc52dd81b6ab95baa247f9441e694f8f0ceb8b4788d2daaa9449cf564e6ce70473a01dd4d52a5aa04befb419f8fb9c0567217a13b40195bfdaa7198c46c295abe4354883c2f143250cbc9c50e429adcbdcc8e34940f082af9197f9ad2393f6f8141355f393d680a751147230fc6f880b7cd921085f7c71f95cf545009b6881b947bffef2db115cc2ba89d74be4fba5a6b6602753fa8402ce7d7163c38e12c0bd60a36e7adc0b3e8c89b86cda4ddb6ebe92e1b498008cd4ac26e7119b78be529556434ea5b0f40e633986da34e5c735bfd3d13360282b2cf9c200f543cde7aff15e434570b59abb9a811130714735f9a7c5c6888d844a73392e618b76c139c6af1dbba22877633f5a7bfbcf8a6ab0399db4180968b31fa416438c46d46cbd5b89f4d874d6c6fc05198b8b21392ddbf1b590810a10a35b7099224153af238b77b19aead6d76aafa4edebc01ba58dc40c8562d14c6a93e39f984548bcd4dffa128662df8869d9f8cda15ecc9c1d086f4e67538dfe8d1f7a75406aae1733229be4c012c82f5a17559035dc7d107880321225d460bbeabfa567ee2d5122f45b92889f374453fb014e22e695e9fb0728d9c0ddbe74de8f995efa3e82851ae1c531b7db1a1b674972a912e38747713ba2dc4dd7503eab6ca93dc5ed79800b4a1d690180e27f9609476ff0a07af67b62c3093c12297c146a8434182f1f9088bfba1f4f23f801d63cd249e2026fcb7ebac39d31d74a88c3a127906761b248fa5420cb15a085edeeae4fc2b05d2f4bc86bc698d1527667dd456fb9a10567cc1f7ef767eebfb910dec9651eed2d7dc0e0f5341ae73f916bb973d83fbbd51f5140ce5a6b1477d301d45e56173bcfacbe668c7ec151110167715e98ae1cd96dc53dee44a9a158f4b4c5d4e27f10e51dd751621c37a470d05b891e1ec52662ce138147a6741bff9bff28d829b8fdf2a27ace7dbdd0ae1bc04f169a2a400f6108bf39ba34c3fdf4d627a0aa54fc2b32b84d9365f447f49e1f44f21e86f1513a7bd2b9d5698c6b21f7678e1ff59aea862705725054a6b187596c19b713c904121783d13e486d752a3bd6dbdb0ab4d30bab7a97ef8fb31c6adf74fb9de14e4a501befb68763b451253799a6b9c1559d712797c8bdcf26890398dcaa658733f2ba410792efe5bee4e5f96ed3f779a6a072ce7c031cf5e61e9d632ed4e76fede4bcd814d80868388ae5918b497e86c2c3d2236d469fe7e278c07e5119f663672be30df82016257feb427f0ba31fb6b7908637864b38500118a68159c1dc79b9d9efee8248393f81d4ac800b3ab987fc4380f82e38446457696cf11532213d287dc4fcc50a8002dfdc457b782ed31b0fe51253c70d51877caf1c6faf0f4fdf7e8c3f8115df5a0615adf4117311e1f219d837ee162155507691df4e7fd396e9faf6c07b986e3a8459ba221ee21384e975f0b4a70c8ef06a85bf38ffd32f05ed2bebe55e1267894cba5df360de55213b57a5d26add493336d33f78b13e303b7ebd47438873ccc4df74a6c4b8e97d1035ba8da4d979596cc6b6d0f0ae341c387e206a33318286c5f98898beca8888339243c8b04c22a0a150f75c4b859a41a5383d449265085df9982c3ee473f2751bfd267c36a927a4b911c17bd4acf8090fa1563a5a00c5f1da326916dfae3e55b942fbe499fd35b71d176f960c36719f24008848c8a452cbfc02e0170fb7c99cc431ea3d8c030c261af7d2ed8f9786280122722c6f165a1c43f2d8b85ae8573db9404cb933308b22be5bb52278879e2553994ace28c6a181dd24d18d9aa8cd535e15be62474463a041f02e8ac87d4c0d4e696d4e3e84d7d77cd02aa7d027d21a8a9879d8adba2277d3a18e0cb77d6d963169cfe9c2e560570f4aecd34dcf61335fc12b2f0d9100a4f05ff0ab596b4bdb39a40854b2c359fa0ad301fde26c168becd4a880484a0867359c1f3b09387de923e532589404e9877912f8cfbd17d694c3fa6c26a9197592b09655657c103dfd10340c3672d712ef923ee9148e06a4d7fd13b50fa9a17a08ad43bbe54c542f88e02fe4a74c399be4f5b</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">有东西被加密了, 请输入密码查看。</summary>
<category term="诗和远方" scheme="https://blog.cancin.cn/categories/%E8%AF%97%E5%92%8C%E8%BF%9C%E6%96%B9/"/>
<category term="情感" scheme="https://blog.cancin.cn/tags/%E6%83%85%E6%84%9F/"/>
</entry>
<entry>
<title>2024年9月记事</title>
<link href="https://blog.cancin.cn/post/4a04b003.html"/>
<id>https://blog.cancin.cn/post/4a04b003.html</id>
<published>2024-09-01T02:58:24.000Z</published>
<updated>2024-10-03T11:44:53.521Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="28d9d3404ce9939628fab5762f30036a1e1c07edcaf8654e23c7a453bd9b702c">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc14143f1708e4c5565a007bcd3ed5ac7d087e189c955892f8aac7ba736e3dbe4e2f83760ff132da01b7b5a7a65d7ff03a098e2be668c77b6af358c4a749ac94acf1cbcf2ee8b224ff8514637eb1a5004d3f986cd0487a27fdcc782539c63e8ef8ada73cbcbc8180cbf8464435d1b889118d9c46fdcd4ec4b8b0deb78b4ace2bc8a8a90973f2acd727bcb72a7e15d111f44e5ab5cdf9ef9701b2fd44cfd05de55f7231e82661739f558eb1e4bdb6d97043696ca9e515d0550e829ec5d30df0e9c4cf04c4ce40bb254faa2463847c1512eb0c08971cfc242a1dd658cf3567287ca6f1426d0da718bbc47e4884e480276d0933d1e9fa18f8b204eeda692e3caaef7f28a67af841ce7be2968a20265311841343469f95fb71fbf25c3de22134b3f2bdad82d82911c63861c9ca52984e3dcae87c789739116e0aa0a8ee7d653189882906361148b21f8429baf4e00a545af6481240a97843dd406f477cd2d78887fb63e9ba10b3fdd3b4b30831fbc4a4fa13a720d363bff844709ae1c330dfab2edc6748efa7a1664dbd392529476a59e7189af01948a35469d3b4c892b551417cde9ebf7457452841bfad690d5b61ca4e229b8b9ce0c9cea1fff30db86fd28f8f261db72ea2fb5cbd805cfc71832ee6dcfa2fd9612b52808a0bb61f016ccc48ff2730efcab822cfd63f7d78c45f5bd7e2f05224be3263fed6dc8f8fed8c71057b1201ef8e2fc5032b0611ac278004c355b312ebecef6ac46c013935f871e6c59947e0e72db4d4e4c5c1a3a429aefe9d59e6fed6a2515cdaba11875749f94c27c934c10e574a1e2d15134d56f56c27541b9eed9b833bd5b293cefa95b30b884b198ef02cb6cad1388694a91a912ce07ff2ab229bc3ed89d8e2d4fc323bb2ea3d090e35e26c0aa639a2049a648774743dee123c7d19c653927f8039fe03abd1bcd0f53d98d095d986092bd7d4778d198e64a91da6ea0521f14e32af5b505536ea66157dd4cc3b547482a6456b70029d1143410f67f4b76dd9d7f00921d0dcca9bc62094faeb478e833072597da3369a6f42045622e77374d184b0b97ba430ffb9440c778d7c0dc6325b9b5379a3b52dd8ff4fb7caae3f7a0408cb38839d1905ae79abc06cbd21ba9487f3830cd79fb3d0aef4555d3360daa0b2837bef39ec7ffd64c1e29e6b8f722930ec0f73ffb700452562300658f19b9aef007606ec0bce7cea07c3c613703460e595b5561242fa9802f041097b76e6832eb8e6a030d32b8e4fa98c9e49257917d3b8a7ad2df3d39291e20a39b475de8bc8629cfacc2dcd1e990e5390f08353b33c8b8f3a0ffa465573281154e67966315847dfb6a294f824adc20bf4dd59ba67830bc2c99dceb5a8e8b3df8ae40ccdc80f4720596163f1a55cd6d5c6cc6cde6781a8d32244ba8888855085fd46de351712a8ab79453f9c7e071e60e9402ffd7cef6ca90bac4aa8592975f449b03d98d21717113b66ade5650a07dc1804028c54a1e0b31c60be56d7f846302ca416b4369579dc32497854dc43cb8fb2bb7524d6cf4834fc270b6910ec724d1e07289e00eef48cd0a7229836ad0b59268d14ec4dbde1722684596d46bf756044ffacdc50212857dcaa2d6e5df3a4c1cbc117e8ef038c48db89b1275bc565af9657479d272d511e2cd9bb264bd70d367ad855f4785b1e127131f049c1c06b563546ee5db30053fcc657827c88d660a8037c901d0621a8b60fa5cf963dff6d36c0020dc30c3a691ad7ec38321ec8b92cd392228028f23dd460ce9f75c9be4e78cafb0581f07320031a2bf44ecf992027f448ab1bb149b8aeb1b07acc7fb12ec51ba4705ed16b9e5e94d9ac9ca6e937fc01ff091b77831e70e553571b9470e50e886efc8772fef4453d8ac7c891cefc3005fca87fc6a34fbf3f2b213c216751f78fe82456e8fde9d59eaa792366d9fe8f5de423c275119e9d6303c33cba2e2d8c8d7c0b21ecc515e487835097a0f310c7f3495a58e7e34f6619fec2a69986bc797e9e2c32689512659e8a93d96d54acd1ff96b1cda5e97f8231115509e0df916145e181e18585fbd09e9af10afe63cd2180be0154aae05191e048b93b70a2f264af7c58f825043bea4186d8a2b501881c5266a24cc46b43b2ab03d32def8a5b4f51d0836e172d22c24041a63671178282a04652f9d56b8b0e5cedf1a880bde59d6568e321761754f0dc33010dc60b0861de9884182f356b1d4dad8166b483282ae23e5d73d35c8821f56d50fe93c96cb76310b58cee20a8b423854e44a8d462cad3b36b7dd3c9a3e6a136a9fad62b8d4997f00bc3f08ea4ee9a810a53790084b9f0eada0962ed7b9ebd0849344f93a7c7b43a1380c5239fd50a3b1603237fb785ccb7cf9ee94c431e2078d3e9b9bbdf54802b73185d90c8c4c7be98e162eb0293e106ed9f04c170c8ca612d57f39b28bbcce2004a30411714cd2726b49e6a1647f0f6274cc50ce3004d95a0e9db130317fcc08b7f755e2c88af637522c69d0832ad53081b96796a0211f472311b8446f08bb2ef0fed3592269456c519c345ccd1674aa21a9442a4b3c910c44187c569fbf351fcf7955481ca50773839e7904fc0e3b244d6c8c9a2f09f3ae3687b35e20eaeb3842d8adf3042f9b8a86b0b55c18ca63bb14da81b7fa24b9a3c47b1c1ea845fa564219cfa662a71c03950b86b1528c6658bbe98c329ef7a641f48352903156f8672f202ebbfde3723433b30500fc11e3ffdb82f4251617043adfd37f62888815e8a3f2f9024a620fa0df01d85a0c20da2497ceb11c7c96d66d42cdcb056890fdd0b88069331f80fe2213c830e3c012363663ac2c4a2544d128da4669170d235f4b15bb36515f6b361882a709d5f0001ccd3711c7719ff43998fc6d34b78c4ebd048a544ba4dd69082e6e2afc402d4ab394c57db4675dad025d9d0b2e7ff96a1e12eedc781dd4dca95c1b23fa0277b945d972ceb681b638428b6f6d81832968cdd00ad92ab825210e53cf33c7a6f9b3b17cac72cd7359c69f69823f714393a7e45ddc497fed56106cd0ca4119f409524d36bf9d8126d6a6c8d3b10d0d039e53bb18dec49026c7bd908e89a9578b7b7da8ed3afd14d9a1792f2d03f1d748637044062410bb8805df8f119272d2efafd44cab7deac7f396e2e92369f90194b7caadae21f52e5f0033f47371bb3fd2a092f6a19ab24d79a827617dcb60d3829bdb8384b4e6842893051fca884598c4d35e019cc3be1c005bf4fd885417a6906a496a0a77ddcf70b02035932d008878ee71e11027ac6cea53c6a97e25572b719deef9027d7e6b6bd8c8a2daf2cbd1153b5f9330c4b0ba48ecc1c2e11ffabf45c4db8f292c330d8b69b324c9abb32a634cbdcf5ecff6a6b8ac980aac2bf4196ea80a378cc73b7f5c92bea5908b106b75bc6e40cb481ce2cd48d566e6a5fe033faa5922d396c3de5eb65181f26b23f4ad9e7862742fb762b9a8753a3d8560e9e1caf8fc3175125983b3885003479dd19bb6d1b80cbc6c7ce9eb2839cf106172855eaf672b9130e5d359c0c94f8383e6401ede8a1bd404d9399bc279ef2c1df752494803f80d547fcb5ee1af2695f750962669fc5e882dfa0517c97bcc972893e94f62f9aec5c976789749e32d2eb64da61723c63fb692794256a3f5f47bf1ae79c0c18f1f4d94d429174c23e777827f7f390e93c978897023ed1c06dcd6b21752a6cbb96ebb809398a29c7579cead3ebce5a03283bdcbcdacdbd8a3157f9b19f57c52c06f29dc135b9660f1df8e8e995427eb439e0970621de1a5222a0e0ec78d9fe4eeb6cc16136031ff4ee81381bec207b13eb71be5d92a9d882713ee30f9cca93880b845387a729b6c350da5cfe5d2ae40634e068b53ecea83e7c36853eb5ceb7f2c9eb253c3739d950fe31f12132f08fb9008cd0ca2b109e6e63447d21cd96ea3c7795e653c25cccfd001faf82afc2e748d787b1f02291d4822058041be4acd9875581e9ef6db209347cb4e33a85ddcdd3ff419056d073de2ccaad65663470e4a4b216b54394408b7edfdfa29eed8a49826985320fd5c81db02e8ad9423dc4e32adbaebc8a0301df0d8de476f9a4170da7eaf4e5712dc6820cc4740b7978b3eec124015dbcbfdacd132ababeda8f9fbf15244b81e1780b01319e533310e356ed7b282e5179efa51f96cd152d4db7d9ad7ce8ba4ac074edc4d945df7896cf61eea31e4d230b4c2f8e7d5acdfc5bc99893593b18535b6394ec26ec0a872599ddc1ac940de75237461e110bf0c31519e3e1adc5841f5cb689b665e256d11a4b381cb11d541a3fc970cb1ce9299fa7b1a0c49b6f19f987f0debd4f13930325652203c2664e2b7b6b4f2c3e9584fd3a93ac9285ee428dff4d77984b0718054799b53bcc514db3039775094cb702bcedc331f13c0fb9dc1540eadc02c69495ebaa4529a34fc3ff0c47158335568335384ceff45d9fa7785a8a20c0c48e134d5dfea07caea84acc5545f216f958565f84e4cecfdb0b600a74f7f8b16f32228270cfadffbb3dac4e476b0eee899dc3624d8dfc3d6f3901a6e991988e5d8022248c6cf0453f2add94d74079bd7b86bbd9d72cf9a05dd919b40fcaa07f9a874288242b6ef454289dd15cd7431999d6941822cc4a137a27ada3c2b145cad1121a9f2989f3be2677046e94a987afcf006c90c03d12fb4812d2da77dd7497cab330b934a208d6666a4ed99d29a10b8f4577383f0c55748b98576299ca8b22ce51233faecb6b1b36965ef61620195db277a766ede88c4dc89721ba90462f5bc249e54273f9cb1a96a91a2fb3e677d3342aac34fe3bad8ddc4b660b82db636b8c283de8f748882c3d5625c10aa6ca4dc73f14642f80ee04654e65962a8d8dd09b3499b1e1da8e0da8ed9c5f88236292aeae81f708627e58d3c6e65013cedec1d66f84101f173f5ba12d4a521ae6221cc67056bf3b4774753ba05f89d986ab4c772823b659c9b6b61adfc8add242d10039c943d746de7181af167e48e1849ec330f86255c379eabdf054312cf9ab600081ccd865a25abefee8a65656cf33de756a6e79fc4da3c3f9169b3a8380001d12dbdb68db80f8b426fccaaba6a13078631b33ab8e6f4620bd34107d2cd52b7cd50091adcf1ae99135038dd817d70ce53a2e7680544ada8e1057498804502b004760e71656bb1c6547da0fe268d622894a3e9899f5065aac86be939884607dfe8969c838171a1cf1de1089046c006c41108c0875c151349acdc32ef009ec6a6d88b0c2d680428d24edda949847059657c1e40576082661590de44176c6bcd9690581aeb26bf034804bf7dbe0bb5c57fc825a4e6c197c44a323fda8ae825b9d191901dde904058d1e22389c4b02b9f8710b684a7637db24d11991f4bb03323869efb64603e20620fd90ca2bad56ba3fa5b70746764d962888afc35f424f24cc09eb8ced34601b2652922a92f7a7a9c8da002ed21ad251ba9ec46a11181d6c0212934a336d42e20fc57f454c032a655af33e8ec921b7d9167d9bc795cd1157ed78871ccfc8b77fbc1ecc85c60bf17514d2ad29e07cf77f36c0fc710d04a938f7017dbb43de86253412e3c94c1365d1add32049ab5d850bc8da3b05a0919051f404c358b0b27b88271339526fff296f7ad24322caa37b4262cc3b2351ac1d44332de183a4cecf4a5e1d8200e77f3200ca48847b4a8ae1b04e14373b6aa8c846787be0f6be5ab964a6c35472394fc558d62f73e5effd8349758e44811b0c54bf457e258e2ecd660c699de36cab4a606014db32d29716ebac7ed91cb964aed8d042d3ea9d1be605789998cb7bb9f95c1564026b72f9d1c29e21bb66cc40f116bfa7b20ccc567bd498da0c12f18b56e9050ef350363abd0ae8622139c11c1271f93d09b3dd04fa60b3b463828729435a95c48e1a203df883c7aac2ae8839bcdc0f85bb02ff6510d6d8c0dbd5904aad5d15a84538aa122330fa1bb271239f6109fc03d2b099ed94e7de7eabb0f7cf9a79e1dbb7d079c407d9f6efbd5dd8c130fb0d2e2cde862b01b3428a5974e43be18d07099dd8a0983f060638d89bcf3ee1b50948c8a1b1a57263ab3a668a034fdbec695dd71bc060df695cf0e5fb63a4f7f07e9be3c2a68a7c1648384323e61c8a04d0174ed433065f1d765a413533a98120c912ba5318bf51964b5e405ffadf0d65746e3dd245d03df2b5735ea07e891a4fe79ee4e56490aaefc3aa9d72b674cf8c00274d0ccb09f04814e4922fe5e9d366d890a842479425445baf96e5208718fd09eedc68f38c352518aacaeca26f9b54005386a884bfada1a91416b0bf0794039c94400c59094adea538e49d0a0fb10d6153cf4189e5a50c3156eeda89e54c8491d9253c63e4cdfaa529dbfc3856510413fe090cdfc9a24b3f2c9f5c2580f0d6d91f197106244856c9b2ad6366fba325f955514c1f7fe3d8425a3a3e3d0dfd5800dfb56affeb5ecfdc70b59d59e9aff3d3db5128dc4dedf973987cdb145d2de0b03dc941461536e19fbfc9d28fe23fa6ad2997eb7f08444c2084113d177e464658e8e694dc789c710a79c9f6c5f02a8550f6aedd5482517362112d2c5bdce78a4fd50e4072240556c4831d893f74b785a39368766cc8068aec0861889628b470f4dbb56e6dc5ab4548845aa9a900f48e93c9ea3958c738f21e2ccf3705b07a1d68ca89eb6dbd8883dd46f97a16a96f34a1bb28ffa546698a243b68b612ca0becbdcebb5ad93fb6439fc0d5c4c0e3e15e4849c37d976086ae0ee102a359ad2dc6436e5d5b2074885c1ddf1e898aa3dfc86c405ec8f4bc86de0500c7ffbc2dd27ed14772a84fb54bf1eea55f598249b1f6bcfb3e08d4b804052041644f26aec0fa79407aae7529758a41b679515bd867952862a0190f5920df31ac4ffd2325593feddde1b0f665c29f271b424c0204fd7381df1beacc4e75ae0008b2800fcc8860477f635d014d7c6d9ee1d32ac2faece2e0978b0f52c88b7aa1fef977ed1403576a7bd12898e8aeb7116dbc7b16bd141cea63fce47a382132d7ccdffad21f55810cd0383f6db25c7c4601ad4416b3c63a081af16096f3ff2860adeda212c2ab6e826e7c61a1533dd48e5609049e424ed735b6e05dc337ed3d68d31ebeff6089655df0c372241d1c05a2ca3c1cfe5110550d514123c4fb229720bd96df8151d16c5e531422f95bde1edd015dc144d2399c5d232a74ba6925db3f019f0cfc26fdfb7a725df19e6cd884aea0f9490d192e240e7b33d4d1ec802d7fc202c6f9955a042b8edb5239fc671efab78044d5d36602a5cd8ed042df6a76cd9cc41ab689364a3e4de153f15b53601198602575c0d24639627b7d5c63256cc388c67c55e1a04517a31683ddb7323495292412a7058a98153ad6868b8f28985e2bfb74f696f4af02e70452c06c057fea7a3403cc839ff71f1baea1e53a7783d16473de1cb6ba9fe4cbf761fd2954c159967444d6d23c1b5726ce3b5a7197d3848435d9115c1f33e4c49797b410399e375d51cedb10fcd33bc1d9c9ed187079a08b64f1be95372a41fe6a7d6c5e4d483ec70d8d40a77dc3286772ca2a5929a387a023a4bdd4313fc4e2c240769b78af95e67b17811a4cc542f7dd3b7d280eba1e26e9a611d8e8d2919a7e28a47234e287ca9cfa0af6e9ff0a1f90ca68aaac573422deeeb8328b58c9df843f364555f7e20eaaab63a3cc4bb3d7ece18d4dee96881b546d5d35566d132c33a27c77b2f64292f59c434f25a1e8c0f5b6d83b8bd8646d15dedba262b63a8c0ed1c1e508977807d3f18fefee1728ee2d76782fd3b40b653ac0a8eb39ec7212f5448fcb5e24976be033690b86e065f6fe7273ac77d6d408e4f0d118e7e7d0530a14b8d9641710132d021b3fa79cf0b4b67e9a5870ebeaf2684c8fe1dd7b330c8855abeb0fd3403ee184420183c3b2e13e714b45acad2b96472f61c17692bbb1c224af4be61d1bdb3b68915923c86fdfc3cda872b28ffb86269db422f84909bf1d79cdcc2c0d8b8f95bf97360c944b28864e99d6bb44b98c402ba441cd64641187c0110f77cc83cb97967238e47dc973c524e0a99042ccf22134305b5c86d6049554a4e2a2593bdd6782106cb423527e2795da575b8cdb2f4195b599509d9317150d4f0a6a72dcf6f1beb0878cb0848b89737308d871541b5f344e76b573a4222fabe63da3981398b1e784ae78b7207f73104668345b88deb260d2569aa17445d98fbcde30f2eea33e69ab117a6fe2006f8147bed5e401b7f655bbacd4bf4a88abbbadc816f622a7d37298560b5555a04bf7930c5e4c5460faff99c32939ad4a0b2b2fe92b3f263f98bc2159b5dfedfb2966360fc538fb7110358a913a023d35abc4f37559c0dd6e966b171836f030046351696c8e880f6e0e94a9ca56c3cffe4613879a5ae91af8d19ba8446bdf1fbf3b40142a20114274fcd954b8c386594e4b1db169c0d7cfe47bceee59929272353934f62c6ef7500266d47b17372a39e465de910079a2930a906f69bb9f71e5001ce58bc459fb31ab942ae938dc3528057aa31aa8a763ff8d3eb36e395b35c45583eb496d30f63f94b64786e8ba220224bcb56509c76262afba727ea624fc2fbf6a4ff029b012ea3e1177eba9a7993e95f569e8e1e72c9207b96a54a5c5d79cf304ca5f9293c7f941dd5c372a7d79ee798e5368d2c3ee3a5a271114bae138d453bc94e6ff47a251cd6753ea5cf5d37c2ba0d545ed7c6fbaa4a4cedb496c844ca4618abf1d7a39299f48f237297524c50d50d5f9a6200227c9a43e0807b52d732a9d1bca15dfba39c81208c78c2576e67b6525b6394d1a4853dcbf1f954d2a4ef87647bb191dce111217fb500059a50dfc4af88a7ec064340e3336c65497a4529a8db70db8b309ec5a1c902ee30b4dbb85805800c6f24817cc8b17ed6c6960cf0927606af9ebb2a3a60a5dc1411185102629afdcceb23bed1ba42c153852f163d382edd65d223f7df6a223071c694820ff4ff8b03bd6f0a1bb022737e440544d4afe6d62df45d92539df78a9266124630732f15a4fe9c87185f184924181f300ae9830d8febff9689a7c80e73135bedebfcb2e21f3ad93abbf0a59c24633c98e63120f848549b21b831bdf625ebdbf6d8b91905c3657cc1f7c0c6c6d5f4af2a28f8b660c7844265af8e5a152996fe895dd9a8968d63f2a704f8e628e481a0ca4e9feab4e5f93f7cf83e807d92c4b800337d8b6e5db94a16cc1a10d5ae4ba06cde199344961d2584862127e08a4863bb62e7ca1c55a59749e34fcd5a47975618c46723e0ca47cf507ee54f3336f3b13a917d4bc38af6a4e397ee98226a5b3e0d96c349c163a4256f7d4899732f1dd91f7c8a2463320eb5b4b0bff4dec2e55a697a740d515d97b6a6150bb23a30589a08754f927acd31b297d422a223126397178a7f98c21a7ec32d247ab1a17d72dca06d019b37e0e8357186ae692bd588e2c305c6f9ae219146fde7acbdbbf27947d88f8a28cb32b4f40d8175d7e29c662f22ec30e1ce50b6733578e5d819747b3f1c931e19b3a81734444cc7db9e6efb43b0ff0f288d3af8625bc4b5ac7dd0eee7978e3fdca0a1b993c47a9ff2a217eaffb7aa68bd5633c3001a3674e37ddcfe9f1466c9330f505ce139ca40c5a80e4a854b9e00118a3ed74713c5b58eda7d75a23d4574a5ef0db0e35303eb8dbbbc4b2df13dd61e690420f149547cf4ae088616ac4fa7fb2a9c9b332a6102449883defad4ebb39507388edf3a2f15299c4b6a50d14eb299d0a6025e07b5f6d3f2d5e36f4cda6bed11e2c9e984e4d0848db45c6da1374a8f6b64689d070f3c0c31f44384ed1282505adc6186338ad1f57f29e6475c4ad0d0a14f4cf7db7340a63e397d0f0fcbc4ec7536f9bd3f6bc1779628f8dfe6a680706d18bbaf12e42f9be8c5ade1bcaef187a388418c2a351fbd497be5d43ec75a2173e5311ac1000802d6106b4b72e319533aeb298cf29978596ca404c3e8945d65d32aa182eeb5e34cf56f960d783e1e541c04709195c36bc5997deaeeca875521c7100bed52ca1651f01cbb80277c14cbdacfe068ad2a6ddac15036b9e51ce65206b68a5f08ec56053d6399347a02dba63f20206b420b913341d66089c1125b8d7900bb5ed802310b0d56218a93ecf10bde1701d94cdcf54f792e6797032ccb5b46b9f35e42ee88bb272e410d61fd572c07302ac9d8c6b8c62c20eeb30550e68ad9213a3d79eab1c07e15d8fed83c11a3043af1d06b9d5924c7f9f0646d3021b070c3166db9fbab3025261c365de30aa806c3e3bfd0c9cf372a4fce3ca0d773ead9a01bf6d0247489e5ef6fec6cfadf248421f62d1d9e026e363d5b7bb55912f7ad9cf865ecfe00b6515240fcd0afcebd06ff789dc0508d44b5dde07ca1f55d0425618e8cf52fdbc3291c52fb558f83b4fd2f21a97ecc8a2c7030a797969c52d4ea7d1accc2c4fb4701f11ff2d428032d22b709774a7392c521271fc7a532bcf1f385eaed3fbfb653c76f003638462fa0fae582a8976532d1013905cb24a113c0b30782e29c3726d614a2c49b651ee52923d6714f88075cc2637e11f1312a10dcc928c3e60151c08e061b96821a4874a2faa555a156aad8965d9f141f25f0e3ed492c61fb70b2798bb552ed63dbf80451edc762458bfe501f48cc440b1af701af8b121c9fd900c01c08c6c5ba51dc4c1fea23daf12da703c659980b8f87ff4f6d9737ef7d532f216faa6b3331acd744b9dbd66e41e4202f2bd9f14675960fb21395f3be57f21612743f2b76e5f381231e682a621db8b73ef246852dabb3b0c49b4d5cf0d8a14bc9cb6e16e353b8ccc2d6e2dee35646dc3cc735e66a5c75096f994d39e0b9617eaa9ab478f5cad43c1fc1e55d02fa89a007c2dfa1003e191293ddcce171feb6d090ba9bdfc26bdc9af5207c083a54f3b89c684c60c27994efa0917511011d5218981a8b79d10f3d9f43b6d005539aa82f2a57c5527f4afb00bf0aef60e5b58567e648132a8dd67d286a546fc08d347f471cc04d26ed92b136ead44f5300752d8dc47c3e4bee74a458519d8fc16ca4c78b64d935940af57b45b1ba8f543b46aed20afbd96e8f6d02168ae414ef13c3526f44b70e5d9139dd27648f7716c9604651dcfb09442773a1a2fe70abac1c5e7a6a63855b2bbbaa0951fa152c711252a1d6375f6b25bee06e2d1389d9849ae78511aea78b99a2c1f3f885afb978108b346a124b41c41d94d9bd96f1d83034bed1361c24244fe7af3ffbcf2e0a2b79c020a5ed51b0451c0f41b4f75b0dfd8c0cd1ec464e0862820d3fd0478c2c821c70da280323e7fa944108b0af983778044e3aab4974d270b0ac597a7f00eaa6d09772a86ef6a0ee82ac6e2028ce180cea8a508f051786290b0e5d519ca10e4f50f623b9e91699ec6897a9722851970faeef22f9a36cb5111b4d9fd3ee7521879890f4496a64fb2bf6aa4fb0886e695447aaf20c4cd0367773cdaacca6aa8d589fb2b4cd22a2ebbe92e10ae952cd77f4dee386a039ed70b29d36702151d33a2cfc70455bb5e491d268869a993618a180eefe62ddf849a0d2ed931133249ecef0dea707c73d63f92fb257f8cd12eb270dda49240d434613bd94eaa58d3cd96a6c2227fa6f85c74c2e9f6452d6337ea0d5ecec65a453ded45acc98689621b5814ce0bc64f030b3f9196c8d8dc04c697cb57dadecce91f475108aea4e72191acf7d5632f32686a926eb0b66cfa09a31f99e1669ed9c9d192919318cd1d10df7bbda8bdacad90c5380fab6212a6f5ee5d065a2f3bb4285e55627446249bc2175c2752f5af022adc54007600f19fa5676959fe8960d6dbce1e17da5b33df8738ea60377295f3b90148e37da152525ff3461be1afda9baac29de3b20cf462f79cb86115df2ebe0c4200cde57a776bd947f7b1136110df3ed2b9375a2aa55ee8eec3a44ff221c1aab9a1add1f6c26141958d1064b44dc4afced1fdd7fcfda83a5f1fadc2c5cc34ac8ba02f989c3aed738fc4f81c445cf1351020db1aae52fbd44413023d5eb90a3a9cb4fc049cbe37f46f9f6e35d1e9d6a526d17ec75119376b1e26a1d5af58731d024af78d3346747087486696409edeab1de4aeee8f2924f1c02d051b4bb02db1949c23bae86ae3568d9ffea0773c6d40a5d5df1f9b7e8298f483bc33d726ef4116cefacaa82997e43f0261627c18734e4020d625cd0bcc2ffed83804a478191ac2264e1dd900b24b88d1b25463d25afefe95c4b695111979603c520581a0702e29e5190ac1c43a4461700642136b01cedc0749bb8c6f3854a07b35a512b7d1f6726f060db87050e3bfddb2f6892265155bfd5ff8ee82c4382c8dff57d6733447f852bc74f1df2cad13a3ec4fe15eb515d2efcbbb6071669c1f0fdad74e4199b3196b15a4e344fdc1d44fc77fad1b310867e21b8c952572eb7479bdfff63371fdf3c221924e5cca8b88671e1d2ba6baf99df39920b93c7e584a4efc9d7b171228745c5d8e631f64ac943167165d0a70154e11128b7f649672da2333241cb77f1b6eab4814863dec19ae67322c569adcafc2b780e6bd00e9b99386c4b8bb1259e08f3af5425fd71cd9aac0ca0a8aeb15f3f1abc32ddefbd110283ae5c50e63b72ebf53842cd7c0cbdb24028e6f0ea6a1b1a26093f8ffe76e2eb8afd5b552acc95ab5ee0ecae65fe70d4f5000fd23725a31dcc624f97847b3a604f7a905c552d6622434de453ad290fe494a61db6a04046a97d5bb62ab176e2ba9fea3bdba7930936efc0b8304c6804c21d2b7e2ea3b8c8cb5823bf0d3f146f843dbaa27581271eaef832059ddaf320e01c05f4e7938711b9f4bb564f81f8104647392ec1d7dee6104eb22d55f98f059d75de8df122331b2088f9299b7c4bee40b01908248482baa49ef792b7c2ff867d314e65f93ee62936ce2cbfc960e748c49edab0d0c7b35e2a323424234f355ab1b6887f8a50868637aee0448924854007055dcaff05905fcac447b03e29e66a7f0ed0699798dd4a4bcc2a285b40ad1c5c21e402797fe6218aa0a799fd3a8e0bd8446e9d7ec6c22dfb236ca9c33ede9b349833a0493f464937571dccd6de585f12cb42ba5caa64a36e5a887983b1c2c5379c1ece9e36a0eccf703fba7a40701836324ddf3b8699d875ac3679c2d9d6fd83fbc3c5deb76dd84fd99a5f099ffaa3f2f581b555ad971b951c645056f36b5888d52e85e88dfc257388bee934d47da53ae7a26a37e474c38b957df4609340de8b94695d3c95ef1f51757264c07791b50076a892d01d8e3055cfea7a6348407edb1966d0df045a635abeffb5e02dd402b6498b8db123c43d2f999117b013e056f49c67213960e4ce4c6f356029360369547aa9ad55f19249d5ff8c8e484bf421fa2071f24905bbbf41669a6afd7e4ae4f98a9f2a479505fca4eab0474d4ad904de9c79b3d9ede63ecd4853d13344b146f946ae141cf82bb2b31508afb8050b987e4ec4b9386c5c891b9ece0a4ca8748b0d71f58148a2c43b56839e450d50212afc2006dc3d66384ebadcf3780bdcb55d94e9acee7ae5f6205ad644100fb174b56db1f124cdef1a109d40131c7bebd49e58104962e1f24e31be3540014f950197e356445da5868f88ab3403a8bd9725c419a66deb0f77969aef760444b6cdad242450a653f5348992925479788813225529c0000adfadf35f9b9d3daff5278b2b3ef6e8397f860ced6fc0367c835af55242ab37685bfb7f0978f6847a77cb423e43358ab78f16d553d3a06c4b719c1f52f3a83f32cac9b6c499524540565fbed48164d044a89a932660be55fa0361d1eba67aae15f27367e7a055f5649fe5bdf587fcdc61fc16820977a15ed139f99884dfd1e243fd3edc2c54b39b81b417863c46b4ee0de5c1298788e817f9a94a99c73f7ac5418f3c9d037af9f48d61c829bae7137bb95df1aec5ca848af5c2024b1950d0f9999a1a91869b4710232d3066dd805cc5d2fadd3cfd68a1989ce49e687f1ae1eb3c4185eb19691f5f2fa8d243fc49c08cb234156b4a2305c0224ef225041aac931e8a24e1a450c3c79b77683ec5c7449f12f53ecf81a349a932134f24116760f6f135ffe96e77472ccf125debf9f27a5046d9ffecbdfc77c953b0404472f3da6d879422b07551176d04d8119243f418ac873a0fe0671feecb168b10ce5854ad268156971c27ddfa12c5228545b5bd046ffa85cd7742729880bc7a213d0587b92474ad31f81915148ed745820548570bfabc90dd938af7d51eb8bbecc2695cd2705ff29f9d2229879bb8e6e99a1ce1ccb69a3d385237054c5bcffb13e879b09fa8d4f307823f25df6c014a902733e00321ce6e1ebda1ea50ec4f58ea20ebab76f9f2ad0b0fcba40a925df34a37a7e2eaa2590552cbd4ef867b62ced2a9b9debec1072954d5424cedc886eb4f2c395703270520e0af00de40fc36f62cab63f8ff7bc1e6917704aa875eae5d7df0e609c645cae76a16ad9c4880a27bf600019baf854c767d99fdb307c154df551ed8643c87024c2b0136f49cebcfff8ffe622449d89f6aeb5784396cff54c7bd9004ebed97318b74b9be3dc478379a036a27a3931710b1a8ab4ba55ce138ac6bfd7e63487ce656d1096aa410bfdb7c00ad3db2da6b5ebd60df52e0f21b39163b1ef499861ced1a8e6ddbad97e74df66e86e57b2af250f73d49f0469f025b6658d1fa1e0af5ae9cab194b45a837e3bbefa364104efd7722475d4489462f233af2389dd9034d8322b893e38715144ac4880e0394e6f422ff106e0f71603212d882e8dcbc39a47c8e87f4a81c32c4193d99a5ca1d227a86647fd01700de0d05583caece0a40ec5d88e9f682a5aab308e70ae28a9c739d6da17c81f7929a33a09a2542e8107cef03ae2c52d1f55d432572f2adec9aea35eab347efc5065615a0ebbee1137c7696cba4240a9eecaac531f711c2dae7c282e1daaf470cfeb2326bc64bd444a6ff9e30f9d6df228c08c8b4c751157200099b68dfabc83806282e2ed1a83f2be972111edf9db6991ecd6b53263c3ef997d1f2a147f90721ad6de123a744191b94d4221bb523735fffa39b2063823d83a882e53934470698545532fdfea80b5a8b918c5490f53f9d228ba0268d53ba9cec86a06561972ec37819a0142298dc8086abcfea931e0e7d03168dd1e2e92b6670b7616741eb9512235c4a5377c3665365aeea036bed4935caa72a3fddb11e0be98551ad0f455fd0b5a816976d1762bd4ca8b469ac087ed276292a846982031726774c1ecbfc19284194426140345a5904d7157bc998b335723c2b21c77ff31471243d961a15f14996460c8b6e69030a14195f6790989cc1cd7a3dfcd6f52050e99ed3f470ce6a3df5cdd19560397859e1a7b41c843357e5fc100e768dbdfe8447f966a630a6f925d6f95ee674b0c2fbc1e8dca6add9faddf8c7384a7dec2a38374ac00d8ca72f40e4c795165d9f3a84ecb97df06c204a47d4204f0de3a339846a4ae9f5f176abce0aaa8c4b71ce7108c4933814fdac407dca4b076be7c737f3a36323ca5a01c152cd793aac17b3b2480752ead1aac19fb30278f55e02385072fcb89b34003d7def68984b85acb431ecc266e33b81c64ad2b2a9c03ed6f2fc9457e16ce017d3f4299e08f3cd183ad97d269a81f1bc318f5c24852aa870a712829dd4db25802b50597d481e0c193a45638c71bdb6cbe30be5bdccc8c35a57d80e639fc7e09e501f1473e5d8d66b0477b14e4213b508775759ff09a1592357fd7687dfa87497d35986e163082a018fe8583b50835b33e0e1f9f442f3b56766fe38ea2ee697011909f5d08695ca36385d7c0bdcd99963b72a3e339aab72306613d2786f5f6edb4771e923502a6c71e9b586f7734dc7635655b447b272c94de1ecfa948c56756ed5aee727c25550c1144b6218b07e861a8254a3f3a98c51748fd4a56b26e9c0618d6e29fa72982a88d4a664b3d27317ff0bd1b29e10ef8c9892a9601833798f2daa4d6dcc328f85492e0dea03310cd1955724cb474664efd7ad659afd048f3be78e6cf96fe33293914f961b778b78c70907a916027869a2bf208079eebb755b733770427797258536d5edcc3c5674d1fab81638de5be4b0067029f6f644a2dbd33372cde80f394bcee0625e1cd0a0c04e8baf4b3dc8552a352e231505f33b149340a3317207cc884699311b4351b0c3a2c5bbcea914dc35f7c2c1b5a96eba93694e5e58dd8fe9b69f8b413d13655132d3317fcf3ebc32c551faf7f42b0a6701115a67fcf4854952cc63f0c47cc27ee91e76d5ad131055e8feeea4c8b4b91657bcf8a4b490f0fffa54f125c61829d32aa394673697af663f0c09f2576148e9f59ead90c5ec59461ec0f803ae68f73dbd1e6f4e990d95043c263f4fb4e2408d90ae51176416cff66d52671b9d773a5f36eb103baafd51938904cbc326d4f2f50b3a64148436238f522f9c23de2319d15b5f1ea73adda846acf86e8a0c992a67e8815c46b826de5ba428cd33403e6f4b13f5c7b3ed590e688b2cfcc6f3911c8c42c4263d583633b284bc937baef2278e8a301a608ccbc19c2fe573fa23ba3a9d6ffe334f4d8bdda470a5172bf449b95362d3c70d913074b4ad5756f0b04ddd8d7adf346ed485da9192bbc986cd4f3c41b39c1df8f35d7931c4d42dde6f54183670be1d96ffa817de502272230c5b6cc1223fd46062fbd143c3e865c9358689eaefd473313b5eaa966be3e00ec790546bbb796991d20e8cdc3acfe050512ca4531f8da7a026a8701084a2ed009582136c12f2f7c141fd7cd9bd61526575c7659acca605160f2b7dd2c862b30b5179785cb392da3c7f3e848e42534ce8cad99cbb2c607186cf398c67d3cd08ecf254c25de80854a643e1ece1c0aeb2c34490fd600fc1d67f098d8baeee6829ed4e932e2d3c6d55e9b46bcf60b3f7c4f3fe9def3a571f418178f21312780966215a61b9fd11d80b21f26b7c32179f540783619b87431afbcd1346182d1cc821f7d44a146b8c9de4734f5d1ad55b5aa757b7a7d0eca37630a0812cce0fbcd839bdbb593d2f24b438bfa8d085eb83c722716d7ccd3cc5c2a2af0a5a7392356adeb7765d712f5be13785e29e39829b736ebe9ca17abb3886a1c6d1dc8caf64e78e9915c2e44c047a7fe3e81af850216186121ac8d71c3da282cdd926c3b66cab4b127975edaf38cb06dfc74080e7c1ea174f26f242257a066d7d7831599f7582628befa2d01ef25eb9cc389dfe284e760d2988e9f94574dd1fa4fb521312664caa431961890beae518adf0aa0cbe6f0513c66da384daf466742467c7bddd7d7d9c90bcb24a0bee759122956eebf96733eabc993e7a3c5859a892b14dfe63155ca9a482dd0da90282badbc7a0b826490ebc04da876b49f54847c7e41686f0a60abb3774c4b2a29cffd4d8de84ef3ee62c4883b77541a77130eba464c602f12a1adfe8b8d2078ffee0188ad8ccfb89361f412714545b52c9291d6033134d88b25b360e5e74cab519163744a5782f3de0f4049b7c1b26b2b2f67d9748db39280b64e42e0b9038a34f87bc76e0213f53798d74f10359f0d51fecfde51107b43da184648189f4f10573589aa0ae9227ed108149d442dd5841f5f7d4fc4d9e32576fcf6d1016427decf2417805ef89e3e7ee21ff1fcda40a137b7ea73324600f5fc032392eb70ae1b98932e0d1be2e29d87081ab319c428cb8a3d092c146ae90692ae7cfb5c931d0f92ec58fd97ac394fd9f28122a08ec75587fe7a4b725309854db69053d49145146b30917ed9aa63d573fbed1c046312e11f435d2ee6ffd60a610eca95a9755950122c486a95741ce173826c10350ae96b04488dab2de80e0538f1fb89e7ba1bf7ce2ffca7a07ff3fd2904f7aa3d2ecb9b34ab73bc05c30a1985bdf61164e5cfadee75fd9923c1ddabeea533885c0e3cf54cb917241ce2d6c9b1008dd66e33b2843057d84a5c8690cddbee6733959b0ae71dfc8e75cf867f0e982ddc38542b4b521bb2c9546370799a8d4322ac7a832ac95da3ef2c64b8ed4ac402d519c1d732b9b9588192bf46df6e863e8daa9abff58514f228e474ff635b9c233c96072fd35091a814fbf52a9a06fcdef9eea11a14972f4d35dc2df8d4d64e5720d556438ce92ee0888f35278fd0fc85ca45fe889dc72c87e97d3c17d6cadcb9593e74acba88ca796b0c99e3f4dad34aa04310e79b19712df2e7f342aebe40020ecd1e19ff302a74d3b0adfa8d48ce49535206efe3afa3926666a1189e150a4b3e5982ff52d9ff310b57d2cdce722011662b0a6fbd8fd4f4a95aa301a4f7303ff475d135ec99bea16178224a9ef6c4699ace80e7a64410d00069989537a941a5c5247fa0695f98d7103b4cd4e9f7e7a93d3a1d2ef970a8be9c7dec863e127a1c1dd9e4ce79bbe08715a86ad8dc0355392fc957b36671f6e3bdd3fa504f52fcbd0af51366c304ad47ca50643575e61ce74aaedcc83ecf6dfad4f6075db9228248fe4fe570a476bed428501c975a85eeb1724a62ff2e51ad29f0aedba28b8fdb97ee87f2a9e315c2e6b9a62ee7b6b0b3812904fb84ce01f9188499f453ff3a72aff6fda539eda05d6c6f6d7cacdf2b12c2922723f5858c11a665eb3d71951cd03d9088e59c6d19212f716cd64a0a9bb405373733142d880db630900bea799fcaa30e5d7cbb25908052b66630d1faba2b0495d5c0722ad9b7619544d58338ba26a559e3a095cefc572d05df9a3a3fcbd217bd14d238d1d434e725bfdbee0e84fe9659465374368578000cbc015aa2edcaf0a41430724183892f2c83ea10e10e8dfb5da96f399449c185003cd0274dff1460e96f9a370539a80546874a58b8af19919a09b5d818c426e11ee4ea3c57389141d461c5e4cbf46a62b9e8ba0e76b1ab52084823556c3580bf956a7c2c5a8791a1ab306d80e254d5b408e9f6dbca16b51dffdac361244c73d0b2bac5ef758c158e7c5fb090776a0db75219766edbcad4cd822f3b7a33b1b87bbd920e7e0e97b345656879b095ec6254628a13c67437aadccbee72646adfe46f64b756d78a069e339d10c75da5ae0b2aa839f75a5dd30824ab6d528e95926d0e6faba4e6d1d5fafc4e0845d362003472d1d7ddc51ff38945c5ac2acb0b4a9825d28aaca1d12ace00e25c5ba86ea0ee67cbec36414c1fed5c1a0d67b17b5f60b2f911b325f6c0974a8c7411864592f185df83e978898b330cd79698afad918135e9340813fd589f0e6174071451e431bdf5c2b60d5765592a59f6bf01e04ea67763b57fd960bdad0c9ba0cdf2300a631b26b5182ecc5344eae82d62b123c581df7b669a41165e99960e1f61ba3755c9c6c2dc1b2280e1dc20c246dac18ef094446ac807252380638f1f674e47ffd9ae767504655cba7349b8415267c66646c1a24bfcfff5f432fb42a77da44a0cae7d647dfce22b577abeb3e389e5f12282c4eda509d61a3800f33ce3023b7ffce7c9977a1d4e66c99c55267c78771799ad237eaacdacba67580f9184f7a315d6e79e27ee6f4b4ff15d3be921a5fc908b73e6cb664a8e43289e9f714b6e2ca4bd1d0753db163d84cf5345ab94c7b6863567f8e19104d3e7dd6f1e263d3a131c6b788c1485673e3ed152c3385b948358ae6e8955d2a6d6a56b8e8ec5ce0990e6abfaa5d9f67ceaab6a12b30dbaa80cff5de85519a9b5cb0676436cfe5ae90dc4fd1b120491dfcbe852a8df7fba9f31356390148fd7ede520ded143c908d8d043d259852b6c015eb272b8057f9dfc6187d8531a7290444aea54cbe2238db19ee9a31e2361d087d97179f9d3c8845d19eee923bfbd5880277e1e09f188d439d72b032b667164e76cbf5b67c9c642052a95e1939b67f257d4400a3fbca31eb2bdab465fbb2b4dc89718b2694d636023928f5d5af7c48cbddea3b7f51efafcc6cae0584783c627a2338b06d54a284faf761c1c715fbba761cf2559356430d568cbbc6616db645c4ba5f81ce511f6c8aff079d5da1f682d57bbeb2f97ce0146ffba8aef7f109b900c3927d12a3e798d2ee3b9d0d9d371eb7185bfdef93b84844f333b8b9849619bc66e07d028ca72c3d258317fe0601a483391f7d69680657ea7e58f0b8bcab4ead3af0c15fee1bc2e3ac200b2f36552844af288e1159dcd39c1d95ee439b118d77ee8c597d2cce42cf5d7ba7f26bc3b3bb71500f3648391c84f4af48bed7c40ff2209e1957bd8f650c2c201d7a54484665db3414651f547e8f013de572a1dd86f469be29af1128ead81d4905d786989eb4084dd22f7064dc6538e6ac24a055f30f48b875b2770ef826885ab543d521eaf464cfa85b315fcd862f5b5c05c140ec944774d43a61b81d8ea06980f7c0e20ddc17208bac381788ad5e3dd536b9e32862718a0169b4bed81843a53d9b83bf636b3e23b25979a2ad9c3cba29d99251db499a4200e9cbe36c0d9dc6662b00b35e10126435e3b62900e080f978968ef9313dd77742df92222a3e92f4ae77cdb17c8b3582f0521dd49943b561fbbe335cc0d98c7c6bbc7127f610f2bb189ef709f0777f4abaa81c136cce0671201a9f650d4db9beb7b9ae7239c8c22c36ffde87f0135c811d797c06814f98657ad35f81d1f7ae5abaa62bdc59ee47dbe4490fa04bdcc0a5c8c88141123f98765d0a34024ec881c40fc8211429b3ad6f48118f0048630eddb3c033057c06739f50fae2933ac492ae32639d1375ea37fc92a022033dc787a28806380f677386768fa05ad5397b0144cada1f54584a901468854df5c1755748927f87acc0c0f598191bfd93acc662c9216c686cdd0c64df5e4b7c20722772a783097e282e86388acd1f127e00f71bbb4a6058af4d097503dedf19b02cee69eb0dccc12012643be58d4f19e20cc106fc72c0239ebe5d2d58e078f468c460d8b9b34d85e3d9c4b8387d40bde50956896b6626c7c6fe53d57ac5a5c2b8f9caa44bcfa17e65718e84658397a430266d3926cd10975f52fe8af8cb1eaea7803142f74b1f6c50bd89a6f113dc3b4c68e3b0dadf7d444cbff8f3f719fce21ea308fbcb6469374c806178ef3d1d0df8c1f1659d4f1c095a17a1aff3496c3e83c4257214547eb9931b8ee86d9fe1ec9bc40892f84f4268e4e90c2c3280a7b38a679ea270ec3f8f26469d4fce41dd5fb2db2e6921ac1f993b8bb4f6e670a3e5005d68a8655da27b3277c5890337576801e7afa671badcb39204069ea7bcec884ee906f2f0b85d523ce06417f1b532def834d195dbc9d2ce8ad334ad1ab0702138c9ee45dc01e9761d53ed41afafc21e645ab1319652fb7b629e01e752b724be145cd0c56ed274c1bd2fa104024609daebbd5024075058250f7107803ea769b324e18ac058a64e1ff16d458cf28aab2cfe72dfa34db8cadda36ad4f6476da020a0ec31a6570d3d7055487c453912ee4c9967207ac348d6df5a2bcb41bb58d5108d7b26f90edd9c924a8e372c40574fbf6b5361d44dd666b500b81e01de7aa3bc47c508463f1645555d0f2ef6fbd7fedcd3b879df01a40d1fe29b1e4acd853ca428c8ad24870af1e1941b53befb4df0a723787eea4820d3e2eae176e425047a206e3f89e7acde7dabe971aafa60371ad5572dd256206cdf4b9603dd0bc5bf06d4ba09f451488b5119eb97735df3ab6732120ecd6a709d002c607f31a61ccaf619b4043ec747de97dfda42e0deb8a028d55ee4ca3572add0b28b5dc353e278e708ee0871561141dfdc066a70ae5c8df15a3e802c78012f906a008ead63a41ded46ce66d5607f02d1411f80acf21f0739adf9ee67e974ad87abd2b23daa2cf88963d467192eea8b5ce60431e2c6a26b28389cce64302c9667ebb8efe9668797c2a930bfbfad592c38f29aacbae4d806bcac92adf63422dec4c16710ee315ddcd397a1356ae6dcc1476a2a8b1cdf42b1e65cc28652ebe42a80f27edb3e93053c9b7fcf1e46d309ee5dafed26ff64863b8721cdc06a42d7c8dbd77c997cd76f38beb6eff39b7a42ae0aa7f0db2b9ec6306ca9a75839ef993f857e4c17f1700a9e253936087fab62447475cb0fb5bbbcd9a0bdba7dec052df7ebb9d01d92e13564e22b6e4e7f20fad4e78c112e8c56b4e08d13b21662ef7252c91198093229ab727dff01e4922a802f6485f6cabb513970f8bc4fef762e3e503b321a3f12246f0f08118d0e1fbabd42473dc279363c2471c6476d10b9b1e8ca2705606f80e7853d9cbd13c1613dcf0a2640b5e71939eb1a64bda22b19a45ec3ad9e99471e885229d80d02bc4779248699e00631c949a8c1a2c4dcefa044ef482f7f96cf034a3df42a0a8799946f9370517760b48b0e4de5c7ec9f6104b2fc5e332fe5111250abe2fe4b1415b4bfc61a296c8abe4c75ada778a09fcd8ee43be2309dbc528b99ab28d9c933df922c1ee1a0f9fe0ba25b386a3d686ccd9463b9f2aff10f36e3de83349c99b97f9de022fc35679b4623be8bf248ad4197dfeea56a5e10d4bd023074d0f828de502b9e4cb9de2fc287279b811bbdd0ffda85dac4a20f479e60ff501d208160c455f9cabdc690de5a2ba56ba599bb6a1c38bb632a946195f2bab4ce831776237ada44b433472b859b483772263f53bc097644c81a71e4dd1ebc5297dd476d88b2a59f1f02bb65087f19a8ce5bfc60a3d69529fd17b5ee59c9b5181d18d198cec327b082198cb9ad077f3d77ee99bc5269f365c24d009884e12baa00e2af0b29679473ed1ec3adde2cd2c1387c4e198c74d1c8fb98dfb03ebf23d0af7a2953b28d2cf8f8dc664812cffc67799e6840c0a2acb828204947dab9f55a7f3417be43c6dd8b76de0a1ff3a7055279700434e4f3dbd7aa84f6f285b9446c59c68ac81c2eb7e3a1f8134525250a873bbf54698adff85ce12c8d6b99be7e95f723b58c64a4691626d78f7d1d203ba420439bf432feccc2510bd7260c54df0e60cb237863db6364e6491b53e513899f0ad7c789617c880dfe951b20d0583fc5d6e7592bb4bbfdf8e1d096e465cda81479434a0af8c9a66bfc04c83fd1ee784f77e789a069a96310865f914f76c13629ec1e98e059d97efafbcc7005557676d636a8322a41b70818764deffe0831e7bf9461fd9ab94f1203e28730620154b013fb0317cb7d2a91edad0db1b7549e554c4f033c5a7cc9a463051ac1ec89ea337e1ba2525c8a10a6dbbac4afc7248b177b8d78d92dd48f1586e688ee179c75056e25cd6a3ec24fe3fea45351230a58bbf21a8c58e742e319a66ce075ef0daf09cadba2e3846018785ea54568a0814f8a111686f30c20baf5aea7a120df10ed633a2a5c0dd16de0cbe72fd2f8b6a21283bae73f94ffc25e0ff8796f41fc9ae435cd054dec97c93074185013f03bb9e9e1c3a1c5daeeddaae79865f087bab78da0469795550f624eb0f32a524d9f96dd24339bc4a0597d1554a3a8e380a85728144c142997567a6b4726436bda9e4aaeb53da2ec8fc4b9fa56a2c5f03c6c8e0a86868c79df9810f5aefa6e78f049654c07f994546e0004e8d7e5df66345dc1351c74e8ed51b0caa1f25da1a2480d6bbeb3677cfc376cfeca3a5d32b2b67f39f658574f3d70ae34e09c51d7d1ca551a37343524c339b28a76cdc3123f5a002e4afa6b4b4888713fa3ba4c36df64d2515e0cf0ece2de1702334148df13ad665c2ea020c6a07aa95c445589085199a010b768834aaf8d90464d5149386e24ed8839396d25d9fd80277d269f18224682ff37b705c00278d80a371412bd58c4458711451d265b861a54a7f2a5f51ead025a5262c2894af9ba4c39087e140c25168fab4923059e6f6479ae29160c28ccdfe3816fabddf5e1ee279b8a83a14631a2d7bc8e72302837f7d287cfb3801f6ec11ec69a5b0ab304e510cb4076bee4f4864deb61d2d48769333598341078dded72d248b76568d38810f5721fd625f9dece3d9b8ce7a77d1c9803c6a72156c54167034b873f66498bb8e27954fa7372c1a2187367bd91659b35d1b7b36bb789165cae36440c5a25bb875252bf4046657cc80d7bb2e645daa32f0d5a91016ebf78ad37384275bc053276810150701d7180e4d27a8e305ecf4c04582efb1fe56a7aaf90931a759931db5e554fb4e17cb5722516d914c022cc7890497de688cb2f3b347411fbf1829fb8ae54d5ba6c97059dd43ad3ad48d2279f5a85f24aeeca4c5469fd4a97e610cc242c80be75a7cd4320c9bd909b5dc23aa4dcd8383d8cae3e7bdcc99084f87c2608b38b811ecd7aa88fcdd94ebfc01ba9f67b49e15ca80a8e7dca7d4b71f19371644f3ccb96ab83f00b1a30f3b83d57bae67d0ab95282258be1b667acb6ab8d579f400e6996f311963683c1ca226e3e5401a56ab14d13fa8f563b209705055fd4b1dfbed7630596141b6e309677fa044ac48636c9fad62ff2cdcb36798d03b1cfd40679ea4838590a9483eaf2c76ef8ab04188a9b40ba61f839a6983d39bc2c4716ef07415d34de0c806e1d439d2e288f27dea920e921a1a480df57ab6f1c89a836ff7edcbe01cd33aefd32f432c54330da2e2e284658f25b425c58c40da84694650679079233b3e3d1c371899c21f40aee63108e71c20ea7c6e5b7305692830173eee89989068ea7ecab415d803827088060e6f3a3359c6c622e07e95513786a321b9044a03e0a068d13c655107c37e3605e5f8af007061431413ad7f2cfeb6ec44d3e0c60f0d8433b5e2748728971abc614be681e2db1cf665e48c5b9266393f8994aece361f698d98379af596dd91e0c88a0258cbe81feed54f41caf186f9960d0c6d4df38fc3d1b710feefc16b9fad9a19fae5a1a78f843e566bd42f4651e0095ec7f68f93878be042fdf51bd001eb5c930a08dc51da488953ef19629bda3e02c193f2c856278b2a50f67c074a6fcfb298464c234abe49c240f2e4c37706bb3e57e6191e895f11f03d0bcc60e56ee27af43ca861a8ddd4fb84b338fa584df840c9247c0d0993d45b64a76468da5a8fc52946eaf5e722f10a0554b4d5a3ef7c4fe4105bebee53f313549e451a13ed1ab3577f3442bdbfaffaf3f5fe3df548f93791d49eafdcbab2ccecadd4c2afaa99e502a1b6882ba81f49c67a5db9790d0e138481232c6242552d710cb69237d0e920e0d3b47d72dfa033e7f2fa70e706e901f30ec637ec322a2ebea3b6901c6e3930bc5001f6480c99568e07122cd8475a0709cf0b0c311c9a0c44439e27395c5c02d47ae9c602252f506e75e</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年8月记事</title>
<link href="https://blog.cancin.cn/post/a5c6db3d.html"/>
<id>https://blog.cancin.cn/post/a5c6db3d.html</id>
<published>2024-08-01T12:27:47.000Z</published>
<updated>2024-09-22T04:39:39.388Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="b5fc48641ce8b0acb3ce175b5525c342d08529e159a6508ffc82465272a1fd0a">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc1410fad1c84b48c5b617f8890aec91f85572d9198c29912e4da8a064a0eebd395fe5d54e5774e4c72004b29eb0b38b06dadcb6cdb060c415aaa48df11ebd518ea60f28b0d122bc0db06451079f8a4528e0e48b1b0bb428c82091cb6a60b02863c8dd523810e1b5706eb3f0fba6329e31f5362fe6722fa5d408130d539b75e97f5438826fba6cd62577cd70fecdc62dab15b69dcc8e9e0c38c0c908f44105ed87d07f539e8f08f08f5af361b000a1f8673730e95c4b47c53a3ff91844a2476530aa96b49afd09b78348a4b19f0ca24a808ac11e1b39255c5a991e4a49fdeec047680fcc40a243f9ac3b2e74627a5fcaa2d2ed52ad4b2e9a612a33680338dd208c9af897f460ac1c192b5bbb0e367242a72c002cbea4063231b514076c6b7fde638ef60d4c7421cd6cc5fbe78b4f6dc95076aa884789a467f3174a2e5e6a9348a1444fc3ddbe566e460719321da8d09aba2c8ffb266da3d171ebaae6955f8f6a3b1295ce201697401fc82ca08e3f82efd34387d31a4c554bceee85bf05a1d401571e08b21b998a36ff4c1ad435e7801b82c8f82016794eb713538af11bc76192f8ef18a8ca0de4bc8720e0838d452649029f509078da2f1075c647e44c79e33e1305d9299496ec57ed018202c518e0a1e4ac6177336af04908f12de8e028ab1d807c25a5233375bbf70f5715378420692ffa9b3578c57e0f9bf89730e846dcbdbe8a0f672c60895bdd30b3819d55cf3425430ff5acca13badfbe8f33fc9d51b958309042f6488b7150a645f980ba6c34abca086b4d6fd58bf1cc068d92f62cb40d67564513910837a5e8f7634bb43ecab20fd8ea430ec84a2264e125edf7f5d0912f6d8ba64e761347271bc9c05d9dfc87c484b3c22879fa616f2bc9467173f19dc4ac0d8385626a675bc1ec183bd5a0e253380bc7f3206ec66421ab36c971c990c71695e7cb7b091d2e6d851dd43072c76346dc088e8a6c500d0f55a49f7bc066325f96fc4d00c0ac4a2694803b770b48787bd7b640a78a20f8aa0869f3b447c451074a80ae28ed1f1213e3a35b0220a741c3c83fbd996045ba33c6db488b4c20bb9dd21352c445ed421afc1dce92994adacd673562e67fc2ee1997f90675ff092609e632fcd89959288e1720ff1b2fbe6a4ad86e738f95a26d3d84157456df38d6d8a5dfb55cd008bc694e8da4ea0c990128bad952228850c48a6b9edcbbdcdf014c63b5b1e629fb054f6a539c45106a07b146989f4c22618ede4a8519679fa3d639a2556542b21c33b89510745f9a5fa74c565a47b127b968adc4003fc18d488abed69f4270c18503431a859442c0e3d5b18d21b2ce09d3986fe439e685af491f79898eabf59453f3d1d766ab70ccd327d5f3f1731453680c51e36aee350be80f67c1a5f99651bd475ff667972fc8013c1ed570aa950d974194712e05bb5ffbddade0541ca0d43f178f68df6b5b045d94cab3b0b58e9851d717aadfbb1905662ef52b11db68657f0fbe381e49332ba312446e7ce900767dcf14cd32ca6a6902501dab82fadcbc41514918057668862e6e58f00583a8bc145ca725ddc1e4a3aac45ace923685e81a357dd30df06c90863f9da8d6fb981a5f82a09bf806fa976948f4cc7c79907418bef46cfa5a8614739450593616d2a680b1a213cfa0e1631ef345b318bfd51ed697047921f62c7b3f33d7ffa6ed6e285b12eb1b1def69e83989ec6c714bc653c05b9e05dc1fe37cb9aa5829800e0f9450f7c3be6a357daa47f4313dfc9208c4d8dfa53716f73b029e1ae54a99eaba2dcf03e35ce4ffc1ed9373e01d782fc627837f72b95a5b0eaa44949bde1d652f9dc703184b6b22242657a4ca62a56a6e8973f0c09c0567e1fd3c4af4dc08542104442e640686f0269a0ea56bfede03b7bc9b2a45a3023421267eb57d5b645139d1e126e7d01c714e2d047c988a7ff7c375bca38ed8cc4c0f7aa7d7d773c6649442c0f25954933f47b5b24887b79b894e12db4bb79935d1f26f90b47685e06ecb04120ab37b91b1c761e55d117144d664cb4c8790373f645550f5da72595395e2ad87258c0c26a60f50ced2f60d524d3a75f43129a52256c39c3407f63ebf6af5315d3524d34b24a209060ec311208a8ff6927e0df2aaf0dcd24772e0147b0f304b7d2c7763176407fc75d4e058822ed954277ba870742fab55f4e787abaec553c47889e0995522e40cc6869442e21d21473b09c5ce163327fa7235eef01b5cc0474fb967b828cad29c5fa8886ac05f2abde4f08f74c82c9b9447d21035154af8a7754291774dc9c418713bbfa1113b1d495b864d269a77251f1f5b91751efe9c5e56ad23232be1b722bbbdb193b4a371bef7ac26a859142398905d0c17136e266a45f59103178b275afd08a668bb3922093d29f124e1ea2398c9468598678f0a3bc0b82bf543a96891448b3932362685ee90a0564498bbf39e94ae9c4ffbb171c55a1bb04aa57bc5eb318d6befa72d65560b9498e7d4ce895983e3c02d98d4ce6aa189a2af384645f1bfa2f1a610d1027658f7197232902cfe8e58c6a9b89d7da36d4530abafff02416b9c129da86692f9c443f4d02b1078ad89ce08d79da4be26c15653f1a53daebbd203c1da76a4263e257cbc61d97b5b7ba2a3216f394ea289ab355eb57cd329c5818aa0da00f60d6f72120778b6bf060a3fb0252197e1df304b7595ddda642d28d4a0d2581e41d2c92f2550a5d4430c42e29c62d6511436638fbf690a25b7acd2631de42723bd130eb6636e6e3a9a8f5bdffab2796c18b23f83c74ab976e220b5d6cb427e3df094b7c671ed66993316b6d9ca41e9b00f34318cd9ce861c9b83b5c99cc576e2df1221b0fee2ce26b4ea443b143aec2cf3153cbc358dbe6daac75f6478778ccb21e256af0c743685c2ae5743f4b1cfbf340f048414577970f65ec22be76e1370bb3e7a8c1962b5b71eee497480082259510cd5003b40612271d2c4df9ed2fdcdedfa9e9aad473e3dc4b6aad04f99bb276d63d9d0e262175b78d8e3a48d99566270dd838b45a74a00e028f58d42e1af03ddb245f41eb17ecb3a284fb561f03b627ac7a4aa5a71e3bd01eb4b5de4c1266f7b22468b98c44297e5d2b65247186b47526af1a07a4bf5f8395fbfe3c556c7aa8e4ffc26463a457575ed2c61ab4f4a19d8aa9040b9f5c5a6006b1891327504ebf0ba458182b2d1641bcaf4fa36f4a916409fd21d82fbcea0fcf057e9e4b52654a3cc4b68e6c4211b90d0cbc48d9189edbfadb201b5d139a9735f85cd0bb71fc1dfcec51fc49e0339ce9d961a80b6b2f8a2ba71cef74031015561a578d29333f5f95dd768be8e7c359be561b658fcd354d70bb8179a308163102198bcb71f7dd850e7d2e1472191f1102fd25873554f8cfff701f04aed593db7f389e0a2aee6f4acc5aa6d55d92a0b61fdef8a5ca7ba277dcbd22371316410d1f82dfeaf4739cdf5305b2a4b97fbe5c8d8bb1403eaf4a4dbffd25094c8e2e9dbaff1a7ce8cd4e1e2fbf81d8f19941a5c513bdb8d74959f58ff2a2a8b4b7fe6d1c72286de58645eeed7037654b41c92a26fbbbc0b6d370a3069dfccb1ca1d182a80f879bf68e60f30d2d44d0dc9917f78b559f6e68afcc6c230bca9c61b1e1acfd12b7839e1fb10399a9efda02a944fa3c185eeb1818a5069eb0a90bddeb56d81dc774da7652e7e96b9554cd9bf466cd238afbe886137de17fe7ae7292daa1969ba04268c087bec45a2683f1fefeed9df77b4945fca09838fd883ccd54cbc219b26fbef2547c99db25d29c25644d86942315954588004e0847c43c011bfa57cf6d37d79868114d2a7e227c457aeffe08ba820fbacef7235af9709cf8963f7f2be99243e95b9f23633bc3092aa5070ab108fa0501b04976e664fb62638ab8396a36e974e3d5ec87cac1d8c3960db38e98c549c3a8bb85f28c8688febc3d547dd23d89d2ffd37594977474fbcbef5fc3a2ca871aad4a7e11becb7435f815f3386a4623e041103afee9eb304aec304c82efe730b1cdb4752b5c7bbf3c1a1dc8dea69e78077f6e3f65d5165eac86d043c95dba76a152330a7c42b7742ee06662ab3f38942f4f4f16303f72520b1a079fed7df7f629fdfe426b94581974b689501812e4f896a713465f5b319b2b65514a89963ef4167b4fabab2fa7219576bf981b5182be7e82f8aa4ce552cf66b71006f3e5478ec353a2f0b10dfd34b345825d24c38e08d6cfa996e777896fbe521c19ae5416475ef1b6fa8549fc35243349001c45718cb8c0834e9c8c207dfe115723bba0aca9e8de466fb2255b6f305917548f2220608d9a9db035ff03aa53597fbbd93c1cdbe882154b0eb4cd02a2556f837ae93ea5e058a55cf9f1c308f9241855740ce756dca0e99baf02ec534321f0941acb58d4b9952b128941d1ba5111075dc36330796e299716d3b6e3971e6b65d7dedcda8db9bb9d5c3aaf5b3277dbfbaf741e6acdaf3de1729bf61fdc17c83b8c7956c6e4bc1078e17cb1ce973872fdbbe9d54e2cc2f66ddd1415a01c0bbcad65375f75943e964d963524f881a80cb5fe8a825240a309989b5ecdd1cdbb4716b3feaa58173e7ae26b8e822d53a0845a65ee3a3b85f3e6558783b64bef2328e5a7c7424493afb38a766eccbb8d9c62324cd43a57c726665bf75f74ca46b5a4c6b802bc2066ea740cf00343dae78451407b5ef8ea04e5a34e20b04aeab42e5b08300c79d29d8ad29f6948423ceae1215ecbc68edb16f9564d35dc49c49d925ca82815ef92a26efdaf3944e41d6a47580bf9f227472692af63061ff3012b1fe1d06ca03d0d26b28e7db753bedc943cc7d6fb5106dc951e45b7f57d99ec34aae2e191566f5b4d5df88a4208bbcdcc0c17b0ca1a4b9d26c54a1dcd31154ef39e0328d707dd1460932effa496491bc9b618e8bec3fa433fb0d40fbaf0d855b48c5637f0bb0c441050e6015d3bd8fc9ae68ec0e9a1a5764ea6036db76931608b64ca88d10f4aeef4bf8466b010a14307aa655c25f54a7d6d2b98ad8e5b7f44a7631de11b657b74ac695274dd3ac7d04da5c6772bbc55316ee8187f4a9b434ca10b71725b176e35e356a162cdeae03b95ba79d2a75b8f63560647deb04063be0a9dd022584a0241950fa960b877e741b0c55f87dc049f0a7e7925b30003b48cd7cdbe4d096893f638a73cb9822f6fff4f384b4180b6eac6719bf2337f2259ad688a9ca7dc1e9217e2f484f3cf8a5399bdc091a80023b0f42e59cd2b6403bc7779fcd24d53d9e0ce0b5e3d290cca8e88933d9baad406e37e74f0787481f2f411e9b5e7624b0f2f09c18fefa3993f752fad7764ff3ded13a898e592fdfa1b97b07a6a28d87035674035ba3bbee3f6b14b705ecf9f79dac6eeb4e993ef4d4cc27e9ecc06033fe498873c7c63fcc01a3710168269d2208fb676df21fb4475dbf5a7bf286b6e6a676bb07ec9ce0d47d5d496cda5eda2eccf783bff584e74eeb29d106d9fee5140b0e5ba2705f7bd45d1259dfcd398c77f8fadc27cafe648bda77bdbb31c192e60eb74df166e28757c9c178002cd5186a12bdcfa5e9f65ce3679253e046d6f572d0fda95736f56bc5083e04b649e43657d9a11cfb34048ebc2e0ae6aad791359d573115ebd7a349fcd5a501b665f119a8a2b433f562b9d36d4c398abfa9d80ad4c0c1a7102a398cc2f0dee8595292d22f3208270e38f58ee82cfba3451f7878b1e779768033a2e8743f0677277688ab1efb786d470e87c3d87cedcd27baf31a4f4751c27adb7077d06b3d46643baf856df54d409d352c81d3e1ae12ff03362954ea5c380cc088a4e0efab03d2ed50d4b26506b31cdc8cf625986e334ad6b56c1f6b980823cc6ecceed508ef6911d59a51e10cbdd4a91cc0035fdc2bb28059dbfb986cedf0995f3eba9b5f7f57af2d9427c91a42f653753780ce3e29d3c208859148f19fbcfc1d0f337723f17a76e6d6b83c556e7a6e0033349269d51143bce12805c79798dafffa04fbf3873f346a0a37b3a0fda9e7e845baf06cd53142e6f95b4a51fcf63bfabcbec5cded37239901771753eba8626ffd84458065b820069757a93e11ca965d74d096129ca1a826573415d4dcef9ff6ee5090d3e43a30109a0e5260b64d5654e06616dc55633017e25a5a2b436facaf85badd0071b18f04cf5f26251ca77e5bcd08a0691bb07eb88e9cfeb8d55ed938f6a0c8a4c3bc94e3bed5ddf2dc842e25b9fc78a67893e2480543995cc10c0215f9a758a91ced5233eccc36718c9017d6b6decd2d985381181db6e95b990f5b597d13ba2cc27e46027ac91ac2ac1582d6a018e4c105896a6e789b37824c86e68eb07948f672926e66e07e9d6788b343c958d6ac3dc9d66d4e553f3bd9a7d2c913575e62d4bc89430e422053f460dc5c57f47d0fc77b6d9c75eb2c3a08532f1e294e5a93f12c9210b9680357b0d6d530ab6ffd1785e23d9b8ef20eeb4412789f04fea97a8a0ffa5f3f192860135d54c5d0256b0d168a56d45a88a8996da336939af1946eaf966e5eb6903e4b9673c020ea32709cd376fad9ec0044d36229694eb16d0f726d30fd7917efeca6fa15e33c9ddcc3c9106388c44ed0460fb583a4908b8014d4b986277ff8b6dd1cfb64f1e003023dea999ca3917853316dd787e98c5e98964bff3376f490c998dd754913b2146db0f9dea778ddd6df335d4da6a52c32c75276df442a5bb1abe6119bee9ed88288de10e271fa9f584ca4eb253f7468caa10772b7f3484984b70caa06b5bf3223f1bec387173ad9ed9e7748a5f708346da1027a2d01b0cf8bc69077c4a3282abd79b4e016ad7bb5e3ea1937c6b641d4c5850de3dfcfecea44615ccbf14d5324cb7d1a6fb3fbd0fab96591771562203fffd117b9dd2ebd383debb3964e71bb83fdf5b1f8d2c3cf5fcfe247d485724a8e6f722431d6f73b2816131a6236220dffbd3fa7bfd19ffa145bf65cd2f4aef035b2a24af22640802c978a6584d3dd3d423675567c9524077310e8f70590f701779293b57b801d21a3b7e94bec824405d16ac352667840843f7f85bd6a6d1f5b9aab4d3765c8af2aacd9b48a8fbd5d489eafe6abd5c43efba8c60ab04edb58bf5c2b04cdbd3ac435368b1717d71dc98ac6e80510ea4abfa7ca9879d79ffb56230aab89761589bf38a31d01aaf157c4d190727ea0473790b432cf04b43f405cc5f815d3ab0f4fc7410c1fdc39e172a4f40fb94c9b20c5fc128fc328b96994a5e5b2fbcdf2674ced7bebf91bea567d672a5b06dd1f73e8c826b722d699ce842f754833f69eba9de5dcfc56ca4c1907e09430426de4c64e5a31241c2f540101dc863d5452cd7b00a6bec3cb41bdcede3345e653366952ea95c61b563f76761a965d0aa334c97a356f271b7c0f08b6fefee02d8833c84470ee363f8649ca52a207c91466138dd95a8d66565a69265bd74c390f5469845955f5dcf62df85b76ab6a2284c14802f4790c4584bd8c2f06ca01dd46d15de99194e42678cb34fe7735c679e3a8f16143f4e2ad269fb4c1458fce1265b222f1ac1b5ed3acc6bd5fc1ae8c504a568657227151aa2d10e5c3d6436ff44ebe875d35c3252bc4f4f557843d1992ace50c4da77097f616b94b3eceea01fa4effbf5b55084bcbb36ee21c35024dfaba76f17c54c2f73a178647169a0edaa44666c1e30e8e397a60dcb27b60a4b2ce9c9a5e22c0c3e92028736a3f31905d09be556711c4875f8a5c32af9681ff22483eca1e5382f8abed4b7f78bb1508c3ded46f1ce40f1541e29169e0050bd02021ae494ffa4c1b8debde734997308b2a774a126a5b3cae4dc115a0066a171a3af56c879c76383cbbfb001c054ecbeb9f32fff284b6035c9c2d1c96ed41a6729287c1a937182d22924341a00ab4aefa65ab731304e47a7fcb23d3404ae90996a1ab5883372bd26f2d1567f99d8ac7acd054e61d41647d04efe23d9143380d24d498fc7171d8ecca6d87c963c81b8855784ea96c3d9bc60ca88f186d9f9081fa9acfde10e9e52e5a40845faf1f10acf2d03590d1bbdde062c8fc00e6ebe053aad3596f1dcb70e69ef879ff56a791950d8d1171765af749a807253c0a27b3006e4fe139b57bec5f81ccf071ba1980b37d08d7bb229efe309841605d0c32eb02a4d04c22c4ca13ab1813a72a1709981ae6cc1c3bf18e358f7083cab637e600f579558ba4a23e873ec77a5eb1cf95203ce3a8441100bfacedf8598296f90f603f1943193e01df0b86741adb8e993953282fe528c4712b9e484ed59e6d0271bb65bef09afc6fa0e6bce760560de90dc47f45458a75be2ab5a7d5b41b9fa30aff19228f6bf457878bc0f99bc5f5c9e5c20c0a6623dff252fff2452566c12b12b757e42211f6f80db8511a5592be2e0b464f0b1d4a8b5416d8ead19d8e5a0f22b245d3961050ee213dd8d2c8695c1646e34d49006723e7312e0a1a356f349f6ce05aeb6cc7e9f9879f9f50fc94019ddebaa67cee45dec16e80f7646ad13e1ec4d5a94d35513e09910c0ab2aa89d4b7d227d527e2788f20d99ff2a805e4bb3ef62f53926181c3e52845018f29b1e269ea15e71c20b706e7fdbde5fa993d2df7738e22e8768e4095d0f86a775a4f60be27b30b7d15a605ea9fa21170cae2671a04d37997d3dcbcd1d3469eb8b3fea84ef68597478a02a0beb637b3226037f64b35b087c3150bf010d607f30237704cce303590654ec9896938fb44ff0f5e069d9d7f73d95554c54aced1efa21529386bececce5b63de407921de8343f4a9cf06905c1e7245f45bc38b01025ab4b765be27663e8352cffbef65644861d01b3ddf563c1d9e0df12235f9acf651c3c78b1cdd1185fa15b5b20f3796f2c3c514eb73a4417c183f8c8138b8384b575637d669d7d57a4d4b54fb02322c8d630d5b0531fbd01a1ecd815a6918f512a0cbb2ab2d8559485c13fc72211d78320060604e2292566389eed83d3d95ed7ff9b0a112ba28360bfebdbde28d27ad8d79232dc87224f3de2a7c36609135465f5be1ceec05b252de52eb763514394db91b3d6008e90e8f78da6fc456f9c97a515d7ecb3da4487514c96d00b9f3860bf7e80152dc2cade74d086bc9d7d77247a141f2a8c1b2242c53f4e857b6decd702cb500db7249d9f1768b8bf74d1a48de75e0aadb4cf20e485b6ab8d9a0cedc96c201789a59b8afee60979b2bd3bd894a35e20773ebc48d1595f22e93e21e6d93e83e88c0bb5f62d9d4a2963b07de3a0332f479288ba856f3f1b724c172140953f64156dcae3fedf57c3be0545e8ee61f2dbc72327b1c1c6fc38d3ea7aa059fd5a3b448245e692cb8c80c822cff38b6256d6d1d60882fb266c44e7c2c87f528c647444f80ce8aa0d8165b5c0812d503c643cd887dfe8c0414e77e1acbba3f708dc8eda081ed2c1f71464efff0e69bf50f71e0012ac3f39fbe95b3fb441446465c64f8ab4ee3880add0055f479bb870d9dee6fc539089b2732aba2dac44e037f0f33659d7a756ab5a947c92afd964bde72702aa7cf88a8de267d34e814893b7d5f219e2cd7a1f550a6acf7300afc88a7b9b2f3cf768ef56b419e7f461dcedd39d6dab2729512a0e4ff7ad70ab8dd6fcc356f9a850f28c38d49c03d394e2ec21e26764636efdc157b88baa937ee72ad4fe2ed849f4a83f858d4ef24e4ca6fc2d2238d1362868a62b018809fbd60a0a8a98c66148acf51b8915dabb242691ff3b0293065afbb164dd64aee1e38f0d0c2cfbb3228b0a503cb558e872683e5bfc03f6766523f363c1ac379cce668d02ffd7a81e4a5c2a687f094473975e5408c75565bdbad1e8de522a15f949ac25e9e5cccf725a601fdc003ba27bbb40ed6edd493400ac74c1abf377418881f180c7a9eb8e753726595150668fc6e6e59a8ab087edba04e3adf22c03cffee5bca6f482eec2f1670719f5c2ae01232bf5e0e1eece14376284cf50b8df3fc5005f57a7fb08b365ba392d86f3ffa43d558d507e6ebccd7aa92a597e11efb66ea59de9df68cd47e078689acab1e7691f9e09b121e4a95cec96c3e71b9492a989ad53637e816cb0a5395309d3780f30f28103102df20c257a5df762513322488ddb1678e7fd6f833e7a8e8beafb4cc04ae91d51d536ac0dff1cda3f943267da96fe1a8d11df9c6972ba322c8da920fb543ee6acbd34a45051c7345c051948083070c72f087bc9a98b9a1b302ca54686e29475c9b544d07fc37f31d31a56d616edbf8351362ce3d2efeb913b2c3264728257eea43d592b4b1ec63fa037e5f705601ad89ac27d2b8bf5b7ac7873e68ffd5e3fc44a014e0b804198dcf31eb0e6e80004b9fa566c76b6bf90c19a3fd830ede44cf411b0aed1fd63cd2772ca4da316575d5178cfeba3f2af1c1b9e3aa1c78b2e874afc58f7a50f6a9bbf64ff8fae2b165d617e04db55103ea401db422435b3bace3d4e371679e8af84feef9088940e3f899776a425f7921e0a9c1f979cebd81ddcc2315d0969ff56650b8bd10e3c7d0276f98fb29604802fe079c6064a5c31fc8dee7051b16e7c59efcfa7ae095c9352c97aff4e113854ea147bf041776cb527e79683fedc07233762a16f3ff2ab1385bb7e277ca9ce0592c709efbc0a41945a1d851864bf35d6203ed2a20b2e7e07a43adae50f124f5547194f420ea59f4078968d36948efd93e6e53c59b2c0a9e80fab636f79eb1c01e06270f6c852e4792932282d1d7225d8c7c12ed56eac3388c08d8d0976abdf528625c01112b6c1dd1ebf10d7d6ce88bde9470d804bc9d78c95950ffd8ad5c82af6b71ddf638839d424b36596cc1dc6e6b3e38c48be78616922ebada7e858db93e1afd574dc99e91c306823ec30e695a0d8e3d34e1536ab9c4be71aa418cc0962cf784f0ddf1eb38ecf9d39d8562707e1b686d80d7f632661d830ffd090aaf425ac6cfdea92c075efc440783bb2734bd2fa0f3314b3bcf89172d9791a12d6ef1c98e06e67a23c0d138baa2d503519a7843ad6720f5c85a8af8309c1f90c879eb8bbd1218e284ef7c10d1627b102c31eb94452371678a32214aff9a9f8cd8b37bdd1417bfb661b3e20b60409058ff2cd63d73350bfecc86b15ac183b8f552185d17cb018c73816bae1fbdfacca93aaabe276479db6a3b63f0272ab13c8e402cfd948448861639a7127f588ae38cfe557c74fe8debfc2defe73c73b969e916e08bf4e0fdd9b78dba62a45dcea928a19cc9be4818aa062533becc6be69a8323ccf4242c28c921d56566655f7fb33828dda022779f52d442fb403ccebedd64a82364d802e60ac8c6545f07063b1f8f5c0a66dc50c35427ba276d6d0abb2e1aec583c0cd8291ee0995c76e58d71322272f8af321bac39b8ca1af6a3c9417320883d3ba3fa359cbc70bdd7500f6382c553a377f4c8c4268744bf5508f21aa0be660df8bbb46095a8a8de8069390a3d67804ec24d8d926f02cdb5cc13c29a2e72d66b32e2f07506d2b7fb90adb42df6a590a4a86eab430af6ade99ee84d7dc1ed9a1043cdfeab3bd3cd8873c9ada92bb7894d7a5875ceecb66f701f6b84874fcc5587c2d8f88bfd4ae2df79026b6414871695b71fc0f297e9b2a6284f296303e7da7307afce69ce2afbc8b9a461bd968d425fb89c730f6e755c95005b58d5ac0c0e2ccd9727132ccb13fe06c9dba8100401cf745a558bebadf8d349b63974d5ef8f9228aaf1a18a786e574640674f3383329b1e0c778e9267ab7969aa71fec4db2e18eca499fb532120cda663fd61d287e87fceb2f4c83ec4401322669468161476432cc9b45b3ed745b0e56d8fb21d5df6512b4e8419cfcc4b627a2dc7e7f84930282b8186ca1176b918148bdf22c961f1ea95398a4960232a37ca85ea95142cc6f8f2187d58186c94acfaee91adb5d9b887b24ac1450f42f5c79a45b0327028da710206779e6ab4510a926fe81c47aa6166c5b2a2665b10d462e00e610fa92f8e215deaf2dcabe5a0ace84206b9a815e369fdc246f33f882608dad714a610381764d1efee8db927b292412a694702306190b74084d9ee06cfd5bc1c5c4b8871742d40650a46d7b688b411fb11671a1f79cf37c6bacc4b865c2ba7596a0a7adc38fd73cc5faf799bf9be456ebf1f6408c8b8c9dedcc10d5d6ab2bb3ba463f3960a195c3d57a4cd51d9f40d83849ef221ed730663c8dcebea03be932324066df62c2c974ff061ee8d1f6804d22e97e14ac422101791df5b26b1bbe343fb0eec1ba4ee1b92be63891157eda900e5f4915d8b1b4d87a9c52118ff729e431e6bd1672f0fe12174bc5912eb342095bfd608362d73d9739dc64ce7eca87d9a23a45b6418bf0957c088ce9d92a74d3514a03827fa6f27c264f86dbe49bd805c595d521300d109664417d7c194f2c2b0123765e4fb74e3abfd26db8b9528cd5cbf5f2c80e8d20ff7fefb99254499d7e2985a6a24a65b4791d3a5f268435e3f9d652e90c2f67621576702d33c610fa14f33fdba7f8756a6d99c299b360afdbc40398f3d869ba90602258494da5fb6bbb9339ba71293d716ef9665c9bc6895c3151cfde4c5d1bf4e2ba32816334bed6f2f27be5da5cc1fc8a5dab904632c8e60dbc7d5a855bc9d6d81f74c92b51a624ee1afece7cc98ef9bb61c3ee85f05f0b2cd629001836a8dd05d480fa08ce8fe00761e1e9e88543232035644fee164fbb77faf2357b73ed5cfc60e2275396241b8e50f6e2a7d99770ee8fa4d9e9c892d2c129413d60c38e265a4b90a2f1b6d9ee4f681df09ef2539a4de89b391841ef3a4b1eea6d4f5b29c8dd15a2653b06e7b1157a16be71b7d36c9f91c3f397af95f9cc34f9e6591912bf6699fc4d17a80be2ab4c5f0aee0275b0feb586afb1ddc57fe5593c2a7b2d40586a9b1597f7253deb7478faede2373133d0f5cd97157240ae1d4298962ea97ff00bcfe30d3b0aa319d48e547d6c069aea324caee493728751ac6ea0f6dc6c7df6290e1522ab263c22ce6c46b44e93ab341126e0161bb64a8fa7381b4a5b32ebad9b348262bbf7d57038cc5d5627caff41cc4189cfe8c4163321fc8c8d3ef00f8a3d2207c7076d855d0b6855443073755af53108b9c184a2ba49e9ef825fbc5d282e5e41020a5351357002dbbd7b57b0d4b85636129dd451e4e3f48d3640f44cec57428c4b6ceadb3cb968555bcef5d48d77fb4b595c2c39667e15c761587fbdbc36710777bd678490f2f31d28c13104353573d9c643782ccb1a798720692af99cb45c3b0ba90a3252937319a76617d3571a7707767390fdcdd2b53156d20f55025c16290af2a9bcdbb69b13b2c00d0f6a801a54a8891fdeef94f5188e943ed5cafadf4d68218f095dd2a49fe950c02690d5c4142f9b644b56514d24be5e2285dd65a26f8685ccff124fc9c46006443b81f701cf7cb594489a9c8b64ca4256556465feeb05d7b83491625accfd3aeb6781e9d74da71003d880674af54857ceefdf41d3e3429a908d69aef0b78828a6e8258adacc6ee0962cee6d88dc6fc8cf2f3af489f7e9fd21d0c926e806d56d5ac31bcc8283647e3dead203bc2516f68665430426b8dd24525c28efbbaceff8c3061dd87a37a8405fc72704b801c0f96c6866e5c1ac4745692555b3b1391d2eed0b387125be1c8f332e04ef31c004eb848b4d8dda3f8e1bee6af0dd1e7ca8c47b522272a5f15b9923266f25b5c004ea274aed5e803f62f788f5a4ec5b381e208a5bc8fe173a893357a1561003586f9b92ca317d14e95763c9b4dadad7dedd82e7e1cb4d49e0763b74f5fb3c74678739ea6017bd346a8e62ec2a016b961111f4db71849bbb526d5f8fb3c75b057715e1aefa35d47d68548dfeb16fbff50da173cdb7903af0e38be75d255467f31c0bc2aff1ef190ceddeb7ee7bdedb0f5a088e630a7586d45b95d7cc1517f7f323bb862502ff5dff11c60a7cec00474649dab2dcb4a51aeeeb21b7c8974fcdeb7e2a73c263464d5460c572acbcf61b268367311e06345a1a3904fa2ce515a889d0ebb2748669502e7596229ae2cf92b230cd153a4eda081ccbd8378b9d262c0258ed3e10c3b505bde1a3eeda23036bfaf74fc484a26f68ec44f7cca99819c3b80e5cea0e58311d8d630dff7baa9f4c60e4ee56164b264f694c2e0bf8aabfebc3ee008f77da71e75922c19c5fe9daf80fa5992b652500e607c3d75c95047c4a036f00bafa0ad68ceb6f75dd270d1c8ca280f330642aed5d3881e59f73934238ae6d81a5fa40ee21a63c99aa946a2c925cb6fc8665d2b38c6e4522afaab0270d072f3aed306028a63da7d04c7b00f68d8b28614679cffd290527ee437564172ff58281aa0f2d4461b4523fc2612f391d2010fc7e52b3bbbb55afc8dfab5308985eeb6ca72dd3259c2862da297a18b0fe48ebd6a86672b9d20badab2c10ca3b7ae691d9b5628a187c06da5b3e42079d5cd364bb06402f46b7c5dcd52e7301b83d570d5340815e9c780f62748fda933868a8cfb849d9cb1c87e604a4cd8ff73f133895c264c38e053dd260f2b69b7d4c6cdd17f64bc3ac64594e6956e2d864fe45e7833695308c6937c9de3c34de182098406e27767a8d822356a7ed49205e564f62b5ef870b3d29c53d85c2f8c2f5cb6b133a048906802cfc63e679c6a4a9ab2710b286aff2742e47e534dfb691c13ee1f0d1c4974f57c9bbed4d1e559b98e32eb499a742e091bc478069d136119b5ac3e23c8b672be97b523a5d412a058dc2015cd84e20869f9354fb21fb8aa89e20a260aacc8c3a3b26f3cfc411632f01fcc12bcacdcdb4046e4b202a39df99d02320d08ca14845e68e12f22617ca8b8501097e140cfc891d8cbd86cee236ee0daa1a3724f60fdf8b4a7c727852f7bcb7a9342f3ed120da566138ca79409b951e91c4d298acb3955f1578f798327ef33d976bf7a0410377c5179161e06c1f725ad2224d3d22cca5abf65417a0afedd642a1b30cbbb214d3be318ea1d9de7904b2faba53bf39f50d681db48d6de39db04f77f00df5eed3517a3f87ea195e7de3de291def601012eb92f56fa1415b542bf32339c7e83f0d5b97d6abde4e8536b82512cb8fdb4f0d70206bd28fd4c05e8bf80dc942bdf636c58e26c954ca85786ae936abe6dccad62c82f0dda73b6e4de7e9f6ad56df487b21cabd13f3a498b50aa911cc634e53d8d9f511c10a37a7b847b72a63b7dab4a1a7688775344299e88b903647cd21bac8188a59f815a78dc041b90f6c7cbcbc163b2f897b82cba38713d1baf23e3eebcfc872613558e6ece6ca283ea01414bad2b0cdbaf39537afd1f5b67ca89987b13e5819b7dfefd60257de4578335da0017e713cde3822fa5e366bba7928abe484b7521589bebf9e0f90b2b7401312e259b1a45a431227288f4c4e51c4be30f38e85f3636b33706fd6bc9b8aaf289468624f7dcc8366930ab02f82ae435c72fe535105336279338de908731e2a61242926d825929f2842701d66a57c772e40244597e052ac41e909c92cbbcebc1386bd31ea7b50ff9e607d5e26c7e32e5977bf6cf82b916c561181e6bdac3ac53f711abd3efaa662b8c20aa92acf30d27b7c98b7e65c3f8bfb42df3b4890165365a6f49c5d384dfdf747b78e6ee416b2ba4e2d75a9b270640cb6d8430f3ae057459cd7b667de02c8bd606c6dc9a6ab732be2efe342a11b53f6112d6e8fdc44fbe39cee52ddc8860b7e3b30eb4a8230d0d7bb6f7315b0cf63064682323ee0148d25052eca7e7832f13ee49b21332c1a0d67d2a5364b544d1261f5109236b71ad3af6a108fec5ed2c4d0fcb14a04755ba7f550fea29cdf53e4479ff48b6d2958edc8bbd4f86ed4fbd460c497df0cc993f1157611fb347007cf40e8466cf5e6d54ad0ee9c2e17ed51e8f27c7ea12dcd9269c580b5efe442e91b45f6c176f037d8ba436489d908e70d9ff00c6c3922397579e45c81dff0ddb11b29e465535b773a679b8fbe2218e8e7a2fba3a14acad8b4e134ed0c463fbd56fe64943018568becb1d2de37075d1ad08a285cf426dbb864bcd59ea4cc32de264449a470d6375c5544208f07a46020f0267f39c1dd81d1b29f9111359da00a1c583a2d576f4a36f4a01b0c5755332afad92fd651335fd021c01fbaf42e172e0f636fd2b3f96fcead1bd169a69b7a2e17e0be84bfffe399abbd0a176032c01b9c22df142820eea4aca773b0cc40d77b03aa7e733183016c422ea36e36706d2cf6e566751a13a569905da13cc3bd9a0f305e53bcae9006545b1dfcae5135272db2597fe050aa07181cbd4c2a72fbb80d69e03915b4cff8ee6dc3cf102891709255df25ac94ce033181e5f2bb2bc51ebae1febaa92e8794dd2705447b7a12e63ea02ddea906272f1fb06f2a052ad94ac8837e92eb94b886e2f7c85fccac8ea85f4d1413c7e01faaf8894dc82204686104788a77ed86675d1e6e5a6abd497ab0e52bfc9749bf4681a806f7adf99a802d24b564ee25dda1ebd88100c3554b17b48043cd69ca29dd92be391bae3773678a485fd805e1f6130fefa22bea1ebc3463c587fadbc5f827723914f13c414b94e5a4b68653013c85caaa9f877201178c64e0b439859e0e2ea3ccf8bc2a9b1df3e007983933dc284912b27e2cc0448ddd1d2eb1c4c4b592d5c99afe866b3d22bd72894f1c39b17b7ce10ac78f6b12aad4389f50d2ad2121522f6de2ed630059cb8e8e6b30435692f3ede76a8f93bbe17d7455cbbbf6d44da3ec982e989011a443a80d39565d80e1b05432e2cc0c6b3f4df32250768e595cf73f196a82cd595b43e74e6a4c565afb8891634247ee09fe11934b48842e972a3cd4aee581a8a26f670d9550656af0379001ff503ee6a71d7a9eba0f12b1465e3a3eee1c32ca57a4df75f1b7ac40aefe0110c33bb854f5c25a0da0049480dc45c5546919dde381a118a2bed22d33d43c5dd741928327bb7cb90855efd176bea670f44e8f360173cb04ee29be640af187d9541e9848021b96d9c500006d0fe594180196a7522485ca0a45d6a9fd6def8fb42285b6411b7b8ae738b9b8be0b43220ca2fafab7e9d393b68c0bc959943d3cc122797c8bbc023a21534c9009743d0bcc295646553688d55e747923c59daf1b442c438cbee629e8812360e0097cc242668fd3a563079f90d721c990d7ae5e6d2e0632d90d157d53a18cf2c6791140bf9d6de5af04d8854dc056ed00ffc64dcbd7dca7d52ac2a44df20ade38b5a88d5a812834a74578b494a79671d6117b</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年7月记事</title>
<link href="https://blog.cancin.cn/post/54cd80b0.html"/>
<id>https://blog.cancin.cn/post/54cd80b0.html</id>
<published>2024-07-01T03:27:52.000Z</published>
<updated>2024-09-22T04:39:39.388Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="f6f1fcc2a1d6cbf02053379779055fcc81794a2a31151dfeee24c08899dcdf40">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc14109d4a4c609d2341758b0cfd6dd7445862a1eb24d6f776f2833b450ec0bc52e6600ea5da39a7ef2ee732301747d011bf7fc65b4d991b4e4318fa9bc73d53be858e022d8de7bd7f2fa238fa28a04a1ce7ff72748a55fec0f177653c98d3d56e2575e445ca045026f2e824ebcc9e162879b8d7a2e5c927acf966f9388346cfe06dfb63b94889a4bd37134c58f7089a7a7a98313459772ad84d2004d220f2bb10da43d53159d8d0ca6e0a58b27161a782553c7ce1b7a1c720b58ae42ed60294fd1f75c302686332f3e3c420e946b62d9a40d598c1a1a8c1ccdbe232a41a4628add3ad4591ea709543543903146d45c8b6f14441ca70b17ad5b85b770aa0e2a1467dbe6901d4a47374d2efe15330645535a31b83dfc532e51593a79fa17ecda1a4e230288de87bc28be7b6c7afd23c98dc1c38649495df70288eb6edc1984321e59fb276c65d919c17b8c460965b30343e69ccae3ac204ff1ca9370a44840889abf88121c9b4684b9a26a28c15765f20a81e192f234600ad7903d089899a70f470d0211d6f3b853de5f35e641514e80283bf7313ebd809031a97ecdbd274cae07fc9471edce0586f54ee0f0df3c343a3c85f349eb54818a529efe230fa0e12fb56202dc0e12d2360f6d645a301ea6735c9a60c44af42541349507de26d0698fd4db86f79c53532a7f98bf0c4ab4bfbce86805f5cc6f9ba599a516253f7701248df8504951746e102a8b7dd36d75744e1f34222a25458da464cf41fadef62cd4e5ac9d42c5e94add9b87bc22925fd8a1be499a0a231aa3bd8646cb18623c0ffe9510851f22cb367a161952a53a49e941f3e52f23a32af201238b8e67f413c111e216b4aceb978e1b4a5c79626715c6b6a4f634a40bbd1aa7244932ea3619e63a983e571e0a3415aa9fbc9cf7959fdfde7a45f9741f7275c261504b443ee102624693c08b93b7e03da4820d4c9ad752ddccc4c0d6f871096142dd3184051567f1e212ed74634d90e240d8b99b8481c5cd1a3d8e9c6b2d6f4f54ab2d3f112d03bcfe5ff1e4bd69be5ad7b6412ed9b62e411cd19a50dcffb51c49e704fd629dcce7e43b278a3462100fe954a4df871f15c828929d8728b8b5f677cd86cd4f0906e8872cd82e0a92d8a032667e1cac303f3ae342b71f1fd0127911fd9273499ff407e8cd7c6cdf0c8cce9cb7b1710138201e97f96ac22c5cb3542e1ef9db5927dbb2139ef8cbe5f80f7561e21701f6c78d93e819a22efe1bf5b3b2501603df89d1916c4b9fcfa1972b3dda4cc8c005ee639ef0fd44ad3747da5d54fd7c711aaa9a596f73e12ed8419fda2d835f9a9eeec870bfd828ebc2e7fab8e5c98f675b662549fcddd7d66456273db6d114b783ddd702456f562f4942ab4abf72f91919565141fd890baf826131557195608d0cb0de352793d5e13c7aa905bbbf4352fb19a597580f1c8d448c7dd316409c9ab45fe7d791eccf82e50671d8978e3da6c965092c5916b2e38b0ba148371c1cdde1974f7c5aa5d1ba078cae19d21ec743e8578db63030144ad2e9dc621d1cde8175ceebb80f33a5622aa9299f5bec48aa65a10251faabb3df4f0fed522963f71489700eb8f56fcd1b429fa72bb26efc3c5756194648de8feddd83eae329bacc6ce4c9a6c0129eb8d16c1e843e21a3ec8b7e54cf57d71512f23448e228b9441e53ee0e2c7623d115ebd25094a2709341e38d0b35884584e4218978c1076e9d5b501fee5572c3daa9bae59dc73596f79387613012aa26c80b4838c305541a570569666a37d2df4e66059793c90efb93788795d40e16c4be1d7e7e140ed425e4585d7cbfef0ed5651c260388f519a3e9bd4f2ad7c6698b4b1d5774c747b7e8e8b5f3a1ebc2e4f98154b848412a6853c0da8398dbdaf3571b29f59d9d8b6a617d40c5760104fc9371370523890c80b63046ceab983ae9df307ff51b77d68b4681f47b386851eb71c61eacd62de6a0dd13c7bfe6d1bc73c50692839a644ea42d4c63b350b1c5db2db669a1a4df8a272780d749c81b4bac0033747a79be7ee5abd6695cee59766bc2ed34091ba5c1253833a9121ba7b4730494d76865f0a16afc12e331987698ab1280a1849f0d185f9921f69416311f57fffabc77126192df599c7eeb2fe1b677ce992af002156249cee1dce72213b46da590dc744544a3ee38c4b6fab4a4365d1c75773410ea59abc1701f6f51f924453390c066e6f8c1a0fcff5fe49c5fd4faa6f0177a09c928791bd426f8e9e875ef1664a13846ab0077c28124688966e51604e5f420eec915fdc4438a32bf3d4257d9f8fd9a1065a181d79327a303283559e2357f7ec7d1c617617858fb145952745f56d27327af8ababfa2c17ca609339e66873761e764f74094ea3a3ebb54cc9c8b652bb8134c8c88104df819dc8774e28041424db29e4e46c3048d0791b082e5abf5b694e0986c1f008410952f7dc65170cfb4ba6ea9434eb3790cc37e9687e99dd55e9c4131e170103e3a372544daa56300a212c5c733d4b22cc4887f193682e6d6abaf3c78ea707c626c5e3307c849b0f83d92545edb09ed6c506c43281db379dd5c32adf460b0eda24857c9694716c99100fb828017204862342112df6cb81e823fe0ef89c7e5009275a9301069cbf04e769ff65b8fc02d8b86d3456ab34451b04904ae4a59e2d9f1f75a56cf4b4f2e1e23883df86752c1220b54bd8273d45bb6d8bb52d5a21b22f3e0303edcca21872109d66d5e6c687d6178bc6b83c0441a7c3aed30926eb815453417c4e6c0c724f46fa85fff21435b7c28cf172758ea99db412155a4c35b5461273e82b968921e943c99e357c4dc1e55143902fd99408342cbb2eda1316dc0334189deac8894355acf9ee8eb9ae62bd354803a42acf1a80a63ed75fa3f9a6c0b0a4430102962b8735d4491c700d8a6e51a0829e63c2d8dbbea92944c2242b59b8f5d29a89ea0e01d0b1052610e76890d57c1718bac17faa9c0ef4ecd21e7322ef63289cf95732a3e720cebee373a2a3de9dee9f5a8f0b59453e7c5f6fb9861d52b9848e94bc6823a34c59e6594d1d0850eb7b1743570282e9e03a74818ecdcc707d89f29fe9ebddb571c18d7ed3512ab1cce6fac656fbab1eba55dafbac8379ed943d28ccbfc4b637b4fb58a5499f83e5a746e7991b9e1ce861d50ffcb1b58ddb15ce1bfda05257633778091069a73dd68490384c9f5952cddc610484434d0e114e6bc86b1f2f615d26e673691b4c54e9bcabd43ae22c8013c05054ddc806cbf042dfce7e714c7e146a7c733e734d53282bbdf74e53c607f05f70517137bef14daabdf78ae57ff3cfad41df25f4763927b189d73330d14c4daa65a2415c57b6444bdcd8a23b2c669d9757e722bb0001c63c07e776e83a0e546bcf4ecb4167e242413cc13fc788036e5c5ebc3827d71fb556fc1d4f17391afc2e53ac1d9fdd37b2f4a2bbe912e9311ec775cb118afed536b228ed25cb9b3d0702586215aad2e0112253e4b5fe7bc0d4a69727319c1a306f8b48d335df2080ab4e65c12a6fc9548ea3bba0d2377657da136cd72c1d78e95283bbd69fe94894fd211ecf3394994efb02ff017c6efec3031401dc2d6a51567dd863855d13dceab3ba5ddcf3e1e35f0b1e4a163fb505a1925b2d0a64772bce5b623314c593e2bf649a78f154c5aff6f0a1440fb012b9a1d59f0fcd625913fb2074caf0ec8dbd04992766e7b0c85e14d3d569e73dcc4c85149d1df67da1021c191a1d463cde47f0bf93df1657a750e672de645874781f7786148cec43418dd8d201258169288538a2bbff6deb9979f37b5a1d9a700b87a2ac7f531a54dd59c8fefae80b9c4cc23f5d7eeb6ffbe0a5ff7b2fb209d6c695d774ef1448441fe71041d9aad3feef17f3507eacdd5b681548d35a226cfa73191247cb70affa06bbf3c52cfa90cdb8149943c26bdf562a61179687da9103d4ed3faa6363fd050c2da86f337ff1a0acafc9019867016a71d38d2058bce67d31cf0880cfb5a7b3a1075013d76a9057df319490c736ebde1c5a70257d9eee2837a0128291553b899db0d02ae4cc6b59b9e9110e02b1bd5e894518fe2917674884a60092d20b04fa9439ef50890edba438b6677524fb6d9c981023637c98ae90c603d675b840c22cf980a3a25c119fe97fe29dd127f720bf2f307660513043be79eb624fcf6073c499e378229064256cd6e3b5d0c625f50a7e9f07d0658155ad1b76b64e80687f92f3fb36d99a6244364ad632daa1f7ee7bdce266ea8c80b317b50b5d874ea12587cbdec9d6943be8fd4ff4058a3ec762e1504d24363752a3e3849a9341354fa6799245c8638853baf45b8ed6be4f7d8e85263dd05c7636a4cf38f0ed7a1bb42cbc435a55e7b30627ee56d5767b810c18f76d750abade5d0631e82c6764f496d0725ce7046032492da9122618cf61699da1ad97670c547e3bfdf7f0d8a6ac6e210f9b83c30092f92ab737969b3ca75a3510377ed602e617841c407b3fa25e94fd80a35507a2540f5201365b3e84f929c8d74e109e012a4af7fb2b8c52140ff8cd282c0aef76cfff834d59244b1f874cc59bd44072568090f918334d479e0d0974b4f130a655a4740105262dbf0f2955c3c3d2d4ba30fb0bed89aa30653d3bb03405e0b380316fcb32007d9cb0aa3e46239ca127faf2409f614fcfaf31b799d1113f519ce3601c46e019fb642a1197353c9a2ec1c97bb28a98f814462bc5827924de91c61d1310f306f12581b72e685275f720f26afc217e21c35c5816616142ca6d3ba0a7317f7846fa52b886656a19951633182719cbe3ee9c067d1c0b72657b98c0b0ddb69664d8fc8ba74eac66bd5dc5dc76c990cdc9b9a40b67e8e8159d3fb8fea8c74836466e4de8f045b38779ac471a92f57cc625a1270009c093394bf94d6c54976855264477f469811e9988a0e59277bfcded2bf73f94f2a9b8134ba9179a664c04a937b60ed52ea3a69556e44ae44903a54a67e2f5771d02f91fcc7956a23d9176805ec6571535636747dc2a6ddf308d1d02094abb4733b8dee49374fc694b054187fbf8ac93f3ba5d65a37c399a722729bddf39ab1dec9fd5cce3419f65827b7cbeef36ebcbd0953c49ab4236d6315339214ed1faaab119defd99f4c7b90090e146db3c6711233898995974b1d2bc2e3feb497a64a49cf3f0689cc8d18e11da5fa1a90e3d3320ea8f0340cc5ef20952816805f20945d0444feb46dd801c73e2fe96942d56058719e63608f7eb65ff2bcf142ca3aa5a45d15b3a9b501302eba8a14c1fc5a1f5ee2ed29f52648e50654f81d759862d07fd4cb11fc528bc0b53b2c7c680a3d1e938b3529e0c71f72a96620b71b0a2a83521ceff4bdc02190771432e267d9219434db13f840bb11a57b0a72f5df511520001c9b89b9448c92224b844802daa36e8822d484e1d33c0d79b8a704f9f89b89c593ec83de812efc09d36d2486f6bf7f522411819e5f05dc497ace7916b8a816ab2c3c1e7a3b7721ca4e869297ceabbe4400b257dd9036a8000dddb61286aa4b063be32e4a11855409375652b7371ea30b03055b32803e87e6f999e4094a80715840509f559c7fa0f322279ba6e83a2786fea65317d51ff789e16f3fa8b1497ffb1716f3eba1e5e50137356a229d230006518a9f599c3dc8c2c5c963000c31af9cffab0b62af522d97a06828d168a7ae4bad9eb758c6909076efd3ba11e430e93b8eec1150468fb5e529f50eb56ae7e714f1be4586ad18b19a5a3b7e3f3133d58825c37841d4e2a974840e6ec751568294aa2bcf3d299758a95e321bbd02ffc4e94ddbc2b95c8f1cd76dce425b29d5b6c551f24afb8ed95e1a0433cdeeeddc8acc2a870eac0a6206fd1bd3c08aa3862bc8920a41737bdf7b60459940007c236d7d89ab0eb55331a1988735cb036bc9a4290203b55f8ca876c738f2580ae54e8ba2966e618d3844056e4352e6f8b04bf4c4211e17c65cdafbdef1a1dcea01b83fdb6c1b7c1acbc5baefa5b8ccdde4ac2800e33408a379c2619a1d221bc6c75eb76f06680de2c00cacd3e8721d4863fcf3aa95b9afe0fa295537c80f5cff7fc59b915f90197c2ebe79d599cba2479fc42db6606418b566c35b83110e22721dd0f9bd0e75293ed9a64646aa489413ef02f0b32c0283fa950b292196cdb8cf2ce2821ed2a619bfd46411dad735c1a29ace40f698c4313f5b37f8aacb5d65b5691beb3bb3f0d44ed9f6544fdafaa36b4a77e119fda59b4d628d047ae1991835b01c0e7094cce7838533c7da43fabaeb0a1b2f251d830cfcfdb2d34cdb131cd677dd077af82cc7576c75dd3b111ff0577c8e293a0e964c7916b226907ab478512dba8064839d8152864ca9e2c255f844d0b93e83cfd392a4f6940c1bad213ce3dc8f818bad282136e5e99732cc31d309814c66eed73c45bf53429a74b6cc1891d9df172e7a9394bfd2dded9cf85f6fc3fa213ce0a73a8c515c9d4240bdab9d140f34666442448a603d58ea079a42f94c46aeb6a3d033a8f702ee0dea9723e292807c4875a00a66165d079dfadce2b8065836d5992668877770c58f65e72bedbae9bf3e8e0d0f1cc7f9646f0c28126a0bf8b79661adf3be958543a655965dc05eed13f71a4f84bf421ea0540a758391f3becb5f398d8e084168ac84d0cbb91ba4cbcdc73fb08ed007d1235e79ae018223b522758be23657c5160a98b4492dcf7764382a0880ba7a27a13ab32d5e7daafe33cd993e4a269edd9e10ec9c3ea71b9df6e6098b84d8e7a49aa2583e5fa0e3b9aef7c97c708e4a16252817ff1ab08cb685a720aaa6ccc96248707dfc3dc8b1b6cf29eb94521dfc07688830a8e6dcd0fbc0ea8fb072dcfcd139e7f9b8d84e07b1e614a19542ecaae3ce29bc507f8c2282f6629033a0d915e42a8224534956f1a2ff540795615f0276b4a130770656b1951e4f2b714ca2d8a6801b747bf92da259e421ac712d67027598c6370dc842203a7a77d6d635107eb31d8026a373606714b2eeb4f18a298312e5b632ee23cec51bc9cafa9d599de17fc36349e63923d58ff5aa30518ff598ce9e4f52964c8b979f6a182fde54652a578d85fc1353c345093d76471f28be6a7699fae69da9f9609d61cbd6f0dcdf89bf9d79ec0f2ebb9d3abebac7e4ce2de9caaa0b38ea72da0eb3a793565c1afd927be5aab97be18d045903b42633cfa47faafc41cdf949d29d1efee241c30e602380e778ac33fac7a237c66bf7ece70731c1020c9df6b8e0424a640b6b53488b9058eea2cfefa8cd814eac6b0fd311cb6f9ccb261ac1cc0a5732f5e090899c2b43e0e456f3f95d3e28fd09ce7ac985342bec0cb08cea4e9d97402d33a0de7ba1675b6dcb14edc642386ef6d14c11dce9e4630ca655857162bb675728ee3e510a642cdd3c546269bf713ee080159ead947efb020ff4612f001953988974bbb11f0e970476f86a705735e1c7d8309b871edf7179ff58c9bfee77653b38da067710cb12caeaeaf8ccb39324f93557d0f48bf29430273333cc250e2253f037dccead20f09547a481eec4dba2f7310a7550d0656a9da6a8b9eef460857667cf9ba15a929feacc0616879c056d8902b8d15c598d747da4b65e29e9ef54c22e8974b188df27f12c3dc29c0ae75a9e215c0018c89e59f6291a74c805acb705a5e10e86afa453d78ab4cf0f26f076d5430a2c16b00169bf147fec217209513d71ae3e1911885fd13a115f8467c6c3cd96ca3792620fb63feebe89ebad21fe144a94658253638e613f660090df01a35cdde0a8ccbcfe0bf7eebb59b5b434135ad667f26a2accffe09269106e26578f67f5b49c275abafb4b5da65f0edb08face87701da03c4c5a2de261edbbe3fc26f34286ec9172458076b91b15ddf0bd91d2ad474669d7b5ecc9255c4491aa2ac1fd87182d308bcebb43511b9aab181652d998e2a9545e444d035c88447538c1879a354b216adb0c435afbeec87d76fc664c35e14ba484ef935b66f968e78dde4d87777d58ba2123cea9971380a6b038195d68a77bcffcf1aa6b369d6835b6933ba621ed3af51485577334d94be5f3c772739b24cb04cf7c9bbd61c09d79bd6fb6cf04f36d332383eb51c7832587bc591a00b4fc14ebc6333b76ee428abfa18005868004bc3219c669f6995f38891e4abb6ca7cc7b0969d9b7faa74be96f4fc27e0cc67a53b8b01c62556043395030bc33c0dc3a9f5ce3c822f583d8224f92d467e404573f37c7e2392f23c7fa23eaf0a02ada152f78178e5ff6c200fe08ce719bee2a774759fd046f3c831a0b9a02fd6a97d8cb01c7a52f90d7c0fa7927d5d705eb341381c7e51d31226286badefd60b4d6fe4aa2f7602a7142ca82f36553e88539ee31b3ddf75829439bb43d19698610882cf488c56a140f6b0d0db99a9ba2fa289e5d7fd5dfc7543158dbbc7fead14b6382954b5f22914d929d4985c9e2bfa7aea58843004f32c31488905b29c9d2b6d0474fd3199664a3d4dae50b81229938c08e0db48a6f2c1bd076a931a679ed67b21214c66e2a72ebe8065792b6d79aa326d10fe741b23456a674e2714d4af8b8bd9b177c832b92492221c180814c8408e051d04c69b20d86c3f783171c200f6c7e0fb4595b05e533711cce2f11d0f12a2d0d2a68c10d0526eb875888cb4d1539118e2139edcae9812e7a14d180686e1c86ce3afa9c4675a1ba1e16835925780cf3c4cdf85ae57ca63e6b1607db297d02926608499430f38be63e7235c8b24945cae95b4776e0ffab9a9b2207b6abd084a86354b6eb359c77e7430c20121e1026689e54baa750b3ea65b5868aacba8b0ba0bfd0de1c5f6c4f32b735f64e4d0fc7941bbdde0c507509df801db6f24e64f4e85ddfda65b8c64609dd75c6ca597f60d1675501921adb4e291754dd2206462eb72c8a870409810bfa26cd006144770eb0f0fcfd0844c2fd2687314a9e6b991a670ec3f5e2c3e584bf2b09a7641577b842ab5aadffad689767c6e3a509dc0080559505d32b713a5c25d5b2b3b31481cd07e5e6418c419d48870bdb065dbd8c7b7db0b6d9758d93f8287b5a767b111fd4b3baa93d3618a1ad01ab17aef3d50cad5b7573b33cbc4709f71d8052c69aa8ab9398d34a1444a5dd27a7266ac46fd46dd18435c69c42c8f1aea6f76e43c62be552dad328764fbb143374c149d7344a699eb3acfc6802f0f35bdfd6382be426a9fe5d0b960c2dc591d0dadec6683f347a76d61ba28f04c45812873ef8a876dd0b701ceb3f30b52f684b20289421e90e0aab9b0cd101e2089f3ae940d2a6d8cde7074fd7caf4ff519fe4df20ec510d45699bd1bf5cb2612124fcca626f7ad70d81b61e8fffbb4f3988e239bd7536d00b91c971b1ddf1930448830b082b3638d0eeee17e223cad92efbaab0549ff27fbfaf2d7044c532cd919870f6691a316e11fecde1af4f3b3573276017699c25992e151a2f68e3ed89260e1a62ecc25cb0cd2edd8741702b3b87e25842181a24fd7a0ac6300b9f656bfa07e37e9fa4a276e95de82c37f28242bb3fde0e46916dd4615a4a52e4842715f4af7d4818d546d813e13ba54bd385c2126a97d828ca553f5cb808eb0a32fb8cdf6b3a3464749c02e567c3266a5566a31d6b95a4d3cf7d6fdc03f5d3769ecba3e76069ef77b9956c1d9d7ceebd570c6d0ff2386b56b66de380a71c2774ac368372d6e36414ffbf710701da1614e135bb8346532ecb443a74e48f8bbb666b48c4839432fe86caf17dec3c6ebdca2ace6b8c0c2b343c79875c34e16104580eeecebda414f77a3bd17074ceb6f7cc01f079f224f876b8694e36f821748fce79dc690f87fabd7f84c06bc7148659f1e1aaca425e180079d45807547728061d5fa586f4c75ecb876a1505438db28a6aff8a3a74965c3d4dacd74d00b38418af1158a7318ede38134a752d6f37e10aae68193d6cfcea663214dbaf06fc5e9c718146e630f7e957e383a39d2016c27e7f71f11941ba1bc9752f3547299b11043f3f36fd1f3fa25e33056c787bc047a36e5223e25ec3da0c532ceaba58ebf3ecda9f2a1ad41623f498e0cc20fcc0efe2a6068ab1fa254a79ced3d49c83314176172a93d7c27fc421029ff9260cd6c18a232d62985211901072cf9d976f5c01add2933649073e33643c1262bffb6e93b650e9f44f781fccecd1f672b9b140559a73092048ea4d98c7a7d521f598a08431d42054d0a7e25507cfdec6f421307dfe7e26796130387485e82472dcffbaf1898fc980d29901988a28a1bb07164a1a09745aa31254b051689778309b4ab9004471789a50ddccac92823fb089e0eedb781354f2d78e3308929879cb8f0a785607772149e83424bb96993a0723817f9e19a955730a77e846c9fd1d427230ca29593d14ee88395fc5be04237090d318aa5096e99cec8cd81022fb418a54133e95a19d838759449e437869d94e9a6cb4827933fd427fcdbd20767efc3537ace8eadf14a99d882a9381a4fdd7ae2594711f2020e3745f883213fadd5558c2329efed8aa2562a38e2408be015e341b86f47dd63f38e6d3990a3b9a3c33a97a307e192aee38965eccbb82c9832dfdbdcf49fff212109bd644bce2eaf873b469416e1eb6c5ed883b6ab13ff694e2c94569772ee23fbdb10b58dc00915c9e19119b0cf819a7de5649d0e3e2088c5f76587b34b725bbaab3beed493a612aee07fb3c78ad16a8f7b7d3d82f3551ffc69063f1737071131436ab93fc27a7ca8a72ce7cef7d79d3631dedcab2b3d01cf66a9f36864d99bf1134bbfd4fd88158bc895a3a1e0c31a3948d69604ba296cb1618a2f65d95994182783b5461a0300db52aaa42172794b9a072f1a68e52aa874c41ea5e4fcac56706c924b8daf5c009e0e7d4dbacbcf22def129d9200f5e08d6a82ef9590e20621897da17fb13e5374a30dfd49d7e19fb232de7157eb82edbfae8078e0207e8287c696e0fc8c53bd9fb914034b38a56c41d525b5ceb66f1ec96798da80a1e2b191508751ea94c1d8c921616ec162317de8ab530f0cbcaee16849bbcb22ad3e262d853d22e41fd8a353c75c2b13f948802a3ce1476499cd6638d90835ce3a1eb342f382fc0da603af509170a390920fd5bd62b54259397e4ea6eff34948e422a9d5a771b7f80dbded457751c36fad4449de171e6b17e3ed9b47fa54c2a229832697b23c50e67534a82f35adca6ef21f34923b03e165335bf193717b16a5d81cf997680240349c9a3b8a0e42bb2db23b861585f92ab80e768958981d45bd871e01b88b8c644bb63acb3b9b39213320f7433e48ef16dc64edc6b6e633002ccbe4407b6419f6db8fa4b0bf27f939a50ffe4a63d2413f27e52ca28dbfcd14ab575575f159cc41c1a185422f5b4e0dadcbf6c9ee6bfda3228ddeb96e7028c84952078a907066e7967877ccb7de19576411e0808eeeb8624bd7d3a3e5143f0eb1210b6ab22e84e9b1272d279d75099737b3e421924495350917ad6c5009245448cf6b063fbe5d71f2acfb483895490348443e40f54d1a976d47fa2378bee11474e3ede8da52f9dc83f9816cfc9134f93164b5a6ff2cab88d27d089b9c2386d9d7b5192413ed435ad8858b3fe21d8888fe75c3f3080783d27c72884acd49c14178e47bf231f0e4a4aa091fbbe118b040d0a3c2d042633f084a4ae49d608ac72fc8fda2c85a8342dbdc3e02970559c2256799b2dc3c5cce7896a2ffc665b53863b9ef3b808aaaf3c4c8bdeb552dc9d1a2b441573b5081653db2e6ded5d574272510dd4f71535ca29d4a4643146d374a84643e66eaca519a6660071823c04f75ad2c8c5c5c87198c6ff0f185b2ea50bab21e627068c76551f3e40e7940d40e2e18e58c59f57cc7c41db9aa1d76d53b82613d3d49b05103ba6957a6f27a5914cb2c01bdac999424ddedbde4d2b1bb321c1dbdf5eb543422e06c4fc54396a0fea4cfc4b2b17f1d0eaacf73ce68d2a45d4c6f621950f21fa1c399cb32ec278214d1fe1424ea459d2778e6efb1bad7e085c3e9b5fcafcac10ee509d66012a71e0edcb7c815722478cd255515825f1b83847d2c0c5cc89deb03c56b5ac3be4a066d0253e971ee23b6c4307a39fe4841ed11dddd866a75488a41148281a97ce2b2dd4954547554af9eb0172eec0ba89a794b7f2990f582d39ca62cd7f60fee6856921894f4e44c70991931692aa62381d21ce8fd2546bfeaeeb498c9f8bc1a110c40d5a36539dec437696c8057ed3baffe1f55bc2a914775a11cda17c63eeaca540010e94d518407e0fdd1603524e8f7ee1993066fe9902cc6898eb941bc10e4d19db48e6e24d5f10d63b7b0a2c018dd639daef307d456be27ca0fae86f316ce06ae70e031ef8358c9768b45305de77567afb7300cea793a0993604dd92595d5b08b0642848a3c6a669fbca43761c77632137e7c6e97abb6209f47256696b4045f9bb3e010cf3893ea52e61ec436ac1621bc592ad39738f9263d387aa6acce95633ab7c11919abc307cfc49ee494ffb64725efc7342fd7c8b72d44678d29698b69b54af0ad6c2cffab9b5fcbe2a39ac3edad45f5f7ed538bfe925b3343349508684e84adb80f9d0bacab11cc6d0a8f4a413bbf6a8781853eef86314748befeec59fb79e523bee00f5cc0ece39767d28cb98091604c99bb18507f901a203c3149de0e16545375b98899082856e9d2bf5065ca5da7f8d8d96b55577f5708f81ea10786f57564cf08298f7cd9c183b4cf6f697c305f9235090137fcd0559dfa9e29ba4783e9a204c9277d90cd819cead44fb0c1e8c7b5a761a5587425fa777351596dab04cb0eff0e3b0e8c027bb22466921e99b2804110b71c11af832f37bd1247fd996a3bd1e723e4fe4cd54a670bfcfef22f28fb29dc2e9fdbc0e86f324bebbed0f965dcb916560d35a49d6915d5c8ae82600a1e448812b0d53c982bc9c2382d8df47a85f3ebd90d90917a4d3c3ba4af794897c000b8bf7a27a7308922f270df77e22a188ee3f0f7d3363989341cf31c2d6c7ea066847d9bfcd13cb993205f4b6919a37f4f317dd60d5d844a3e6ebac7f619b446ddfc117d25ae57b86b25622ce217c0c2bdbcf3f50ebcf7e5a51b3bc644225bd815fcf05c92f2e5c80b509865e9b91a0fa7e0a0ec62a4853bb5f88beed6866e0ee2e4de408fdacf9dd90b534592e5340477c1dc5d4f9cb737e458562371df4a5be16ef34bce6f70e55f3767c33dac5af820fbb706280ece26f46a5bfb057eef778fb356a736b833f30b305370f3a637939c4f07f0bb1690dec37e56147a5fd7b7cd824f65335a1da7419097a080b95b842eab9a8cfd617a113cf83a7b0b214491668baae47fe416dfb54f62ae156e92f3fcb202a383f41153e38ac10297aa6687e2f863e744954515ff9921eae824a152119d07593c3e4d318cf7c3c6bc6a8812705b0342f1fefc64eba17a8767f814d85b11da0e8b24d3727ea493c31fc7c0291b188d73fa9f8c38163a83d429bba14be68d02f2a6171e510a00b6d3c4cb99c10dbccecc1327b1948112d30f6c2e96c8011b41f59610ad6d3a403cb47e7580d435e522c2b43ab58a26707d5bd71f51b49565c8cc381d7b06f794005dea0349652dd54c2237a23bd029a915b65d161d2fde8a5079b5d3b3b859abde5a511bb99b98d2c6bcf7b32357cf1a0b718f88bff016129f6c74a0de2a5e7de9e6e1398374df7aa7c4a07f3377706c7b5073b72ddb53389559369ad2057530efc3f6a17fb6738827164d011c6ad62ae6ba08dd858a50eafda72df65d7902ddbe304e5c67dda78b9280e823f4eb4fb5bd077f7a89e47042650a09fe2dc1a0599d1867268558203fd09f46f35af58f284bf696548493fe64feac7bd5f0e25b92f3442d310e0571a7a396a311ffe8bacfa1d35b564889313733d819417be9c4134b5b9322960b371565be77d670fc3ed02d301c44052b952b8cb70b28370a6941353dd0b09acc9a42bf19839b0b35a8a8d25e3eee03b0c10ed39a2279e943971d69c8d6d6aaffb77cfd3617e60ca5a9f0310826a258ade2dba05bc7587ad05633bd1f0e71c66e76c358be5357237a3ea01717d47b7535666cf6f90834129dc435f0d1c5b9c6eff336fed565866f4ce594920d6603d901482baae2b5af08afff7c09b2ffc64cc0b3356d982b76ee905626b5415bc54554d25e3b34959daeecd17f02213f1d39c29e8510476828d7739933a6bb77e5d4b2edb7fd90fc881bd9970d71d99dcee8f7dc8f138da468bef491c99d1fff44b00e9aca8b10acdb71e44ce11f774b0d73212ca342b565222cb82e8a9d5d1ba60da244bcb93eb9e5a1db6e2bb06c48e97fcff24ca5ee7444fc305df47bbbcd74bc699f03435771f0ba7bc41d53b3538dba40c480e3f6e24340503d041db5c7b7f3c69e3b9e4f84dfa2ed02ee2dc2f7e1e3f4119d1c555519d34fd94433a0e88f624591e48626bdafc3c111cdcdf6b637c70853bd6b0b90cab92c12b1939f9c9fc338ffad5805ff3ecd75c421d64487207e537035b00be13c311644658266a3af2c5fc8a9ca66f3ef0aae6fb065924d1e52c6f991bcf85cc83fb8fe2ed25e4ac07711524b7a5e80798d58e8efafdce67371d04388d0a72f1adcd8c7def84bdb2eb0668e8b6a42bab33194ed1da57a7773a877518593a4d9e48d75663b5e247eaf424857a9484185fb494f987a1c3d53fa31d8b45f15145f7a4203946f9330bc2568209e0589a81e1154d31aed792a54209309a81fa399556ec356764e5534a83ac8234591fa9316681a7d39c3418652bce569366e1a8f030885c4db614544e54db3fa86edc8cd1483c746a8a5022644260d6bb6a2492c32b80f8487bcb496fd5a021cdb21065aaae2bf3472ac8319587e06056defc03b2e36f0b2c48af6fe6840deab635c40ae393e32e721398eaddd988664d6f4f9e3de2bbdc8aa59e131b4e3648d15caf2a269dd66c9a1bf729a15e395bc0be061186690274040243c4f877eb77a8810195caa0daa11c1c88c3a72bca1c97927764c9cb7d06ed01092b410b0dc5c369b42bdaa1cd6dbd2ca5325dd0a75a0a2eca5c2f3cd315ce7ffa5df496705b22169203f03bce3dce8d933d3f528d1f46ca1afdbc441b4725339fe52e143423dd501c6366f4e629b12147bdcfd5f4bc6ae6f5c306207c546fb0bf80a16b33f47cde113b32e0bf56056e9dc2351530ab364925df69a1ae68a31049d97c3cef0d3331156298e39fb291bb112f7cd0f55b40670b5e2dd8b22188ec1ba5dd1113229b7df3830e4e8eec5869773b91651bdb23ba4d29e9ce0931e9089af6dde1b9fdd319193c4cecf1746296df0119434ab2d3ffa391b3599c85da787b395a9845805be145783675f38a4d1078c0285c35fb5a33b28e2d15fd0ebef8b89050d8231ba9c932c29c7ddd19ef2b5d05b8d182e28b3ee2d2b9c5ec6d7bc663494819622cd473ca96134e7e565db4638e0a3d1f33053a9a34051b78b6be5e1296a39f30ede3a589b205d4d1d50d6cf194c3bcbf01674d14d712de1fe523e3da1f8507f0453706ee850c6d98a94c0524877b7d6f1cee1fcb7779d30e04835d2a32bcfe2e1e1e277ae86bfa059c9bf1e4bc8ee0a7844281c4c53f44ba3f353979d6056289321a1436901ddbbbb0320d326d0f4273dc227fee508bfea0dd82ec14a80333bd17793b4cfe027672322c47a0dc6113403a14074dc5314563ececd796104e2975a3a78b5084a1b3ee91ca9719af38450ae34ca1b0a63b1663992d8b5f1bb693c73cdf4625d8c0f3022e2b7ffb2ba34aacaed770b19f970a1a4e2f010058d4216d3420ba1085e92fe1bae81572b5c2b9ce48f58915786bb2d2e56bcbf231092f9c545494114d1bab8daf65e9b82bb167bf6849c70f462a604768d4f8507dffa928cd9a5bc2a609b9dca08286164f81638de263774501c06e949e079890e2279a934eef014bda817439d53c912f32e25920d9005d3f8237f21a277276dd90aa95e1602f7b0f081d474da4866539dd3e6a7544c41745703e206b5dbf9956c9f04605c43b72562b10a4ca9c1f0de7e654342d3362fecf7f8bad371eab195ddaee19b5bcc52aed7357776c84499c9e27e74faa369797cf76bfe450bb520247f5de94cd03fe8625cad1b184ea12f57dee61910085b4d4a3aece90b001791810948d5a11ccbbd6380c4ea1d6c20fc7c317d969e2d8dde19fa1ce9aa45cab85df8d732638473b0112db0c49dd912349ea2cba5691d41da31c1f3effa56b107108789db643f431cbb0910cb82f182743350f0dc285313e00f352f27e41969fd2ece1a5449ddade813aaaa600da59fac37421f0c4c1c3beff07948734b326b520a3586a21300960ec30357846d3196c3b655cfef7bb7c9fe594b05eb7a593518ce82fb21f5f47e1dd481d7a0e7c8eb9becc085d86ad04f74f659792a163e5f7a8dd37b455ff4df7a649470028c2f263b513dcd330f55aaa942f4fa3bf67ce0d4509ca5c637d72e2e720d17f5519156fae96751f383f9491ad76d0762c276a5c3a3828f5a5178b72da3e328caa91105ea1456614fff7a0d19dd798711dad76ece0ca5287f179cfbac1c1ee62040918ad3cf7098e59adbdee374a5656b72b17bc737d2a2a4a04a544c53bd73a65ae31f1304b4c8ec8f83fdbd6b8a3e275d3c50e15f0be94062d6dca2c2139e04998ee780b6edd51d2b100d0ed98bedb25972c9c8c3610852ce7f909d19409cf32376691aeca8096a6a75bda9607d88d6b0fb08043a6d37d8286939d1993485d574250b17e4939a515c7520176816e36aae8131929f795da3d2d205392c2132485cd0b1ce12c8f3a75e275c08781c6d797aace448bc0fa09f7bed36609c1743d82afa7102bd8de574a5291b53c6bbc7b4fedddbfaec98add66479bc2931293a87226bba1f4eaf61c6f604ec56ecf94c1796f4787e77d13068d62819582e7706d7fcaea03fbe64881cb4bc3621886847c9a6042b9d6ae95cf80cd5470ac00c50ec2808c98e915ba79b7c2534800128242faba89d00a40a80179b6266e5ab0072cf98052a18aea16d486491271dce000520032254262108292f76168e263442730ca4ecbe37e90194129419596ae8b10b6e4ff9be5683c571c6754e9a992de4d5a064675e21c2b84fd9154f292b08eda2a5f8085a83ac3ae3d7b32cedb772bba651a3756b72be78f2416873791a66102aeec696a407359d72bbfc61f1d1ff87d04b126075e7f7ad3c5c342862712e96ae59c3012a66c5cd34f7dd70ce2f1672575ec14b9baeef2cf1004948ba1c6a16a593462d323b09772f679a4055a1d3fddde8c7cb71374b01a82a8f7caf014d044f307996ba057b704d35e1c0361872c452e182e95bea4b4613c3e46e03ca85d5922e41926d3364d56c906b63d8e9bb47f3a40d5a4afbea16752ae795ca6283ca09594ef05858b01ef6bf0c1b48d3b1f63569f5ff4a9bbe113620271e314493281e23727e848d9d27b7e69aa9f37dbd134c0d9264ecc7ca03d0e2caccd6fee89bf647c1737593728b30b76fab7670e4cb844920efebdec332d07dfa0815deffa3576c1b592de8ffb047be25bf7a91249710fa6b171467b277f19d99b5e01633d3547e82845642379e591877f1aae1ba51a077f19c1ae09115a4c2a7d5528fdfd5f64f5f359b7d79a8b2317ecd25a3b941a747e0bb410f3ea5c768e9a2fd853b3752412255f7a7c187cf87236999bf6a180eb42eb8bdbedfc6e7443a7814d2a503c2734878d4e5b9398decf4b7873c3dc1075dee7d2dfdd8a7f42bb683a34daa3f7e6893dd1cc5d52bdba75dec28a0c7d553f5fc2ecaa07cc7337486a7122862bd0c9c82df27e50b739d3acc4e5e78a51821fcad133df6562e67a3c5b7ce8c04fa1e4a06622a9f4363a78dbda58625c8e925713bbe48fb8e8fe986aea9ac36c443267176392c8ca1ad47cd2858c46ec61980888186a1fa383014628a6c8c2f46aebcc4f094b9fcab0d57ba43f78258eca258b47f78aa9ada0d34f99000bf6d53f598c1e861f8564debe02e77bab393f7d5528a254ce8f1785504b3fa216cadb3a3845d48bfa37197a3c3c704bd59426db14e72c5f020b636ee96568d0a186692039a92299fcab497b914bdda89e153fc35958f02c82336b4be98c7815be0c599c5c9281ded8c344239cc116c28d647d37449f13124283767d649aeb440e8d964f4b716f920fbb33d6b8a9872abf304f41970e54a7a7fa000cb181e138ce09dd891040ecf0a65eac85c50d8bef3bfaae25b250af465c4aae88ce55680756721203f4b4a7c2d8ad6fe285ff6310c58c7437fdadd1c4e88b3c8617da4535ad7faf9a737706585fbd046c987bb409d243988b72f6d0e5ce5a726ac779b2f0411109d935389d14f0ad902db25c2ae4a8ff8ab28e12e968cfa7cf5c6415b90ffe9d141da07837d631be4d913fcfc93d0d9e1766e840e7ed09b0549f8bfe6181c2b8e39d946c1008c2044538942af9ea42ba1a301d4b60ef7c698ab26d88bb7357b78be1ae95e629e07d92a81853dcd1d600b0f872b8483e5212fc5d15d21ba9b0698256aa1f0577c8bc1e27bd61fbf0ec53659b2490db0ba36936bb25f43feb9f33651d1c79323f7e8de5eb87930e8388f2eef44bc421110ee0bdaaaaba53bf87eb2ad5e69719c2b752b</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>简约风格音乐外挂标签</title>
<link href="https://blog.cancin.cn/post/a3bac35.html"/>
<id>https://blog.cancin.cn/post/a3bac35.html</id>
<published>2024-06-29T05:32:30.000Z</published>
<updated>2024-09-22T04:39:39.356Z</updated>
<content type="html"><![CDATA[<h2 id="简述"><a href="#简述" class="headerlink" title="简述"></a>简述</h2><ul><li>结构简单,功能简单,支持播放、暂停、播放进度控制。</li><li>每个音频单独播放,互不影响,且与控制中心的 Aplayer 相互独立。</li><li>如果喜欢该音频,可以点击右侧加号按钮添加至 Aplayer 歌单列表,实现全局播放,同时可使用 Aplayer 的桌面歌词功能。</li></ul><h2 id="格式"><a href="#格式" class="headerlink" title="格式"></a>格式</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">{% music 标题,作者,链接,封面,歌词 %}</span><br></pre></td></tr></table></figure><blockquote class="orange"><p>【注】参数两端不可使用引号;各参数间以英文逗号为分割,故参数不可携带英文逗号。</p></blockquote><h2 id="预览"><a href="#预览" class="headerlink" title="预览"></a>预览</h2><center><figure id="mc-贫道" class="music-card"> <div class="player"> <audio class="audio" preload="metadata"></audio> </div> <div class="content"> <div class="mc-progress" onclick="setProgress(event, 'mc-贫道')"> <div class="mc-progressbar"></div> </div> <div class="cover"> <img src="https://p2.music.126.net/vCtY0DD0Z9PEmiCvn0Dxig==/109951166557423224.jpg?param=300y300" alt="cover"> <div class="play" onclick="ctrl.mcToggleMusic('mc-贫道', 'https://music.163.com/song/media/outer/url?id=1889956929.mp3')"> <i class="blogfont icon-play-circle"></i> </div> </div> <div class="text-info"> <span class="title">贫道</span> <span class="author">刘心</span> <span class="time">--:-- / --:--</span> </div> <div class="add" onclick="ctrl.addMusicToList('贫道','刘心','https://music.163.com/song/media/outer/url?id=1889956929.mp3','https://p2.music.126.net/vCtY0DD0Z9PEmiCvn0Dxig==/109951166557423224.jpg?param=300y300','https://metingjs.cancin.cn/api?server=netease&type=lrc&id=1889956929&auth=158b99e6dfca74bb034069a1d60aa1a9b95775ca')"> <i class="blogfont icon-add"></i> </div> </div> <script> function mcAddListener(id) { const mc = document.getElementById(id) if (mc) { const mc_audio = mc.querySelector('.audio') const mc_play = mc.querySelector(".play i") let intervalId; mc_audio.addEventListener('play', function() { mc_play.classList.remove("icon-play-circle") mc_play.classList.add("icon-pause-circle") intervalId = setInterval(function() { ctrl.mcRefreshTime(id) }, 500); }) mc_audio.addEventListener('pause', function() { mc_play.classList.remove("icon-pause-circle") mc_play.classList.add("icon-play-circle") clearInterval(intervalId) }) } } function setProgress(e, id) { const mc = document.getElementById(id) if (mc && mc.querySelector(".content").classList.contains("canplay")) { const progressBar = mc.querySelector('.mc-progressbar') const audio = mc.querySelector('.audio') const clickX = e.clientX - mc.getBoundingClientRect().left const width = clickX / mc.offsetWidth progressBar.style.transform = 'translateX(-' + (1 - width) * 100 + '%)' audio.currentTime = width * audio.duration ctrl.mcRefreshTime(id) } } mcAddListener('mc-贫道') </script> </figure></center><h2 id="音源"><a href="#音源" class="headerlink" title="音源"></a>音源</h2><p>我主要使用网易云的音乐资源,在音乐单曲界面按F12可获取封面链接,页面网址则包含了该歌曲的id,而音频链接格式如下:</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">`https://music.163.com/song/media/outer/url?id=<span class="subst">${id}</span>.mp3`</span></span><br></pre></td></tr></table></figure><p>除此之外也可以通过 Meting API 获取相关资源。</p><h2 id="实现"><a href="#实现" class="headerlink" title="实现"></a>实现</h2><p>新建 <code>themes\butterfly\scripts\tag\music.js</code></p><figure class="highlight javascript"><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">'use strict'</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">music</span>(<span class="params">args</span>) {</span><br><span class="line"> args = args.<span class="title function_">join</span>(<span class="string">' '</span>).<span class="title function_">split</span>(<span class="string">','</span>)</span><br><span class="line"> <span class="keyword">let</span> title = (args[<span class="number">0</span>] || <span class="string">'未知'</span>).<span class="title function_">trim</span>()</span><br><span class="line"> <span class="keyword">let</span> author = (args[<span class="number">1</span>] || <span class="string">'未知'</span>).<span class="title function_">trim</span>()</span><br><span class="line"> <span class="keyword">let</span> url = (args[<span class="number">2</span>] || <span class="string">''</span>).<span class="title function_">trim</span>()</span><br><span class="line"> <span class="keyword">let</span> pic = (args[<span class="number">3</span>] || <span class="string">''</span>).<span class="title function_">trim</span>()</span><br><span class="line"> <span class="keyword">let</span> lrc = (args[<span class="number">4</span>] || <span class="string">''</span>).<span class="title function_">trim</span>()</span><br><span class="line"> <span class="keyword">return</span> <span class="string">`<center><figure id="mc-<span class="subst">${title}</span>" class="music-card"></span></span><br><span class="line"><span class="string"> <div class="player"></span></span><br><span class="line"><span class="string"> <audio class="audio" preload="metadata"></audio></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> <div class="content"></span></span><br><span class="line"><span class="string"> <div class="mc-progress" onclick="setProgress(event, 'mc-<span class="subst">${title}</span>')"></span></span><br><span class="line"><span class="string"> <div class="mc-progressbar"></div></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> <div class="cover"></span></span><br><span class="line"><span class="string"> <img src="<span class="subst">${pic}</span>"></span></span><br><span class="line"><span class="string"> <div class="play" onclick="ctrl.mcToggleMusic('mc-<span class="subst">${title}</span>', '<span class="subst">${url}</span>')"></span></span><br><span class="line"><span class="string"> <i class="blogfont icon-play-circle"></i></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> <div class="text-info"></span></span><br><span class="line"><span class="string"> <span class="title"><span class="subst">${title}</span></span></span></span><br><span class="line"><span class="string"> <span class="author"><span class="subst">${author}</span></span></span></span><br><span class="line"><span class="string"> <span class="time">--:--&nbsp;/&nbsp;--:--</span></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> <div class="add" onclick="ctrl.addMusicToList('<span class="subst">${title}</span>','<span class="subst">${author}</span>','<span class="subst">${url}</span>','<span class="subst">${pic}</span>','<span class="subst">${lrc}</span>')"></span></span><br><span class="line"><span class="string"> <i class="blogfont icon-add"></i></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> <script></span></span><br><span class="line"><span class="string"> function mcAddListener(id) {</span></span><br><span class="line"><span class="string"> const mc = document.getElementById(id)</span></span><br><span class="line"><span class="string"> if (mc) {</span></span><br><span class="line"><span class="string"> const mc_audio = mc.querySelector('.audio')</span></span><br><span class="line"><span class="string"> const mc_play = mc.querySelector(".play i")</span></span><br><span class="line"><span class="string"> let intervalId;</span></span><br><span class="line"><span class="string"> mc_audio.addEventListener('play', function() {</span></span><br><span class="line"><span class="string"> mc_play.classList.remove("icon-play-circle")</span></span><br><span class="line"><span class="string"> mc_play.classList.add("icon-pause-circle")</span></span><br><span class="line"><span class="string"> intervalId = setInterval(function() {</span></span><br><span class="line"><span class="string"> ctrl.mcRefreshTime(id)</span></span><br><span class="line"><span class="string"> }, 500);</span></span><br><span class="line"><span class="string"> })</span></span><br><span class="line"><span class="string"> mc_audio.addEventListener('pause', function() {</span></span><br><span class="line"><span class="string"> mc_play.classList.remove("icon-pause-circle")</span></span><br><span class="line"><span class="string"> mc_play.classList.add("icon-play-circle")</span></span><br><span class="line"><span class="string"> clearInterval(intervalId)</span></span><br><span class="line"><span class="string"> })</span></span><br><span class="line"><span class="string"> }</span></span><br><span class="line"><span class="string"> }</span></span><br><span class="line"><span class="string"> function setProgress(e, id) {</span></span><br><span class="line"><span class="string"> const mc = document.getElementById(id)</span></span><br><span class="line"><span class="string"> if (mc && mc.querySelector(".content").classList.contains("canplay")) {</span></span><br><span class="line"><span class="string"> const progressBar = mc.querySelector('.mc-progressbar')</span></span><br><span class="line"><span class="string"> const audio = mc.querySelector('.audio')</span></span><br><span class="line"><span class="string"> const clickX = e.clientX - mc.getBoundingClientRect().left</span></span><br><span class="line"><span class="string"> const width = clickX / mc.offsetWidth</span></span><br><span class="line"><span class="string"> progressBar.style.transform = 'translateX(-' + (1 - width) * 100 + '%)'</span></span><br><span class="line"><span class="string"> audio.currentTime = width * audio.duration</span></span><br><span class="line"><span class="string"> ctrl.mcRefreshTime(id)</span></span><br><span class="line"><span class="string"> }</span></span><br><span class="line"><span class="string"> }</span></span><br><span class="line"><span class="string"> mcAddListener('mc-<span class="subst">${title}</span>')</span></span><br><span class="line"><span class="string"> </script></span></span><br><span class="line"><span class="string"> </figure></center>`</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">hexo.<span class="property">extend</span>.<span class="property">tag</span>.<span class="title function_">register</span>(<span class="string">'music'</span>, music, { <span class="attr">ends</span>: <span class="literal">false</span> })</span><br></pre></td></tr></table></figure><p>新建 <code>themes\butterfly\source\css\/_tags\music.styl</code></p><figure class="highlight stylus"><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.music-card</span></span><br><span class="line"> <span class="attribute">border-radius</span>: <span class="number">21px</span></span><br><span class="line"> <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="built_in">var</span>(--gavin-border-color)</span><br><span class="line"> <span class="attribute">background-color</span>: <span class="built_in">var</span>(--gavin-widget-bg1)</span><br><span class="line"> <span class="attribute">box-shadow</span>: <span class="built_in">var</span>(--gavin-shadow-<span class="number">1</span>)</span><br><span class="line"> <span class="attribute">height</span>: <span class="number">80px</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">max-width</span>: <span class="number">350px</span></span><br><span class="line"> <span class="attribute">margin</span>: <span class="number">1em</span> <span class="number">0</span></span><br><span class="line"> <span class="attribute">overflow</span>: hidden</span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.content</span></span><br><span class="line"> <span class="attribute">position</span>: relative</span><br><span class="line"> <span class="attribute">display</span>: flex</span><br><span class="line"> <span class="attribute">align-items</span>: center</span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">100%</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.mc-progress</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">z-index</span>: <span class="number">10</span></span><br><span class="line"> <span class="attribute">display</span>: flex</span><br><span class="line"> <span class="attribute">justify-content</span>: left</span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.mc-progressbar</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">transform</span>: <span class="built_in">translateX</span>(-<span class="number">100%</span>)</span><br><span class="line"> <span class="attribute">background-color</span>: <span class="built_in">var</span>(--gavin-highlight-op-<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.cover</span></span><br><span class="line"> <span class="attribute">position</span>: absolute</span><br><span class="line"> <span class="attribute">left</span>: <span class="number">10px</span></span><br><span class="line"> <span class="attribute">top</span>: <span class="number">10px</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">60px</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">60px</span></span><br><span class="line"> <span class="attribute">background-color</span>: <span class="built_in">var</span>(--gavin-secondbg)</span><br><span class="line"> <span class="attribute">border</span>: <span class="number">1px</span> solid <span class="built_in">var</span>(--gavin-border-color)</span><br><span class="line"> <span class="attribute">border-radius</span>: <span class="number">10px</span></span><br><span class="line"> <span class="attribute">overflow</span>: hidden</span><br><span class="line"> <span class="attribute">z-index</span>: <span class="number">11</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.play</span></span><br><span class="line"> <span class="attribute">position</span>: absolute</span><br><span class="line"> <span class="attribute">top</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">display</span>: flex</span><br><span class="line"> <span class="attribute">align-items</span>: center</span><br><span class="line"> <span class="attribute">justify-content</span>: center</span><br><span class="line"> <span class="attribute">cursor</span>: pointer</span><br><span class="line"> <span class="attribute">opacity</span>: <span class="number">0</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-tag">i</span></span><br><span class="line"> <span class="attribute">display</span>: flex</span><br><span class="line"> <span class="attribute">align-items</span>: center</span><br><span class="line"> <span class="attribute">justify-content</span>: center</span><br><span class="line"> <span class="attribute">font-size</span>: <span class="number">35px</span></span><br><span class="line"> <span class="attribute">color</span>: <span class="built_in">rgba</span>(<span class="number">255</span>,<span class="number">255</span>,<span class="number">255</span>,.<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line"> <span class="selector-pseudo">&:hover</span></span><br><span class="line"> <span class="selector-class">.play</span></span><br><span class="line"> <span class="attribute">opacity</span>: <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> &<span class="selector-class">.canplay</span></span><br><span class="line"> <span class="selector-tag">a</span></span><br><span class="line"> <span class="selector-tag">img</span></span><br><span class="line"> <span class="attribute">filter</span>: <span class="built_in">brightness</span>(<span class="number">0.8</span>) <span class="meta">!important</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.play</span></span><br><span class="line"> <span class="attribute">opacity</span>: <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.text-info</span></span><br><span class="line"> <span class="attribute">position</span>: absolute</span><br><span class="line"> <span class="attribute">left</span>: <span class="number">80px</span></span><br><span class="line"> <span class="attribute">max-width</span>: <span class="built_in">calc</span>(<span class="number">100%</span> - <span class="number">150px</span>)</span><br><span class="line"> <span class="attribute">display</span>: flex</span><br><span class="line"> <span class="attribute">flex-direction</span>: column</span><br><span class="line"> <span class="attribute">text-align</span>: left</span><br><span class="line"> <span class="attribute">z-index</span>: <span class="number">9</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.title</span></span><br><span class="line"> <span class="attribute">font-size</span>: <span class="number">16px</span></span><br><span class="line"> <span class="attribute">line-height</span>: <span class="number">1.3</span></span><br><span class="line"> <span class="attribute">display</span>: -webkit-box</span><br><span class="line"> <span class="attribute">overflow</span>: hidden</span><br><span class="line"> -webkit-box-orient: vertical</span><br><span class="line"> -webkit-line-clamp: <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.author</span></span><br><span class="line"> <span class="attribute">font-size</span>: <span class="number">13px</span></span><br><span class="line"> <span class="attribute">line-height</span>: <span class="number">1.3</span></span><br><span class="line"> <span class="attribute">opacity</span>: .<span class="number">8</span></span><br><span class="line"> <span class="attribute">display</span>: -webkit-box</span><br><span class="line"> <span class="attribute">overflow</span>: hidden</span><br><span class="line"> -webkit-box-orient: vertical</span><br><span class="line"> -webkit-line-clamp: <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.time</span></span><br><span class="line"> <span class="attribute">font-size</span>: <span class="number">10px</span></span><br><span class="line"> <span class="attribute">line-height</span>: <span class="number">1.4</span></span><br><span class="line"> <span class="attribute">display</span>: -webkit-box</span><br><span class="line"> <span class="attribute">overflow</span>: hidden</span><br><span class="line"> -webkit-box-orient: vertical</span><br><span class="line"> -webkit-line-clamp: <span class="number">1</span></span><br><span class="line"> <span class="attribute">opacity</span>: .<span class="number">6</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.add</span></span><br><span class="line"> <span class="attribute">position</span>: absolute</span><br><span class="line"> <span class="attribute">right</span>: <span class="number">20px</span></span><br><span class="line"> <span class="attribute">top</span>: <span class="number">20px</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">40px</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">40px</span></span><br><span class="line"> <span class="attribute">border-radius</span>: <span class="number">50%</span></span><br><span class="line"> <span class="attribute">background-color</span>: <span class="built_in">var</span>(--gavin-op-dis-<span class="number">05</span>)</span><br><span class="line"> <span class="attribute">display</span>: flex</span><br><span class="line"> <span class="attribute">align-items</span>: center</span><br><span class="line"> <span class="attribute">justify-content</span>: center</span><br><span class="line"> <span class="attribute">cursor</span>: pointer</span><br><span class="line"> <span class="attribute">z-index</span>: <span class="number">11</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-pseudo">&:hover</span></span><br><span class="line"> <span class="attribute">background-color</span>: <span class="built_in">var</span>(--gavin-op-dis-<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"> <span class="selector-tag">i</span></span><br><span class="line"> <span class="attribute">display</span>: flex</span><br><span class="line"> <span class="attribute">align-items</span>: center</span><br><span class="line"> <span class="attribute">justify-content</span>: center</span><br><span class="line"> <span class="attribute">font-size</span>: <span class="number">21px</span></span><br></pre></td></tr></table></figure><p>自定义 custom.js 中加入以下代码。</p><figure class="highlight javascript"><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> ctrl = {</span><br><span class="line"> <span class="title function_">clearConsoleMusicList</span>(<span class="params"></span>) {</span><br><span class="line"> <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">"console-music-list"</span>).<span class="property">innerHTML</span> = <span class="string">''</span></span><br><span class="line"> },</span><br><span class="line"></span><br><span class="line"> <span class="title function_">addMusicToList</span>(<span class="params">title, author, url, pic, lrc</span>) {</span><br><span class="line"> <span class="keyword">var</span> ap = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">"meting-js.global-music"</span>).<span class="property">aplayer</span>;</span><br><span class="line"> ctrl.<span class="title function_">clearConsoleMusicList</span>();</span><br><span class="line"> <span class="comment">// ap.list.clear();</span></span><br><span class="line"> ap.<span class="property">list</span>.<span class="title function_">add</span>([{<span class="string">"title"</span>: title, <span class="string">"author"</span>: author, <span class="string">"url"</span>: url, <span class="string">"pic"</span>: pic, <span class="string">"lrc"</span>: lrc}]);</span><br><span class="line"> ap.<span class="property">list</span>.<span class="title function_">switch</span>(ap.<span class="property">list</span>.<span class="property">audios</span>.<span class="property">length</span> - <span class="number">1</span>)</span><br><span class="line"> },</span><br><span class="line"></span><br><span class="line"> <span class="title function_">mcToggleMusic</span>(<span class="params">id, url</span>) {</span><br><span class="line"> <span class="keyword">const</span> mc = <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(id)</span><br><span class="line"> <span class="keyword">if</span> (mc) {</span><br><span class="line"> <span class="keyword">const</span> c = mc.<span class="title function_">querySelector</span>(<span class="string">".content"</span>)</span><br><span class="line"> <span class="keyword">if</span> (!c.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">"canplay"</span>)) {</span><br><span class="line"> <span class="keyword">const</span> a = mc.<span class="title function_">querySelector</span>(<span class="string">".audio"</span>)</span><br><span class="line"> a.<span class="property">src</span> = url</span><br><span class="line"> a.<span class="title function_">addEventListener</span>(<span class="string">'loadeddata'</span>, <span class="keyword">function</span> <span class="title function_">f</span>(<span class="params"></span>) {</span><br><span class="line"> c.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">"canplay"</span>)</span><br><span class="line"> a.<span class="title function_">removeEventListener</span>(<span class="string">'loadeddata'</span>, f)</span><br><span class="line"> });</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">const</span> mc_audio = mc.<span class="title function_">querySelector</span>(<span class="string">".audio"</span>)</span><br><span class="line"> <span class="keyword">if</span> (mc_audio.<span class="property">paused</span>) {</span><br><span class="line"> mc_audio.<span class="title function_">play</span>()</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> mc_audio.<span class="title function_">pause</span>()</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> },</span><br><span class="line"></span><br><span class="line"> <span class="title function_">mcRefreshTime</span>(<span class="params">id</span>) {</span><br><span class="line"> <span class="keyword">var</span> mc = <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(id)</span><br><span class="line"> <span class="keyword">if</span> (mc) {</span><br><span class="line"> <span class="keyword">var</span> mc_audio = mc.<span class="title function_">querySelector</span>(<span class="string">".audio"</span>)</span><br><span class="line"> <span class="keyword">var</span> t0 = mc_audio.<span class="property">currentTime</span> + <span class="number">0.5</span></span><br><span class="line"> <span class="keyword">var</span> t1 = mc_audio.<span class="property">duration</span></span><br><span class="line"> <span class="keyword">var</span> _t0 = tools.<span class="title function_">secToTime</span>(t0)</span><br><span class="line"> <span class="keyword">var</span> _t1 = tools.<span class="title function_">secToTime</span>(t1)</span><br><span class="line"> mc.<span class="title function_">querySelector</span>(<span class="string">".time"</span>).<span class="property">innerHTML</span> = <span class="string">`<span class="subst">${_t0}</span>&nbsp;/&nbsp;<span class="subst">${_t1}</span>`</span></span><br><span class="line"> mc.<span class="title function_">querySelector</span>(<span class="string">".mc-progressbar"</span>).<span class="property">style</span>.<span class="property">transform</span> = <span class="string">"translateX(-"</span> + ((<span class="number">1</span> - (t0 / t1)) * <span class="number">100</span>) + <span class="string">"%)"</span></span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> tools = {</span><br><span class="line"> <span class="title function_">secToTime</span>(<span class="params">s</span>) {</span><br><span class="line"> <span class="keyword">if</span> (<span class="built_in">isNaN</span>(s)) s = <span class="number">0</span>;</span><br><span class="line"> <span class="keyword">var</span> min = <span class="title class_">Math</span>.<span class="title function_">floor</span>(s / <span class="number">60</span>);</span><br><span class="line"> <span class="keyword">var</span> sec = <span class="title class_">Math</span>.<span class="title function_">floor</span>(s % <span class="number">60</span>);</span><br><span class="line"> <span class="keyword">var</span> t = min.<span class="title function_">toString</span>().<span class="title function_">padStart</span>(<span class="number">2</span>, <span class="string">'0'</span>) + <span class="string">":"</span> + sec.<span class="title function_">toString</span>().<span class="title function_">padStart</span>(<span class="number">2</span>, <span class="string">'0'</span>);</span><br><span class="line"> <span class="keyword">return</span> t;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">自用音乐标签,支持单击进度调节</summary>
<category term="博客魔改" scheme="https://blog.cancin.cn/categories/%E5%8D%9A%E5%AE%A2%E9%AD%94%E6%94%B9/"/>
<category term="APlayer" scheme="https://blog.cancin.cn/tags/APlayer/"/>
<category term="Butterfly" scheme="https://blog.cancin.cn/tags/Butterfly/"/>
</entry>
<entry>
<title>2024年6月记事</title>
<link href="https://blog.cancin.cn/post/bb0feb8e.html"/>
<id>https://blog.cancin.cn/post/bb0feb8e.html</id>
<published>2024-06-04T03:33:50.000Z</published>
<updated>2024-09-22T04:39:39.391Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="5a2cc0603f2d13a22ce0f6377e0b407990dfd1743bf963e9aeb60370090ff8a5">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc14196333cd20b02511a8129590a6d7cd8fcb07dc6c9205573227255b1ba7eeeaa63e889968cd63e6bcd7e98304adfab7bc9824786a4f2684b7f3a18bdf3667b28f02fd3ae606bfb0f68e03fb3438053e02a555d8b0d90dfa94ab7cb3a4cfe7fdb8b2f7056037d15993eb67d0739bc79c358f8bcb6c4dc33550c9e8d6c719cc256e6962c1e4fc8c4982795b8381e2b64e400900973a2577f9ae773425e2fa78401f53d71267c98b12e5d6bc1885c6489887c09a4868e0186654d860dd00b83bc00db5a0824b5f77904bd55a509233f11d2b633b2bafa64488009570ec58492aad5182e16361518ac286df7eb070fe260468686b6de0a2d45cf361abbfd62a2be1d9bc158fe091eb038839a53669ee729443f39ad6f8690a3a17a33ca69b40425d1ad9d2bdf0db9e0c8590e0d8c9109c551de9ac3749999090631ab27006d27d91fddba0dad5ccad3ea63087d1326ac3de01d09feda028cb98625377a2b72807e1b49778eaa272bd844d17f44ca036fdfe8f21730a153bcd9cf8fa7d6950f01d48950c238c239ddc7002a3c16c79ab4def6e5f24d267f52d2251f8b4ea397897d1b1743b38d4a1d8ac2d658843773cb160d2626315b77a40a9331f43e804487f84270a48c98615cb83d1b0c8fb8e00b6ae827af3ec71e8f20d874f89b24d597cefdda19ace4cc7ec4b19b503861ddc1bf9cca6f7ef0cc07d0ca2e29a64d8780ce25064d41c6f74ee2f12e097bc62083cdad9d6eb233f8117eb224f6cc71b3a13fce22bf92140d834be80b8af950589bdeedef9f40a18f425d72ed611351546c3e5a9fc38de067b021d2f80bedacb4dd86fae28d418f606557832572ab67d3ad473f16a7916b77f5cdea6ebeac8c2d64d29c0ac6d5c87d2b2e6ab43aaa98d892ee54ca0b5eac6517d79e965b73a40f2453dcc35da46ca85688415253b64a32e14fd25c0dc033b75425fe397fe6d5fdead8efed88c811707cd7ea678ca46aa73c8be7e6167b1714e213b7d4b9f805a7003673f915480a6b7b8766461ebb577b364b8047e5f4a2689b0ecc07e35859628370b03883d06d52faa75d2878cb00b5935236b36bfe8528b6550d770ea1b4429ece2ed9f6b6b86fd4b0d36aa338262c92830021f51aa2cee7defedd576094ff53776860881ee6ab5f3f611bd6bad7d35f533debc42314e25a78494b8220f66c57985f5e5ab6fb0b6219402c7a4a69b47443af7865f363239b3a1b30c240f4442671f7e8eef8f07560b1affdf1f835fc33da550e2123ec74adca609418f55aa22281cc852948b219ce76e73460bdc4cbc31fdc7e2148d2566f21ae48996d186b1cb21d3f33f88c79dfb52a2c010726b42f7c6c679b8b5177c3afaeeb709d5e5872dfa21f5e4bde799e79d262be71c3d982628b541d4e72cf282d6b3372c9ea7b18cc999a65e709ff43173a1603f1cb0e01f856b33d9d51c083bc165210ea3d25f6efcf19418c8eef4d0cd7e21bbc6c1d134a1bc50369295c101e49cbeb35818ddfb02b56d29e8796e6201668c63a4908b59350824c50901cc343cd488c51ddbb65463253aa518d40ed1ada7f06f77514fcf54e04afd48491f7cdb4072bd33c330ff39a4f37643f44db51b65b8048521148193ca3b3e034f007d255b4c17c1d93a57122f6fe8f60a4061a5a87abe5798d47275da404a781aac1754bcb5bbc9a80f4c8926e07377802997a0d400ec277572e3933f140960d327d2f3ed806cb80eb3d7631d0baeddfd79c4f8e7ffdee9328fceea64e5824a3025d9a430c0028109c47e92db6f472fe0aa7d051008d792575ad4ce65e71b472500e80f2bb18ee0bcc77f31ff7655ff38c934a97825a50ba349ea089d9436110f2fdf30daaf645f0f93f46bfa8dd0e32db2f2a1abf5b08fea2d275999cbcfa891949c953990cead85f43b0d5097afc9a249cddfacf137edc076b60f49c674e94f9628e046d3c1b408263378aed5a636dece1599680df6120b8fb202def3b42186878fe5c1a2777b1121e3a72b0734a0c0f106a46cf2768c0ed6d2051c5421497bf4e64b4f3b3e85d1bcb22f8ca1881d29e93e26153df12a593a295caf91fa5ad2af09f45ace8fe57590516d310333d4e3bd6ec614890a912ee2d7441dad04b34111a011b21abdbb01def75f601fca423118772574a1679be9945b712080d419b01f3c0cf738e71c48a26a2a420fa024e7822f8a1f7335a9a656f64774b5a83fc2f924b9c731c115477687f3c34f7454267cf9d9d2c6df96998a20cd1927b8689ab77827217ed3aba8857dfa13b47f265274b4c1b51c194b1036faa3ca19db5d1d9f231ec03fde634b75d0333fff2257cf0a47e906591a0603fe3e6f4700c1575a4ead77e26fa03af50c52107ac6003927b60332f0f0d2192a8f749670f3ccc70006318eff8551f109ea55efcffada55343c58726ae168fd260e2150002842e5014e6ef25e127038cf73ab0ae8e52d26b31f65ea208e9be4ca2942366a6ef1452b93be917aab8047b68ec78d8cc71a0d73d40098d7a41706259ce4be35dd2c54e2a27c534f6c5a658f70bef79cf349878bf93eceede9ea2dd3fd47251541abc669633d5ca1c18d7be8ed34fa4e1be214970af75528e7f38c73f42d679520d4f97491c5a7df34272aae8a0aa35ed59d289c5eb6ad87182993972a544b5b290a78a663a0da14a71a49deef87bb9b3a0466d096a8d2b2804701d8eb86937f9a6a73cb3acb0321562f3f949a1bb78e46da712787da5f48f627055270689db6c7a215dac52fc69f076a2b7970a526f38d1ceebdfa716e7f5e17a4796d43e5b0787bb276ee192bbe51a213af13b81987ad8ce7a20a1a75370c18f08adb6c4d2e0a18b85c90ccef4c36229b0c9eeb15085733077665c96f6e304347e490a81926c487297d007b60325449ed319fb50ff955afc441fa9ccbe3151368e10582317641727c3c3a80caeb7713dabaaa023e126432b3220207fd4e3a30c017bb5a0a3aa0920ae38b3cb65b3f165e219ea629201d3e9fc3807d3ea285e73bc83141c47ad2526b8f5c9099e972a1478e2091fb422b64b9d6e5ae83ca05ba9ccdb412e2c0b76c50ebc2d69e1b75daa230312089de3318b48d3dff2069c755ebc96cbc3df83d0c174080039c4c036d71b3ee4b97d131833a185dcc501e6ff1c4373b13f1d08bd1aaa8dc00f86ce9d7b9e3217ce35c8ac164638b9cc030ef9eb8b65c50ec7c3f86403c0666f568c1e23e2427b0c013b0728f4576bbd97cfe64a3fdc69ae53a5a3f72dc62ab727a5a5e7e64249571dc5edc50356a03a6882b2e98e5367dc49b54dcc431cfb43a1b637de711c7e92e9bd81f10b112758252eba1db1989b7fbe76fe2173b8457ceb0a041211403bfcc9700e55ef7a24886761052b198e47bffa020614ca727c95eda1f97802580e5d0f2ab7c3b67ad7e53acff60dc408b3afe401da594f0b606234bb18b4d6aa5c46939eb69a81131a809d00d37e7a585be7083afce94cbfb43f028fee7b3bb4df06e7da03cca040461e789d6b46aa420f9a8510a506153e8b1518791a177c0f59ed51534d687282dfb1a9b78980d5444de0f14ef4bd553f27545af30f7b9694bfccd4421766840216cfcbf3b39a60c5a21d976c6d281d714867f546410bfc4b1ed67cdb0b0756ce8cf6d4c3950082aef12d34eae24774d82a4bcb036d470fd05b6ed77d28b3930e9ee95daf662a513ad6668500f613cf274e450c8f0c46e6c93984aa6fe90dd451a4482ae0e116144a67e122b21de609b68fbacbb294c96ad5d30ad65d00c3fc39116380e807e9609cc3661a6ddb68f6bd77d3a39bae82fef002f29c2b8a7a307dad408226a05ce7bb3f41fdde92edc7b50a37e835107107631ce6a048f1865c484636f50866881f5b5fef384071dee1fa3b31fdae6b3e47be5100276a09e9d372cabe5fe4f3004d301aa67a938bb201942cfd906461ebc0546625674e4e20c04ed259f5ff1e66518520da98378bc92d30bc68f276ea44526df1aa9937054dca1a1f0cef12a09c1e894d2bfba16fdb0d75bbe184ba1415a392d0a0f554500c50efca1a3aa7f6aeeab9442794eb9bfa90a99b579a5c8d954f988a282c4711eaa8cb7ec83537774c9bf25270d719ac2d44bea40bdfe36b15969dd4c5f0886a681c93e892f8732f4da4e5a7ef1c168fd0a2bc8e63e7874cdff746be17f5bb4861680287a0f97e3edfaf4481323c572ffcf039330229ab5c7a5f56e147c92d3b135fdce2a4754422333d5d1024bebdb62e1eaefabbc5cf2e9d59ae4ccd8a9960fce7f296bf6c8a06cf83e229a10dbd0b7163efb035e6267fa4544e1bd3bbc8ff3cef8651342e96fe74c63a464364513ad13f0401ac5bfc0ca0fbc251e029b37f6f1f832d40a710065cb649d7fd87f97973d4256e4e3b7db5ce1e421dec93ba175ee30bcefb6882bdc7428c01da654edeeb224d0930fdf49914767d6e130779b5adb8539beaa0d0ab22dd005939d104130e486f37491c333e5d7ee79b0fa6b9498d253d5ce4173e42bf405518e9dbc51ae22856aa63aa5c73ccf437ae62d168d7bfb410a11f2a137605488e481331d7a17190349de867ec8043b8aad757e87f5918d8477e90abc3d8670ff86d4516d493669579eff13b706359b05cdd695443af7e9f47e9841308adbb2fa89178525a9ae9454add0e07bbf955e982432738642c158180e0e39708af8cd97cbc9031c4bc87344f4a69d80c62f5964a7b76e5fc5fd749660d34269755cca2d809ec415d84fec9204336712486bbc551c819fef6dc04244efccf5a76f1c02997e561271c0f4b89c3c0861c2022bd1e16f3f8423001e263b89c71c99f4b4ffa7185f75b9bf897c44578fe678eec5760c98f2f6914259a8c447f7663701703ddcc46b9699c9d6a6629b1a136da2dd17a19c80d815e0b3aa4cc1f2fe78007fff3795037d057df39cabd503113006002a3cebd29b8fd5366bd6f60da0000d6faa043224861d10f04d1567539cbce697faf0ef8e391d68733c1b52296ee56eb41a322fab6b17dea9da01d66b8866a3b84dc5b1c0a4732510d50295280ddc35989f516fc72a091a5ed0b6345c0691f734d647f86efbdab3cd5c501957c4706995122a9244121754e207bd913e0b12bdfe72497fad39d439674a56763df656eb9de176b67bb657cd522fdd1f9f0bb1ef30ebe3e2966168b75db9593ba365f72914c06d7d4aa1e700dc2f0bbed88cc5b58fd5b6efa85766062315477a8bc3836e62cc0a4ab89a993d8e3140f4c6c3f3cf5420198ef52cec54fb9f0fc2df0b3e1b3b3c619fd8ea4bea9e8ef21c6bf5210f9374218c993a1a2fdc570b8145d6645f7beb7225c55839c6915af86b19e0f1b00bca97227823ad8522c888431215ddd8206d80710fc7c64288f8824480e893c457c05b0a7350b06dfbec45c55775d532284130a5494d6d804eecf04957d6bacf513aca027a8bec227c7c6b93d6b05cc3fc614ce61149096fd19148302acb215ae185f0764f8ec3258cd56319b518609b965af2cecd654d56ed542a2aa043d154dfd06f6d20152e1e5ba83e9b8b8511d340121cc32388a3a47a53913c3fa7422f78537db2a8138fbd89abea4920d48d9759d94770f64fc6b6c285517d06d60157e054a435af05ed2108a86b8f1bbe5cdf304c244f4b19930342d50c84c6b83635160c266c337d36744340f34f202f4e097e6d2518ee48b3187e2ca4092b8c8f330b4d81b1542305d11aaa35660681100d11408457c74c8d9fb0b343d359ba32c4d474424f16ece3b13f815f93aa5efd617dc48de10d8d534ceacd6cbea962642ac2c3e935d6a094476f64b030aaaffbca42262191c23aa43353398b3aa91787bd7986a1ab20c807df673f503329815557dc24cf3e49f5456b13c0c5fdd9010101ffe12fec1356350eb0e39cd9a6b56177e0b97c3e9442441ada2c605ccc20d83768abbe84ee0ab2dd1bf7db95499c31d0e887fcced63bbff6f6e9fb4602a26d67240803272be767918fb8b340e55fef4d4a133a9a5c48f20e9d63be837035606c41eefaf39b3e2aa4f4fb540b972a23a7bcaa14502acfd5b56d299890a9071484a13e1ce59cab3f71574c721e0aaad4804976175dd67b77e2b728a535d0cf291581d891d2d1b12521b08cd6055670b8040e515c5b963b406c745772f7bdb762fbdb422b80ba6815903c319f9d381e142b23c4f37ee574522b52a08474f2d5656224f73106f2265a58c9ac78a8a0a5795a3230608111dda1945fd7f1284f4895c8003552961534fd042a38d892a7c0618dca124048bb392861bdffd8d92f21a6a014308e656398b8a8032e9b301cb064ac175d92dabf73c0f287d4f61f161b900ef1fa536a27327999f02bb7ade234c3c5f247349a9753fe2e5256d0b0992362169acf7c4c265c555f9cec3d2b427fa6f2ce44ef758e6e0ff1ece9e9f3637872f86e391efc083f17a275f60c874e6ec9f6669ddba094c7982ff94e212167b5638289cb6f55557c76dea601b2e01168b08575d24ed31be18cb7bdb21bbebb081a7199cb22ea4b1f79908caf659198e41d0f85bb6bc0870442b61f49fc7f0ce74335ce7c6550bc810895f376b3dea0a613904147ab0ec13547e8c9bb4f96e4e48f8aa8c436c6245dd224c038a1947072840c2143af6947ddf7f7de17480d8a343b69c6e956c1b774727d25e4f8311c8ff13abbe84ddf0da258c88843e3b47729b89cabfc0675f3762cad00308447078dd492cb06c91c747c8963705f7592c37a3f7b25d421c3dab547628e29fd0e26e23544006c57f29e09bb317e17b4f307f57821ff8d83af718026c16c6aa0fcc8219ad9538b57b52f653df2971ffd5d762e296f7ce640d82d8c0930ed54eaafc02a45990d1c2ac8cf4914b88fdd4a59d9acaa5f523e72149d2cb16eaacfe45aff5324e9e35fcd7aabe8edc5e0ffd774af23b4643bda187b71bb91e4c2845d65371a8ea369c78e7f474442e2462a117962dd6d9417ad70478493f4bc11b6c74c3b8cb89fe2b6b7180743adc0536d2023a78b08beb58874c265623cb311a1fa8f4db57c92ea6964a04bb1ec049dd557902b53edcaceac93963a31a0466716c502c02bb1de45e4ddd98393fd512a08d7d0993fc2bf251a131c7e7d59464a0e52bcda64cd492b212639e60c3d49228710bc0da0b7f997f9f89e350278601e320269d1a95bfcddd4de91889bdaa1247ae2efc9acfd8b4358a537e654ea04f1d980276d2b65bd40ba5ec3a0e9251d033db07613987a8e17f1d30e64477d4affd077d27a92cf193e4c71c855e59e3503f919cd41b3d53c14d31ca27d4b6c5490043ba7c0fab5f1ba493a7f02370645a2bee44ab960ddc3c15daff1ccb4325d6ea7e3c41cb6447b7d9f7921cc1a1a5cb7748b904a0371740ac73e802085211c929af9d08223e798fa4d1d3e04ce687130b3976aa065cd46dfd32cb2b0abd8f65efc7f70c3a5122581032bd90e4f617ca14f82f917fb62d7ca85abd44f374f3ed3c83c7114d887a22c1fd80e6b1f774b8fbb6e2844f05b47be68a8cd749ae638932e4b380ef6475838b6850efa5af6332da65148dd784a249d2bde9581f4ab77c9a2d933ab2461ff7af2a0cf68ffa80dcc15614a598e71e96872208fb9868f971e6b8b5bf1a7051c9b5272c58bd2c070c5513b38f9f53e63f68d4edc526a99e68d680e5e854625228ea68e44a4a26d6c0c39ddfffacdee9e0fdd2d3e92c5d19ee59d12936dc5d2402a6120606e4f5bd511f2ad7985bb5a9ccab3b326d2b155d9a165ff13a0aad2ce2682afc3c4e1feae74fa6481d4756a96e692e32d6186df990db7156f30c0397004f02a0bd437a03e282c34d05fb7bf7a92431de89d0aec22acbf28d482c4deb71c360757deeb5dd24d6b2a6ddd8c5cd9058b210071cc3d3f496c2bfb4a88cf039f266d089d02029743a4df79c0b889de93f0a8f546b81cafe1639f93c5237492daa61414f5e3f27ecc0b75beceecae0e69cca782267db7eaa640cb5c25d6096ff6449d8747f795b8f2ba52bb2191fee3b2214e3ee84e6c2ff37e492cbb0eb61de1333bcb5c54e379cb54f9ef14cac7e5ab2b4e162b3a8ddfaf92b48d7dd0639f532d2a115e42b6be252ebde081846458b4c6ffa9bc878e684bc818bf9f698bf4d9773f788d224a00d6537aded47f9be97c6de9bdc141b56d38174f19377147913703eef3eedc40c0fba87a2b860139f63fa410800c79b601decbcefdcaad5f2f8cf70db21c02acb86e015585204d3766a03e888cf7824ec3dcff39fa6221387f267e3b1026197626158bbfd27a36b336ecf3f36214447af8ff6a8cec14ed2543ac6ab06a5664dc5477ffafd6afcd56af749265ffb0e2ebf7370e5870d568f9661da11369cb482e5bb481e81f975c2cc979c105f2d13fbd8d1939c29ae9ba724ddce8087d62f6d29e130094944978c6ec4adbea968e8ffba7ea906204ed5f8aa4f825fb10f38836c0a0c50ac7c3a42595c40889ea018136d4d32667e910684a960102b286415441c38a0857a08007db960cb6ba09a665de9b0c50f0d68433aac78ef7dcd4bb5e251dc7aba95a2f7d39a06481cd5d04101a3fee8d3949f3f31ab1b08e40a9a746d09bdc227c0c69736da6d4f2916dc5c924e873f70e8ac7f51dc48e8e037f5f455113fc815f3bff8fd504e23c5bb388bff628db7bff48e2f476f0462f949782a21f680bab45e9d28107601c9c9c75f411c25cb9ecbc848928abb7ae80b3037ee1084218d14d2fe8b868ea52efb37bf3a85f7dac120117d64a5da59ac33fa2012ea6465bbe7f10d455143ac295019a0574ad8d3813218b695e86b564bc2d904609d67320baccf219e0139260714a93271a9f333891d7ffab3dd93ad0c63c0cd1c880f27480d91e33c712b67138db75d74a386349fe13e6365b629af11535fdb513c6ede597bbe4209ad2db308acd3be12d425b0839927335aaa1488e078ef3b2d852f1384683c0f0dc23477f7341854973640958fbde9f503226aaf94ad07ba00e407d6e3717deff468235d94f4fc76fa7e43596dbceafca598a774fd9f0922feba6652932f2e8d3e4816c82707dc44b89f328a4d4cc85fbb1f3da0bd4372cd0917777ecd3b66836d5c90b921adeb31834f117284295c0513bd908f6f1c0203bdfa885faf86cc54a9614373bf45bbd3f5f4185e05536af9973c49e8b7724a8f7708508864588cef626563ff830a70e3043afd9afaa5387fc9ce953c25bedbbef82e6a347f5f9e60ee8a2934f9a152f3bb2569305e7335e43b8f0c4f63e9c05cc7083343bc2ea13d5f816f0c837bf8f32eab616be903797681b5a18ed497fbd27aae588665ad47cfbfee2029258855cc93ed9c66a9491cef13082cd74c95d71406ef503cb70f3592f4ef7daa721afedc323fcba6e8c83b3cf679506c63de79586c0dc805c6a514068844b8b698de343b2244257ad2ae3426c590e2950f67b2691492e73ee2e86ade1346390c6c7efdd7b77baf3ce195e7e2a0b63b89c896c1797048369d61f18ac14c3c19843af9f5770d9dd00eb6911ef751801fcac8131405fc0c30b0cd3553499b079a84ae37db46f360d0470f0f2debb5748e6a380348d3809f73591834b13d28b4152e690d28d9f1b5607f19d20b5c2aaec580c1f6553acedcc52d46290b438c09d26b2eb0e8b6591c11073fecd203ab03fb70abcda4fc6fb281be42da2d7ae8adb3d5c9f76c01405e45bb2ec59058688c6c537739e5e04da231417cf61d410cb6bf370b4b560b68950ba1f0e6484a63f35dc9d35999fd1ac21b20818b38a256bdf7b2b1a483c537ad012ec1bea8221189dd108c1a2c3a589adac9c86890f8263ad6c32eab4d814c77ffc77545341b13dddedcf56afa0e7b1dde561548cb65e849978900f602d764462f33c7a47af8a797f5661b0fd6cde7f6c053b68c664e5cd0d6a8cbf0909bb3a21e295a102166524a923688c9bd02e884732777d64abb4e7401cc9c26b7cae3a855d5607c2a7b0aead5c801cde4c943548b878054d0863b439a2c64021582dcdcd5105c3bcd36cc80729b505b0698d386586243c5da6e13d9785962f8521440125b7699dc4165dfc7f96eb594183b99d83cc82986aab88f20af199d85134e69e0dd2f21f249b576cee6b8583893e5766f8d4316c9753b90d7cbc9b95f6217b2362b1b1d7032da24df9d0277577b6a562603783b8ded0050bee1232dd5e5285ac2aed63861d327f31a0cad59c77091d922e7ea88959bc46275d2dace75f76d89dbc2b43c2494d627a203c4b23b065194cae0ea78f0a606fa525454d5b556220c10dba8e2d5db0b3b96a8829e06bd14d73b52a5b7d0144ccf75cb9a20716de97d22491d7fce1ce60cab8cf0073bfecd14cb2189f6864282732aff37f52f4d47a15428651611616f8b14a32f143e80c2f6f1e0cf448cae52fc9978c5eb006b15e47578a596ae128d8e5060c1b90f18d0b126c23e27d112ec307d45945b4ef0d3a6865478038f6bc62681aca7693c4c657a52ed5ea10d71a25612671e299cb6e05449ccd3755e61e3c4e5a98dd9a02ea0aa0d7d5c40470d9ea406cd9c56378a71755cacf5d32bc472d14e8d8e097f6f087c81d87e0d9e3239c4635f5027f5892305bad367c1742ad4a7a547dcc5919edf75deeb89e718251077f48b7676b0d02f31b3c17cc04397b93893ec0b4ab4f34a6f536262b5dec524724176c9c67d945a55c560c6d150c08fa29cd10a0f10c2783684813b16a34396d0d1ff4e9fb89764a50fd8f0172729a9cb0d5dd12b3c9764b51b1a5fb062fa6b78ade4d56e54bf53d5ea469993d6e1fdf353531db76daf9da2d1f3f92416d83661b2c40852782720530ef511aafd155085b12423a0fafff71f698d76cd42a186e2780bc57f0ac84f9606ad88c24dce6cc0c617f45b1d9dec74500d04b688f4831ad0a2f54b8395109f693ec7cd5b87c59f3a1963982e70b346d3a672bd2005935f61105880fde6f36b57e84d9e6db513142de01f37a4f3cf98f8d4328a9626f5bf68846930c1feb0eb85ed5da51458f0e711e50a89a46b23bbb5e8ed9a2fb56fb738c56079f9e6fe6341c1dd91235daca7c87f978b579b02c84f010718c284e6682e563d2e107184e76c05c28457d48683b43e8f02eb2f43a513cdb4e8e5f014b59613ee0d3435eb98694f8bb528fe3e14fb5a003a47f0f2c1020771b476da7cc811c036136c0dfa74daa897bee7bf66dc3fd66b8c998cffe6ce839690be45eb460e7c56c53e5c4647dc12d7b7db80725a072f3d004a39d6dd6e7795edd6464cf803f5132e8c76630ecf57963729d22b1685a7d6c5cc7d8ba1a8ab69fccf3bc972974a9aeba754a45d74cec348f1b77c6b37aac499009550c875469d85b7754c641d827c61acbb0dc89f98e269dd4d10c3e87086a7007f55aa6e654a0102a1a3accae0ccb5019d38b843a52920d57c11638780c8fd9a700338733c6841da2900f0f9217dca6e38109945d0aeae2aeae56fd9e1a9a2cc4c861eacbf81c024553f819df5959e42a4dcb40095911f1ce1846dea68d0b4936f50245d0f92bd4f55b536115cafe8cc9135ecdc93a78dd0b8902c89270d89a340f9ac6784454b553b606a3e87d12e0bd1736600e9fba075cc6b267a8ab01953ab4a4ac361ff486405b65b2c32702a4ee9a223cb75b383f039bf43875f163c844d733801150bda7eec7af4a90fdcbc297bda208f9a3248048346dc00f2001b5ef2a0cc48eabefa5b20b4e8efef3b7e7c5f271f109ec39324e0c8036a013e71f253b7a18b472b2a79b2c2535075f0d7631ae90a4a96209a4389199ac5a46f261082c951dab875b1d8e8dc75b0e001c5081876e5a486b7266f138f306326503fb8c5216366dc63235c243a077cd66b3611542aed9d3f0057f528ab12badd1a83f53c54eadeb203267f2a597c66b45ee81b739d2ea8cf802ee744db47e8a6fd40bb45f077ad991b5c8c6554737a3536fde8bd8b14789a762aed9029c065aa3b1b2347e9776dc377b8c10b9565924a167f3f9ec17b08e39460835b7f8dfd78f2fcd73d5b5deef4c8fa3288f5a5c81f4d4e071a82977fcae6997ad6398b7ab62a297d2a6c1f92adc5c082d6e3916ee99ed6bccc987f5974fb41ee9422d9fb8c87b8d33660dcb66d15291b8a0d2524ba31258090a5d5298d2befd55e1840056573e07321e6f0708bb0fe3c7409756d254dbb19024bcc83545c316564dad8d126307285464aac0b5c57f8f2b7910004577c7593bdbd21faafe91f59d04f8a82b9f95a95fa64ddfc6a1f3cc679cc808b8d5540206bcf598d945b6b7934ab722669704d36f3ee178980dd865cef47d40d8322d8e00edad23f9af829ad20b5f56c55e731c5c1909dadd7c13a1c4446daa785c74a563fdedfdc9518d43ab9bfd8017838e1a56afe68a25b5e5c53ce107f955cc53fe336579c479cd90ffa2c48606b34486fabea8c2a4f1890e766bb69dd2fd97014f2e65a7f5c3b7cd36935778248e45be769c70399b4c189093f0ae74099af98cd1abfa9057182257a575334c81f275377ff51902b5cd0771d09e55f1b183a3a8fa19a5f3e25307bbf6cd4f8effc1495b26ade0f9b16ed70ec79bc398e7aa74f58f016cdcafaef607a6aec335df7cdaffd3ae8ed49c92665ef2357b94c3e5937efadc1a8cee2c962642b89e7ea6bb488999db548e330d2c1605eeafeeb3349f43fd87ba0947d650658e757503d568d5a80e081ae02492ce74e92242d931ed82a8cec0f4b09fa9c7c006ce477bed4aa233500a6644032e808caeb249a0ea47bf38416494bec6d41367bda2a028ec20f2b324c2be12b9e821d19ef63f0c0f01a686694cb52087572b3ea8c9885a67c098df90ffdccfd6940870a92dac90938c85d20e7770d341a4631594f7fec1317191cd1420998f08d7bffd438f298f2f32fde9441c7368416614f97788142b493185d4f0d35569f7e22fd231eff6a07d626c2ed2c7f686470122d07cfb4b879ff009372c694f5b6dfd7c8371b22ce653cf41ffc7ea1c4e13eb8e98a6c3939a64feff3d1a80088042bdee52cf9e7dde0477b2301a9bc0ae3b229cb2b8b49318027f9c031eabeaabe898c0a401ac424b5c9fc56879ad99d1bdc02be1e79e6b783b85671da11e7e49ab5e908eba90104377b0dc61c449d740e8af56add626c6b1f95a76320c8ae8f24657c5f869de5f01ba09c9d6af760335b23251963f7366661b90b59f9f2e376555de751137ba56dc948bc58d6aed2cc836199e6536efe7620fb866c2d2449f0430dcaec232c514440757f9484267380ccc1e036ca0d9f6bfddcf575db6627e9543adce59be4840fa8e0cc0dcee31bf607883e5f74718b3ad11a7bfcfd90ebf7af039a141bd15919d07bd50969d1a8d73ac7f4267f9bc48ac583faba8c8cc4241f51d4c39b9f9dc8265bdd92362358d9b4d14c06019a2681a68b798eedfcd1ac5afc415aaeed7d3a7cfd23fea0dd3f5dcde69662b3fbcfa1e39ac18aa5071f4b0232b06983452daeb8dbc6872d521c942103f53e49ec3d9dcf06238f95e4ce03fab0834625a14f4855931b28f1b61a30c49946ffe70903abe0321da635ffc158be5db676a27d3b13cad61578cbb6766a70a7789e08a92684be963fe63a22fa113869eeff0b8255bd1e6a9c974e35fa851968ed3c6500ab6eb1357a4baeb2aaad13f970dd3e20c1d82401e5c140b8e4bc8f5ab1be6be3b5653695c4985e80b8899e493370afb00f2133b9b37c1af2455fc559d2866ba0a71a78efa64bb62edb7bf594b04404305161f8fe834fb7a5cb9dbcb7e6bb25eea49bd6e79d6703a69cfab74d30a5ef12a0212e381b4f0edd10076994d58f202fb18c82268bedbbffdc9eb38695a36fc8ee20c215822a1f2287487835a0d79a111a7df504fd22620208c8d21d4c035a5082ba958fff66d490c0e333493c9132c096d3d380e34a391306d76afe318456454cfec5eee3d9a9078862d04bdd720f3418a2c869121761b85604ac568defa6b9f0294b782d979e7eb7e207d10df5287114d96912b5dfe5f3ebce69ce812778e3ce94933db83e1ac672b29e34a8a05d47d39062787737ed288c4dbb8bd88723e5fb29d33b8be758b56b20210154249f54cea0cca05c42b1bf97db834d652bb72f44c50b7b9363227c6f74bc1bd6d6b101bf57ff0cdb28dcbb79942bfef11a58f4505b4c6492dfdeab9dce7d7198546c8c9f92cc4b4f6a7d0811b16e55a43295a3bbb72f5002768972c8e58c262d639604de28331803db70f4e693d3bcba16def4ba7e289adddae9aa9bb9e9ec2e335651c6e2f853acf9e8e2fc8543251dfa8309f8c9be420996a7b3f5fdeef3cdfbf6fc18cc4dfa63dd28e9f25e4f226d1bbd1336f7b8506aa89d083a1512198078d8df9893acd2689377109eb76d0c35357e011dd6fce0409a72eb87b2e31480db08a9fe2663a47f3af608bcec32c01fc6b35c293d14def3111b3a9826d66f7e9aa6b3bafdf61f347fd21b5c2b1ea152aaf13b483ef326d711329e39bde16693bdb3211b89182adcb7735207a7d3f57ef937f18cd99ce8db21397d201993c0406a5b822d7f72e8aef2c0ee20448018210201fbfeb2a96efa26d3cb3bf0bfec665dc70ab1cd8598dd508278c7917256677e23732bf22608a25d26811e29e9d209ef0f80d569fa6623077d41192726fa29238d0e96c5dc4bcfe71f1250df4da2564c3b9d29897b198dabd6f6f7781418092ea818ab9966ddd07f9cb0c6a1394ed2beb333941c8b68f1a1d4d4fb0777cc7ac465e68b4926bb89124ae8a0032bb59090b724144bccc7135167d21a39b06d7c4e7ec2849766390359db8ddd0a23ed2c338e56b2db3e91a6f9d723af6bb2230ad7adcc008f0edddc75a54f1489b325d5c7072ef3c3a57ed1d238b15b670f6abde7723e25e416ac7210d1eac7dfc6511a91f79d38dd373a4c1872b87c68b818f19c32ddcf0d34a226124df2931b21447be0b8a5b9820d8fc7a99f4ede3ffeb11012ad7fc9f46a6770e270b45e11fad40cc9a314f57735d8dadfee8a3ca1d6a0dc361a279518700d1750f09c74ef643a270ab678b2a4446ebd13374315e45c55a0c729e2fff3811fb23865d86a825798a00b964a69f76e7167756d02f2f6310a3a41b5d23961b623733b49f784a29716eecce4b050f5a521f589ff6dc37b52ae241ff5d537c248ef1b5a56d38b183d429bbde8bc83fd73224abb140b8a600780d68a3c0196083de9e844d65707e851601a5916056d72daba0359853635934ea11abd159d74c8a47abc5000f437ccb466c58b0b99df48d7e5ecf7fe5fd66a7df6da82bc493e3b208d99ac3f02542bea6a90b8c9ffe426e066ccc680a492b9820acf57edf2762427f14feb6d2163b2a41d2e3b648afc9615af3684107bb6332971209fc692c759c09e6d2f0bb08e041361b8b3d79cc2fdf8cb219f9aa8f1d8842c9b3cab633aaa81f6eea28452f6efe1a11306ded08fed845311e2a48323a86570314900c1d547dbc266a8e21eb9dc8c1a37e4dc9116a47ffb8fe9fa7d9bfafb5544f5ac1a22dd706bcca1773ffb941b8e7897f3d0f6c995333ee9b8299230b6e63a6e67e5b4ddf0976edd3300f49740274e6ee0e7141f62b24eadc304236b028038a6dcfc026a40cf3607f17e2a3e221998eb94e8c6780d1fc57cd5d35c1d8cc7e382ed2369f9975232a7c23f334ff8f83da5881652bcf66fc08e240b8cb95c0782f1dd3492d5a0faca055c8badc2a50b3cd1cef10dcdf6b5c80c3fd3d1758a13bd8c5b6c6a67d599378f47be5989fa11eeba8d4f3d9d1637ae00c77ce887f0e9ecafcde01cc8e629f1aad82a07e61c50408dc4f093b02bba6d062306715fab15b2c5f1d5ffda0a6a235e980e204885d3ea2fc60a38577347d5e17bdf21c4f2b49cce3ea0bf717105bc69840627066e5144c07b45b52f6ad29ae0bca97b21763071576e93c5bb4379d1bf39cf4b34012b0e33e1a947545c56ecabef1a8cb61c24195193ce8b656f5e39ce1992ba28c3de1e41b575cb545e01bf803e003a9bba30f66fa3e86e37815c10fb02218dcefe1a9828cd48b11b87532fd31cb21017778e1abecc227f02a71a8176122d7f43e4e90a454a914252ccd08d11f6d50a3947ab9e5f04f7ccb145b202910ced07fefece426618b3fa9525451fd74acb596434e976f4b14b6e0c66a02b92ba55778db7dd1dd2105f0873958c227188afe1a1dc39e33511614f04a56eebf7655ad8fadc4d2e96426e5a27af8b53481ebd66bd2547c0ec248ff929a2639f3bfe9fcb0a51c88db8502582761114d4e5dcaf48fcdf7ab7dd3e6ace1b8023eaa1563fe7ffd4879c8ec15a005b01aa9530c5a82144063fab67ba7e2b58dd674ed27703e5303dfc656c90aaac99fa1255e7c9471a04a997e05475c830c92d5a702906d7ba34360e28d4059c59910d3384e1e613104b28e22a4a32273affa62b496bb87e457d426badbb52c056ab517f2d07b8005b10dc760dcf0fed65a6aa51d2c117ff949f52b4e2a4122ef444cdce642542e5a603561281c75ff9261252c61a8fd2d4ca4c85c0c1f1b036a4d3389f8c2c14a5f4f173f7cd15cbcba69e8194e58b0ec6b41c630bfbd25189901945286e0ae4117d3d780e58775d61b4bb2d3d0c684adb601e3dc5a96390ed91df034735203b7a476fbb30754bce9de7a88a8c06b97738ad38d10eeb6763cf7dbd14458c3c947d08b4f686247789b9bf240c6266909f08184e917dcb0aa0b496e138414d40fe186efaf4013d5f7e65329170d686bc4f692d04dd4b2750730a27f52efa36cfa24c8eace4ea277a1610b4c0bf18700846301204b0afab201f77bd1a9a6fd4ced4c09ec7e1f8e6221164a71b99a795d26dab2cd34bb121c0579bb1afed6f1e3a7c32910d216c60bf582e0e369c23cb1ab251582b74e3535d03ae09a06bd5486a9884fecd9a9d7ba74bc7c160c2e66fa782ab19094504a7331dc5e6380d221d7303d78e6d700f79478fc56702d622065d43fa29e6270c455a196c2db5f31d532b8839b1a11f53c8f618e7d7902d73c943ef11165482a8c2d1b2e524460d9a3cd8cd1dc310ad8800fd3682161b83addf1e2d1c39dd614f5f78219f73dd8401413b5e465e76c65b51b31d8f7ee582b369de5651858781b4f23573124572a3d97f2172a72fafa4b204720d4d1fd8c35d30338f9d5b9e9ac4b478c034f0edd55e7621f1c7bf5e9346e292330ffde153b1ab87f433c304a66798714d1935a69c742c8cbaf45ddf123d777f6ebd3013b0493505fdfa644eff71be23bebe26e8ecf8f9d9350b20345e3c8868a34d591d5f89c2eacba33d6336f60db23cad91e73440b87069b19d6bfacffd4e69eb45c19cc9bacd228bfc4b0867d538a7e3d51aeef48f02da832836e0e1b69785428bb173104e598bb443eb6ecfc4209f148c31a9f7cc56aa276f02372f499336f3c801f47a20f7ab9e80382dd0c7f64992e1983e37c921c168480ee2bcade602c71e6e5ad3c6577d9830e70d3e9dcb5d8345af5f3a0292927cfeae9a2ecd3515b2ecc516ddb96e8c6d726bebc5f6e8db0296483ddc250a73283754709bc5897fd1e04c12f33b576d5d345a7a220f42aa3feffd63c89c628f08ebfb7dd8892aa0dd42fb33af5d58b2237625dde4953e5343625e9d6c57608241bde7e0635e702a721f208036ae05000f8f88933ad86db0eed503598500af4f795c1e3b1bb1185c4d12329182383869e6b49c21dfa177c478e22cffb29acc573ee5ddcaee47c9d288ac5062edbc516e6ba3d4f0fa17bfb058313ab5535f663e83b446e216d22ae83e2e91db9336b0198fa3d0a91a7c67a10a01c9dd38e6cb131987ae60033049c96407a9ae1fe073eb6011d6da2dbfcbd83b894f575c5160399e2d62f15c8dfbdbc2dca04b9a704f5f678fdba0a55efeac6099acc4fb1f4b0dc282220f25466ef0180e800b968df3b06426bb22aaa0b84e5e6873bd27908db685ed48c276003326315c4487e9279ed9d7967022fc59d533ac4c87bf455d97202bdf9e4fe6476786bce8fa325417e348f564e4500c36aeed1d48838d499993ec060420e6c7cd50fb262922d9ba54611079487e7e44ff7407954348873d7b7dabc994306b4191aaf70fcec7d3b7e7289ca1c299ff0d5ac6e17e3e3b99b46c648fd4487aae50eba361fb154a5a6462fde91a5d1b8e855a4816374eb7c0820be14596cfafaf504202cc59cd685460538ff40340d0bc0d399754bd6890323373ceaac80895862b432d5c6857e88d548553be573b045be9fd0158f9d5e3cf7596614ab67e32881f36c35ceb749d5843d6aa0c503153ed818a1833afc4b807656826d155c6188b3b1abfe58377a20f31c09928e07e00d3667f628fc7757bfe1a8fe709d5d101af59a0d17964683dca4e3544e011c74e53dbc475afd136b8345e70f1006460750da5b56426dd8ca40b5590c4d4f4bf51b80a9ff3c47bf34c4b447ef29c9d55cbba5bcdc1e7ef924647a7e187124a1c2d4e1836b45332da04d04f744aa5ce5474b749a98a94a1a7e0f5a3bbd0fe745d3e14c6bb6eac67f33f01dee70ce2030388dd7c088556ab13f90cbfecb33f890e6d18db63171a31d0a2f1f59b182558e7d80f240082842adb152e96c09400a1ef306b765ed716a35464c5bc6ba85fca1e7bbae8b09ca7f1c88bd6651579f31cab9c012d3028012b53bceec330da02d242da5f2a23e25414a48d49261736e3f21a4f88eff5b416977398351e2e0897f2c373fb0d104b07926f8a58a53953024a064453e0d7793aadcb86bd313d56f3b3c6533b07aa6aecad081c0480005b01b27abc03c1f9d0612a63be3c0f3c59b93b53772fbe50f81a0fefc7863a1cec78cc8f04f9e496e6f021814836f1f4198b529b072ee9ad2b1f86cd52951e7ddaeab5b713ae26fe10615f049d195e350854e629aa7b1efc8f6c9652587e7dae4ffcca72e654d97f790480eb9130eb6b98cee30eab690a7743b28b9bef4d7f781fe1e6bbd442d9068431f9c8924916b55bb71cdc14eab1ea9ca8f325e842995aea4ac169c5ea1d799bcd80563fa7a472702fc779c75bd08e2a19082d2962a7845a0b82f1ca1080b2ceb6ffb1c42d1f326eb02233350a42541c8eb29c1c92c38469bd4025c788b7390b017ce5af94ef824d22b57109569b606db4d38f032596e31c566b61f5830bf112040edb643d462915be95fd8961e5bae5e35b543b11141cf2a2fe6d6d4c15d2cf0d24b400edf17d4906ff1e2dbcd6f0fa486c127da2b16ad3f20d5600cdf25d859515804c3ce459e1bf75826afff2a550ca9b21ebd7d358dde26f6bf916d5c2e2ce0ed70fbfef0cfcc5fdba79246a33567f600dfdb1a9be9441548d32fae0ed40f7c805d277649ce1313a67ab6dfd91e33a9c8228d44e6cf6268a9e0982a7bf73686eb71356f49072cb47d0a2c70515f605372ed53cfaeaf3d78829e2e1c65026a5d4387dd4d8115985c8ca80202ec70d450062a019ddcd183cb659c4f3cb2bc92758e30002ced959c6e345ec6e954850eea6c2d67ee9976e483b6a16d49fc5612e28afd376f40f9fbe828e00bc135d7d042caf753838dcead2a3d8f65bab4e5d3fd71b5d1d7832ab65d83bccbc49d7d75d4197bb1814ad8feb600e7433619f090646d8ed75dc5961f12c37a1f070826d773dfbbe6b102af3662dbdf6b66e926d67c607b52c07583a8db675a1a4d9734b4d4374af35a08f1551c79bb9117b59ef76de1cd6e2291a920e4ea085d749b1fe30319cd2a925162d2acd7039c0153b2362243afc2e90bcef648060e559b7b1ca198e095f0b23f3e87943fdbc89f3def03350cf04d826bf7078f1eb2ed0e396a6eb7b3d3ee567bc5c2c574929d86e485bfeb92bdac1aa0d890103e804a7fd6e5c54eabd9116e4a8af0cf769706634ce367adcef372631ec8a5341054df16872ef84b47e0ddfddf384bf9f904be54fa39ec753f55f08a2e6c790a8ee41b25041d59bf0493b469704bfc81312010dc285bd4a04794b97db12e656cd9e94920362c4f69bb4730c2876761811239c448a8b3ac2d7889090945906d53ea906a514e8476f73e9a5fd663f6c340ca4b46fc4d02cc2a6a025bc893bb62305a5d72b499f8ae70184c0da6a1345bf9d60b56a0161b4dba8b1dd3f31eae1adc5ddd08f480aba58269330ca1b0ea43497b52772e7ecf2fa9ac1f3e77d0ada64b5dd6864d223853535278beafc0bceccc137db7c5812197d1270a6661898157efb92c8f829d21542127bfd482eb5ba839775ae630ab566395adc044794cdf6ccaafc412ba47313099273985dfda58c633cdcaed3b543bcdf8759b3c082541e7e44fc28e04a4774310d7bc53012be693f2263144a99e2aa4746ddbb22b2b8212f1ccf4cc9468987762411cdf731c5bad28fc438f81d569ed71e83fe3bb3c991a0b587ac316c3f23d55c23d45bba716b807881a67b00eacec72090cc3c609b46b11eb559aff6c390228b149bad3bd40acf17e6e088bccf78bec5e78290bb324ba816ba5971db5a55937a3e06d300e01add2a0e8185207b48b0c92bff78f076460375bf642e54b64aa29c5a752ff7c9071d288fbe4fd89a39b45c9b8dc6dc030e1bc7de90448c14bda8c80eac5702af0eec7428b9d0a8438a744dfa6110e6123445aa64df0205b31dc812af66ea9fbfba4abd4a444f35e3eb6986597c68434fb4603e34404eabba72da70b4b590c0db3b8873f33d3013ec4656408e34b84ff355768b602392cbdcd8ee0aad8f303df256bc106af2d0132db61b78b68b8a8c742e729ff8ade3af853d304d70d1044b3785892d191f48946484ddf0bfcc7ce5d26107ea0f51bcee15ec564a2e143a01d0117f1d4b02c5e89214c1787d353ee0b2303848aa72bba79de6c649c2f7d4de93ecd066d5f92088e7c9bccab1dd6b48d6acaf65df2fe3579b9ae9e922c44b0183db4f18700ab34f2e6e6922508fa8352af35fcce094abd98f5422e6cdcdb61cbb5c72214126b548fde2d738b50bf776b9cf1e477d98b87604ad68328ac00e923e80745f349ccb4f1fb9afc1a98a7dba05f6d83cf7269f3b0e3b655b63063df7579b40da5b2a45096ca46607881d659be6d9d8ae240ccd1e8dca8a2da911ec4a1a7fdcff614a654f7aaeb5679116addfde0cd694460c4f22bae1e005e80c9e4a239aeb83ece0678eba96a468ca8ff73c1d60c8fcd0b74e0d233d8a27ffff22cfd6dc710e45f7d1838a56cb391e38ddc7bd65b1345411247237e3e15bb58ed354b4c8bcf9910c4961ac9b9554d99df9f1193c62c498b1aff00d9e7bebbec61c9e65e4ae481aaf41a156d35abefaf95448544773d9790e7a926339943a964d55c4c880e03c66a81e3a3a4feafb90c7293d2d22139ca84888813a7d5773f2408d1d40438ed22128128c000d65436ec9ee610ca64a7f0c400a7d0e014f58ac0ac72deea16265059066453773c6a73fb568ee3ac6bf8403b2317ccc2efad72201feb306afe324db68f0fbfb780e0ead7dafed16c443e8bb0f38d60421700e004d4672b9b8bda3ca8abd595adafff70f5ab3d710146acdb67250c3289edf74da3680bb242a98cac342c3b3fb8965ba9debb6d4e4ae7f9dfa403084cf7b787382ca2bf6fa0aeb47c24733536312e3333a0d6cfa0d7f0f706340ee56c540d2ed741717da6972ff708231d15bafa4f52c0cbd95bb09c02fd83c437177f12beb7c299d22407832d2db34e66beed6228fe13d525c52e77d119d99f9847c5aef7d441640333c47ffb8b206bd581166c55469ff774429b973d073567c5c761a4b07c2dec903056e1f729cc07010ce6d8ff4eb5b2c0233048478d61a65aadf177b3dd34dbb1324b401831ac56c7ce69aaaca42978146aed9ed35749e5767c46c67f3436eadb00efb2341bc2dc0e7e41f9b51993772aa4e04f19e784089026637328dc531894b3053119aa320a652aa24bd86385d5b0feaaef098ce9adacaf44ca959372d4d74b7c6abe78b2f1586decb99a80d4bec2d2e7c7ae656b72c66884d08bb6ca7f6f691e52ce482c1b900407df7957f1b5153c2d8a2714a61dd20e41e365c08cd4eebdc30d71ac191536af4a25a29a8d89fa25d0cdceb933325b5af2e03ae59fffc29b761fabd4a2a7e22b0a60b22f19c4cfba574332f6f1b763d7812f8ea8b173d5e66790f2d5e5c6c8c2aeb84d10f43a164fe35b0120fc397ed648604260580a5a2d7d0712bac7b8492e52bb4fc96326fb15ff4b3673e4a606d7985894919a9262fe12036403ed20b863f843396c18606f28d3e23e883376b9fd1afaf896ea45598cd3224625013c259e0f64dfb22b9a2b4ae22ede7757be15c2f221844021f82a870f5e009bce74725cea601420dd36139f0c83e9028a395a09e4756e28a276575c911714b489bd11b1ff49448f80d4f032cc39c99607b6f79b3f2dd52f307f73b8e71b731745295530c14beb66fdb444acc394f6196dd51b3ae8d6d1af731659b15e468dfea0eab7c9d1941c96ec0115f8654420a4d5efee452e9f0a4db921f24d1b108584713be9067fd59b2344b03ab3a74856c2fa1f48d1954edafb207e13bb6c9f86cc037ed970f4a9def067541da375cbd0c09cf71d8475d94a3e1f0a247c4458b601b37b92bda5df5596b5b97a22dc945c7d115888fd47d63d20690629a17311a63dc9a4986be787071ac1ffe04de53d7a235f9bfad896de674f94471e675d3708170775f19ab8074952aa62f5aeb073f39169655a5f5cea177b035b35c6c696ac7e0b62a10455f5c944911a16e0d83ad2d37e5ed4600c5a49196f34cc253fe81058fdceda6cfc92b821c8c878d67054021b12b693cc66aa3b0089db1da7393fd3b0b11027ca87773ac3e96d8ec1f271affc6b46aea4dc0dbcd8f98310edc36123ac8a4f1f22c96983e5e8bba6bd1a420304944c62092bb176e2a173399624fa94971f9d564349e8b6b938a9da0ee8e3efb083fa83ab9cedb4e9fafe5b48e73473cf15354ff438e5dc4aef6b0a2e1e0d172c73a367e6cac191645b7dbd916f8f37c08f44acb6bbe3b6014f94fa42f6f35d23e8303edc5dbcf097c0257643c18110ec81c39e6a26e56d66ea7c097134d94689f910aba207071194e14669a695f1cff5179969a58307adf17743f5da25dbec7e83d3a4961c78460d030a2c67cc941134c5fc6d47728eeb3482150823b3efcb3274e250019634026f3184d9ae77816502671918b5229ca99585ab9b5da86f87a3e9104583633b75c9e4d0bd1d17adb3bd3d1eb72ec6e778a1cc2e188ca75810f897db7e9e42069c07cc0a1cb6481168206148b00f3854242372263e261cad19199953b04663607cad79a882f3b6a448df210a9612f50b01564dbc55d921ebe2dc2380caffd8655ae09e2bf8948ecc2416c32f5370655a2dd4912081d760f7fc4e8b62a01fc28b78f17eddcda9acc88437fe4b9f8144063026c165667cd3b3089dc44dfb38d216d58b8668e142e05c62a5773049481bb9c2a8e3b858c5ea41ff86fbf8d90b5cc57a0f0bef938dbbcc99fe2e7210cee4e3c78e7561a5e8f876fb3d05b1867ede0c0772a867abab2f6b49f34adbd62fa608a76aa038faecabd566894d5b67b97e993e83725cabb2e8153fe662e55b910f8bd2aec38620d2846dcf4d1ce97e31fa0a120593fb1434150ea5d7297a89926aa111c686e86267058bc14c7fa4f78e654e01152200004caa9a89938eec869b0f9e03c772da956c603130eafa410527ec4c11cc28245e1c5cb604a916d48427e1fc8b2f27a37e03d52a2a8bb364975c67048f5b6c8f480009e83fbca2b66e96eb0cfe79daceadc25eed67bde30328ef538b495bdbd21337d7b86f2455c7c57242d8ce12c4f56003625fc79a3dae3f29b44dc486ef98bb621209480ab3e21b5a93f28f85200483d3454452f83f2140cd2781d809108935a6c16b6767db3d2644f50ae5e8d60c2355f3afddcee7b9a601beb98e65c706473339a871f7a99a5d7de744b45d8f4aca579e17ed2ee9141aa945ece8aec0cdc0eafa995dc69f967aec2f9bb2446d4c74f4508c49f0154aa3f64b2d07fb99597629c51af0ec7177ee423a53cefce8ffda6d93fd418ecb37292262cd5e0027309276c4517e5d323f065bb1cbf6a39227a9c7759333d6a01a13a2218d3b469f4c4f7cf5584e16f88711602df9e4912d6af8a1b70a4c9bef224205033d5b199b43cb2da7a5092377c6038e668f7ecb49c08674cb62dd3d99b3100b4541b53d95ea9e2fad19fb70b368e99d9828d20db9a97cdadee7ccf12f79bc9c9822f8112efc6fc3d74b7ae031d1045aa21be6496cc0ad96d381550cb3c0094d292d6db7a4d26049511abe0e75d6ca619b9c69442caafb02b185b038f94d4813658ee108ba111692967b02026ed6fe9c83773a559a21c7bbdb46219af82f0db81817813adf897a404c0e46b2a22523cf769a76a04973500583615808072aa5eda1e62c19fd9f8e19cadb2e6d7a0df008c7dafae7244f35a4ebabf94ce2838e2ff11ae8b6679d3b292a0cdde381ed80a1149c0e68fe1f5d3208ae087e4b87c3892cb4a19fe752f0565c6e7a1200d67e9281b8f656388c94f5768db9df626991ddde73e2b37f4a665e6425a1512404bc00ac74b3928f259e009fbbc28eb8cdff3984aedb88b1ba05685ab1b4acfd46fe2d3f8d4e2ce78c886c8a0f3cb3793232c734f7f6ce8f34e5d09a1ba72607c03b4e1bb5564df027a15ee11a04cad665f35b482f3ea8732df688a412f7c45ad46b8b572ecb3494ab7eeabaec3ffbd2e19dfecdb0aa7819e5152243bf89f67e31983066dc3993285ce68bae7fbd5924a7558e550402be07071394d74893ab406937fa15b8ef1adb9f0f49c273aaad465cb2036852f608cef3ea486630bf7549fefa3ca22a4c4c3bd4bf724c2ac9c9f711d025ca8ace3e2c41ce8963a8afb3fb5c5e59a2e20d41bc1261d4327ec8700c7590a4b4398c862832e27b40bb1b9f9eb434d8d032424e680b7e98adb454ff276e4450e9efa044f65b443bc666af7e66bd6258be31ce0c39a1d5ae4ca847efd5f35585ec4d33d6cd4635438dce64fe55b745e1fa025711e5d16a0053a6012a0fe1aa77dda8dcdc2bd43f328e6ee25d20322255be7477e06926910ff6e66ec2ebbff0098834c97b976ebdb93a9ef965aa650ddd41ffc82e59bad3902c5b726106c5aa81127034dd9562c341543e729fde74e1048efe573b055b10209f50bd1e0fffd1ec831cfd87f44ed567c4f53b5d4b19e990607837a5ed4251d533c80f9b475468235b9e9f829fdea13b1c22fa30592aa2bde613d4a79483d1dc95440de798157043d07d0e32a4f0310bc7cc62b089bdc1a9b9f43715f0485d92a55204352a7da1451a072b95c7d4b40b2886eb0711dac4eb029fd85af1c0a35a3f91270c504505fdab7994c68c904eecbc74d576485294eab7a170196a466398a902965d0ba813369246b3b0ba8cafb1501d5dddda3433edc7435781874b34e9ae960b49bd9775ddc8b04dd91be22cd508ab4bf7729a6dda7f6b7412034b406225ca9d2de1478a87d0517ab11edecb0363d45d0ef8c3f6c779b1e39dc3395c2fcd6a93c48c550b992c5308f70e01fca537a6fe15fdc13edf91fe718379f91d07f449746b6206a7a31fc82f57c0deb78851cd84a60cdd534b7ba2cb78d3d82751830a37c194e414cc0539292ace6aac74271668fdada9902e00a8308d57665f51309f9d7c7f1ed886ab8ccad9c1192d0053f35198112c667c8966baae1c6f7e39ca075db8d20847092c80f72c2d82f888ab453d4b0319d98d8c5b52708dc013dda45fa6f387cdb7237999f96f4c0c019ca3b9bb6736ebbefdd41ba4f8ada105de0a675fcc7b69dea02625775c67e577e941c70780b0c05e057894b174d88c65a8d13cb51944b33343bebc16577267717065457ce51b729684d3f6e3d97b935316ccc138123371940fcad84adbe178c154f29e8eacadcd26011d594c604a20c2c753b70b8f5d2d8e5c91ff601544c60d029596f9b9d3fa8a5ff6dcf475261e8a74fc1d0b280a972a4692176384dc2c6ae55ba8d563e6ac308e856e49484d0382570e0fd84ea9008b895194764423fde5e9744a4863216d8c7cbce4a23b64091ed53328f720a39b9a59338c28467a45149a07e29cd7abb1ed53f1d711ee39333d8412f1e3a71f97860757494402d0666a5344901b10c931a2c2c21c330884ceff4d57831ce7cad2b3efda7767a77b874c2c5f4c995ad34f66413eeebd6e70e36e30892d7c25114edaeb31243854b8bde926607dbd708fd988863ea55081eef6aaa39551f1eedd1f909946caad3f34fc5136dea0d2afd1deb3d086bb29433c04b17bf467396ef980051a8ea137d8945365a49f28b54ccb8c0ec92712f106c46e3947e1b85467b517c0c68ec46b3f3baa44ee18603d2a9178ef881c5091d93c367c6dc10ef6e7b28a1c389a9434b9be348416b49647ae07702614b9dc280f12fd6636074db43c831a3bf7d208e341f6ff9d48597729bf81c2711e7fcecef0d7ed4c7a8c52a939c1899984ce3ec02fbdd59388b0799612bf88436866897d7500c4a0ed06d43282bcf4b808a6980504b01645ddc6289d348f2d2db548b7be30a1a7b114526becc0d4f82e4a9055b862e0b1b05f7b9ff03792fdcf352e614f50be376c1c726e8cb31a59a4058396b9f92e620734e05021e4600574dfad7eb6f351159c2d40210ea0ad3db83a8ee2f3548abaeebaad76e04dd45438f5a565a381dd3f267463f1399b392c8712f0a27af72d01106dc29c0078599d81817f5e7c7606b97cea5a30467022eef09681887fe73f92a665ef9747eba7c3634b61924475262c5e45adac18d5a2b272f332d8228e31a3bc8e7c00b68d23b14f5596f7d154fc199bcc67b4d46a1c17b6f33772a5c156fc1bdbd4995e241f73d38ddf4721e3463c709072b7fd56dd6c748c067e5f46e8704e454f01fbaf8554ab91f92d8e5aa41aab11311761496ffcd9b03f4a7a8c619b8b8deb6b26a85630ce8a3b0b5da9c1781b2b14c10df16c25d24d5a95360cae8a609b11284ced50a56116c32074fb53de3a14a0bb2184862014a72fdf1786f7d79c55a536e7f5226f07e7235770052e456498341fdef79afb0836dc797dddc2459d14b504d5c24f45335f3633daf6fbfaaac2d568a448bc685d9075185c6ba618cd2fa87ca7319bcc9d4223aac5fcc4c752fac86c77b436abba6b7ef3ff782aa4305190d68c13d8c9eb6c3f5dd0e9e9511561d64e95e7804ce303b9f695d9dd5373a2f0d539afac21ec0bd3b8ca1bc1945d016eb349a036ff0d559b1945b1b0a0d721adcfd1fa3ebc71d0c2d93a54380c07e1eee6b544eb06a8a84f82e1c822808dd0d2113107435786805393664c82731c0bd71dce8b417c0799d3ea513f094c154948d5f992a66648fd4d9ca14cbc7a023f8cc44cc63bc0149d12200291514e5f4c10766bba77facc84ac193c06c5fb5cf7471f4bf67e661c91d8c6c9eeb09256226a094162cd055e9f91510893d45e9a933fb30047039fc0aa401f21507909b8f0a9fe7d6737f16ec600446217bb437b7c367cabc1c35c38c8463ab08c42497cbf64150074a6ea8e339e881c2fd85b044ed264872172a396ffd271deb2a048e3226c90a820e3f613aeb2fc54591f9a0447dd361496d002f3c8432b810f74304a6a2502174c1896f6c7d14d80da75658881f8d6465c01a7f2754758969859499b630ffabb795e43c37f7f10af2b694ea032b2bc728d880dbd56229fba063a7fab487325ccf6d2f6a240954409d0541f4e378b90f9d5484aa3e0ba6815df8702ba6e66036c1b4e62e05245d07a8ab99b5830240abb53a8d31c36b1b9547f3699f53d2825bf7d95a91c29b65d0e54455e006410188e81630634003b307d4ed629aa18942faf9398ef1f8b98569a3bc9161c3694b917cbff8eb68368f1d4b18834f96e8ac56152392953c13905ab288e12801c5afbd224111812c4fced9e8fb53cf5082b0828a1db1d9918c357161f46cb7ab38845a7224038b6a0cb48023dce856b866a41101bd7724d97c0bd59b97eb9c5e9211ecb5805b582a1f6558f43fbc5a496c5e5c796f274bf3286d0680d7b6e3193d9f03714c2c338e497c5139c33d589e4db68f7eab3d514997664f7d5df0863b030ac668f777bb504d98a13963558f190f0a591db530629690150b1f25747f9960ddca3c32f9c18d7e9e4c88adc5156065d90999edc9cd28b70c55ece727006a5a8b4a01f49ecfedb6ac1d5101b4b44a366510a0f60c3f6c8b6a560c02adb48ea0533d5fb0c7ea807ea58954734d144e57f5c67fa32cfcec658a6bb20122e48261138264c566a111fdefbf963be9e58479b69197a0481d6f5fc4d5c45d8fab436f799a161eb11a60c9b3e4b72d78cc7dfaebf745e15128441dc95c8259eb7b9faf0450fd471e34badadfd4f2c40abdffda25ac0d1087f9f28bf3cbd81f35137db2d6ddecba801cc4f8163c6dfdef2d44982fcf1348227709c5297e143deaa8a16b6e8455d6123d20198cee966e3135841260694fbedab2b34e2cfc2b7bf20f27cc247f47f4b3e6beb48c011f1e89534c2d599d98283d16959ba64735f534103df6b7bf94b3eae285424da283e9bd4f42ec83ac4698aed562b846b841f1563e81b39599e1c09b257ded3fd8411280fd6aab5d0e2a41d3e268246bc80d9bb6c0b625f7be7a067be24bb9193f92ea8f43922acd275fadfdcac403780d64078dafcfb2ea58a4d304c3553a8e0e2c68b05bba088bef1fc7b1e512bc581edef4793304b006957eba79c3533fed1280defbc28af15a5cec3530b73f6350943e1bb7d470a9a59e4fc44e37b113462636ba28dd0f1eb8ecabacaa2e643053116220a9e12c4cd68e1661039c9fa6b2ba6c9efcc37c974799397ced4e5193d3c253ae4c037fa5fe2fb9eebd57c031f784eb5e4df7f7e362ccf3faf81563e8fb1ba0e50c29061adb19192d5747a5a6ec05bf39a791da251de446e2ae4baf17a356efd04c1037774067600424a894a1d4fa108eadbe614be8b427b4307d53aca33a2798274620773550e4f8868f0f26f2df663c7859a5a3427e2e370afcb8f72eccb9eb666a07e7c9eceb7ebdb5389a1b8534b3045d3d7aa54871fab459c5ead69986ea684e8db7021f68c61551852068ea652141fb1aef8db8a33ce31c595ceb385ada16b24e865e061e31af791da15c6bf948f01997b7d43749bf27c2657ab993a5351565f8615112755d49f38122ca4cfc720a202a62b729a6caded8e6fcedf4169563fda548463bd1993f98e550d2b1a64bdf3c44e23d52c1065cb2e466d7eaae07723dde0101f29a5de9cd4f65d63d868a5d3f2cd1215050f4212263e0e604850f96f239c45020d6452b39b269a67704be358a84461112d085df52843413c4b16ad713517be14235f580b0299858ee9706a5dd7281f1941d3d4227e2dff6d05ee20b3702a15e873bc4f754fd5950a385fda9b1bc82436feac3ada972683f9714eec80f95555122f51024f34f3c1c164e1edfda9bfb148bff20a87b6472b834a194bee55256b46b8aacd78eceac9743a48a1f26940c014b6186c80e23549d54508fe7791f0afbf2c8545348a3ce19f2e8e3cd0f9288b8a7578396a9d2f6c3c69bc82d75d12ef3184cb6a875aff6b7c6c1477062efd923669de4c15047c4c618e1a2979196fbc3816c0083a1af7bac9ad013aabf9c167a56935f44c520a941e687a9ae16632ceeb52b2644ac52e31d89fe73e5029772077c06b0b03ff309db8eae845a33a83fccabf3219f306ffded6f85fa54fdc66746fb43a26181e6542642369660dc0ee93b7d7e738292306050189162347fcc0973e9f187949f34c5fa3a90cfa60755b323e142257db89b1b7691e3b1146b62586fa4f71451992da4bc81a55b0eb6c246af6f977731ef490ca9caff9554425039755bca1349cfaa8fb4dbdac55a1a4772f8e04d3595d7d9e3892e0ba0263d6518b181b8cfc861c35ca7b944720bfd3f87d21ee7f6d0422cebe544ba8992dba8bbf02b1917291bffa1d505fb97b85ecd0b29e1cc473ab14e5ead6d963d38c167c7745b07516f0c78de5d1c5ef5d57690dc272239bd830a8cb5e7986889f93824e2479c65ab5dabb791b0feb8ab61bd2a6c64cb4f14bea9a43567113580a880f6baff22334cab19de1b7e774b9064014d24ed9485f9d23826658aaf6aca26382dcd8967b06c31725d10927a351a9f98490370763054e6e17784f625c4803074602e00d7b89a69fa3c01e66eadd89a338e89d585d2f0af468089a5cc8a2910666ca192ddd4a8326786bb9e2a563e3cc28b2211d5abb5438f4177145930177ff9af5a245ea8b25ba5ca00f852dd0f4133e54719b0157074832006c8424fead2e5b80fa988ea506979ae22e0583ca720167383a6dec93b94d0247396c2d957d1d6e1ec4102fd186cf8d099107b5540cbbd4562fb7d00fbd3f1ecb2622a99bf52c391e15cbe793200bbc3b47d73126571f10440013d9d6dde22239802c9023e37d9393af60c25bf0cbe6992c1c133cb9081ed520e1c690cd293db9075dcfb781d974ad204f9a7d055d41500f75e0b1e189546b5fab2bbb1e8a07198f69a7539a52f59f993648d7817ec35b2623df581bd641bb260c8bfa9ac641eddfaef3a1955174697f4f879bbbbad32526e683cacac26dbe8b8927008f6a988c45930887d3bf5d1cc22e925a46265eb3ae281029bb7b336bdd985c266eed86b6f659e4d33c45515ffb033930ebd1968740b1ac3c98aa6d8c0c9d4ac3052034040f140cfcc3adec2c5b482841fb81ae6198230779fa2aed4f8a033351b66b2543af691382b4ac47d774cb9fe1b2fdb0686755add2897599e7548a462aae4f21d7134daaaaa1fe0fa5836cff42ed9ce051cb6d2ca3dff8e6b87b549b2920216b21ae119364c016514561469d1c8bfdd604447a0cd7aa3d2668761967dd156ba2fc2c8c3602c5b843a7ff400d159c8b740554898fdac139ef5e3fff5429a1b8dacd51694e10956f7e2b3e7acedb55f4f94e8540d824fcd643bde1959bb53281fd70920e8c67f5a2711a3f902ac7e04ade6b2779f26ff384c33c6d00e33a7c7c7b86179bdee203c120331ed2ec471ed21d548676628f8899d5f77ed6c412556cbf9f1ddfd15f7e932f8e4329835fc4e70340941561d8f140c3407798ea5479aa153147e3edd907d2659d1676643b3bab787a8eb1d4e5f461eecc556ce60df4ee02614c5269ae6aa98c1ba23b1d383eeab4add6635ae3ce868a6c605915c5ab3d732db17d952b21d67f734b57c1ef508588f1e75ea88685dd6498daa05ab4cc7edff6eeac95128e49f03fe4b6a3e9a5c613999dddfbc2fbff906dc29c31b9193faf7703bef63c56de2d0a0e4a8873b8bd43d32bb8b735b42d8aeea612da29e75c7c9755491152bb8a4ffc72c6b139fe2b213a8c666c7242d90edb4dd091fb0a62aa4c315c795200c33d032714bf5f2ca724d3186e24a3d5b210f45a7e58eb3af36ac27eb3507d160efc1adf69b9010ff3e82b5819d9c4cf6a6b5b4ccb3470614725297c5a91bd19492d99bc99888210e368beaebe2526f37e309d95c16d4934c2737415593ef7ef42c5c345511fd63bda43ded495ac360a5bcd2f6a5c327cbefc66c44f87bf63cae54ea3c73b842a846145f0824d376c2b431df06d215d48cf722f71c55b5f74baf0b0fb86e9e7e5a20ff7d59556a3c1d40ffb8198e252f665403d47265317ff6f0327b554c8432a407b16a0244b2ee422c1df7e3b95538b95807ff4e32e1587f24859f67df41cf209fb2b355b6dfb3b1a5431f439f49bd6bf038154e1eb2e8a2a68e156bf94329b372435c4a0bf040c8812c3f0ab3f2a46331ee2dfc9aaeedc84a473f3ad59480bed4a0c8ed8b0bd58dfaf808764af129c5464c9c4932ce21e7e71b09f2cd69a677fc811fef22f175bac43f7a95f1e8f394a798e55f489f47af989fb59036df7c5cd4439efda1369bd8d62d1744c280fc7af3db3c5ec96bc35c57be2f7785a24763b525a63b5793249a50edafb92c0e3cbb6632f52a75a5e90eb13505c888b62e326caaacae77af1aa043582d663fc4c2cfecaebcadeb00399cbf30b6a9becd300a4a0f67c503d167d085a7a37d3f7a23967880c96cb020a86f0edb9c02476badaab3c40f53da68c5e6afd2c8f77655c839441dbe0bb2eaeea2b5400f9550e188d038327c48ae9a1ff319e9e842b8c8cb698c548c889464fa441a59a08154c6198e8739eb99effc62defd24bec2cdc0b0abcf6745763154e5e00ce8fe3dbbb914a2ed89947dd150d8c5d79180607061062352bf455939c72581a6084c1f4ce8f5bbaee0a4a824fdd2256574f33e1baf8edb124345baff0f7f5ec618df4a9d83ca930469c753e54f8c68eceb0aec48b93674a9bbe603a69d28339e1a02b9bf79cf86378c558e8a6122a11a2feaa81c5d546aa2bf7f5972cae3233917afd37a51bdfe2fec79d1735ce3854698d114e6bbf3c8b187d4816ebcc6f363a09f3a1cee63e9d786237c12b3516a0026f1d520a0af960d2c164587da7d0700869ed5190c79b904602d8ca277fa9eeb2efce22d4e8a7b994db33ebeaf9177b10eac5f0e3df877f68c75029e833fa61d90af9a84848307156f0f219442888862b08c31040b16e820ca559dcabf2274d2c2f7e43410d8e79e77c38ddde11916969aeebf69dbbe32f92d0ffec766d7fdf6baebcc694525d7dcabc026e0460f6fc0e85f77ed18bdb1947b0c4f88ddc0dafcca3cf2cbb4a20c9d653ad36398e2c57353b84c1c2e34b471b90b6ff6bc8668cd97e75a47ee054de52e91b839288f40977632ea49f7778751f67679840b146c9d87d40f67ec9061d3e18af36ef7fe1cec7446875066b75ffc7bebc39bc50ab096a3c2d31aa522fc8d9a2090de137ee11743c7559bc26b3e9eca523f9feb1eadee0161310300edb47ad48ee118d8bc41156be94711963505b84d7e64e16f5c5aa12eec4ed6eeae9dfa57b32206c33a9a19c58aead983c683b6ece5d97e16628fb010bb61762b6f0a753fd594f51fd07b70c8ebf2e4b087487f25b7783694d06978012929a8c7801f61b6f5f071585e4d4c40e45306c90cf36017ce3e45b470e7f5c8f9a98cff8af4ccd990bf5ad7f420bc220d350c285782e06a1ead184685fd1e39ed29052d9d551c3dd5b310027237ca9d1c044f71fc4b3417e439a5fa28f7aae63332d836f231d8a3c98b68c9d87534862b9782c6ff18245816339a567197fa9c4fc38ae8a269adce8b7c631250b45f9cbd5527e605829d214632bce9cf95b711214435b82a9536ada74846c2851577216719bbc290447b9795d0547cb5d3b523bf927ffb8f2178f91f8cb8d9fba93bd2c8c785181478f9c416a05359a4b869a51f84cb545ff85c2e545535dab835d3b391770c4eb6745132622f6823e411e21cbd9f2ae7aa5f0b1aa5176fdc6336575bc2b28e4338d251ca9edee2071779b9f8a52045159d50a7709a7350114023b8214eddc3eea6319b03624fdf88e79e2393463f0a30706691308abf8e436c324468ef219f844d39000208de3083dfac98d259c4d33d19299bca508caee6720606845079bc60703460e2230cf2a6d8f645263b8b16a4291a5c6e47c28e997fbd75b9201f76a4b39b08712b7542d415de7b1a8ae380c94b7d37d2b0e29afdea06f5a94a8b10d3a2c041600f2b19710f47076b63045015303ee4c70e1c293719d10c0cfa21db0b5866bc8528c699e6784f0c2fcb16433ab53f82fd7bd51cc8c40d917123411be53aa30ee818f402cdd04e70e2e20eddea2f9f91ad82ef3f8cda7d2498d2e2ba7ebb3216fb24f352da9c2338231d112d5fadf5ac06bcbfc66b88c4efc0f98c635ffce0b3029607b96f66835f7660fd59d6156aa91b4bf15350a4c4c1157c697e37e33219453fa784bb1e81eb149a9ddbf9c92de41c6d8413ab34309071194416ca6ad1817d6fc6d8787cf23a43883bcd84dc58f728562011bd3edc58dff5099f0b4ba8be646bc69fe6d8a4c8724c45510fd3559c81fc70dff29d657abc8c15d341dc3cb8f7d8b9bff4ff1de3e981a17856ae296a166661849c798890aa6fe9177f5709562a1c4faff957ee2c64286edef2d709ea2e3c1ff6e058e40dbd954aeb8ef7b124d65f8b2a09575875812cac74e20c410ea901c49c247adef513574cee0e33684dc86bf31f38254af2c9c1d7c587fa82123c83965ec16aecdffe74e5c7b31d6ad0b9dce626da4f51d2d119c499a900ac27ace879329a35f2c732c7a69ce736b379eaca6fa4110757030d931f9399a20c3a03963999c2517839261cf52fb73b0c04932827f4830d4b3f48164045f878ed90496bc62ef9056f1fc39bdb6d3548c55e58a71ab7f3ad936b9d641ab0508c066e909edc8947cbfb505ef2c56bdf378b55f201da054661980a9a16ac204aa1245637ae724e1648600b476d6706ef91675f5b74ff1f07b427c1a4beefa37baea49617f7dc7d371105b4a5c06f1fcca85ba3937e8afc0db7a64c79061b1f884393779f4839f57124c3e209e719ececc8aac07f9af2c3f8b66f6726300be948fc087535d753dccbff1d2787a598cc851917b6d39f5fce776b27b9cecb0bcf74edd2582b09ad72fd3d5de909b5dabdec8b2459c64d2cc02d6f7378a8c21f2e030c6ce244c07639da6a3a24346261a861f2436e352d79f0582508bf67e16c2827f7520046bb4191be6894d1f53e3005265ba59b555229dcbc0a02e61f8a0de7d41e0a9080461cca82eed10108b74b7267d7727c5c9f32f3e712db858b19331c6f917a95832ba677a14cf64d1b9c613094c0f68785386088d44ba29af1ef37ffb4e7be954b0488838ba308f5ae3eeba75be9825da5f36fe9b336bb4bfda11a7e012876efab9b2c2128309b49e15d2630e2581a7de5738918b718d0481a932fad7a534896099f8e66f739c00efc921b259e6ed08bc7f17707eadfedfb53ccc82d2ffaff39cdadc3a56198db7f565aad7a43056aca2a1dba9643f6ddeee2851ea6f524f00a9deb142a7d00fb729f889d20d9fe9baeeddf4a949c8c13d1539d7f9fb75e93ed16338389601cc109c4db97f97da2d4f067b7296c1d3f2d1755d73ffd7c144cfa8d9cdd2d310433c6d9f8285c1bb115f7dc21e5767e73a23df9dc7b1f678c53963504b234feb3049172570afaccc6f4e1ce456ed98cb66908264f3a0ddeefaac4183726f2e3626052e7ea86f1ab449b9cb6f67d0960a9f9cee1692e1b3050ef5a9d4c10ff94c0894755c9a4e22cb8a4638ee2f12f21d23eea9bd2d67c29c97a20ae522b2119490914196bf3ef22bba36d4d631c52ecc23a0106c1efcb05e3e59b1372dc922ce34c983a0b63d3d46654daae89042969461d4e79a91092bec2667f77ff04b106104193c96442a3c019356db1cacdb3e7c560f0872e28fd469cb1bbcdfbe6a235e655780efc15bc867417c082e124a32fbeb2517f53142989668e852ffdcf8d053f81eb5c06c07b274f055801ba57764b013a20ccca93a8c497062586cba12635af9645601e968d85538cd6a41d13611e4862fb07c46f8154afdcbe45ba64d6ff59a45f665cb7f9c765b97555cbc1d6095e4d6a46e5596da92b90956e1e5e28e11afdae0071b5d4ee3e1402ba0929c7200e9d52da23e11fe49bfc22a92f34b082c7aa65f7fcfaa859c71008b89a02f21c8b4a917ab58d5eddb8591b2460ca87ee935764dab22f5d75bb49e090f96103410909d572704315f60a75274cc407747c2a28f559586b7f56da49ea10ecaeb3f2b3c7880115bb0c714f3d19501925219d41ecbd6a9c3c5cc73274b852f4663c37862c9f87aa6d8150facaa1e3b21368a47698f3092dc37c804e7730d4537c6eb6ba51afce6800e45db8c7da7882357f2d1d75323a4725ce82dec6df31079543b856c22ef642d3fbe08c3d0c9afae99007a75c6d05ca0ab9bdd8457cc75e382381427c1f7bdd61d88e78715fb68a5ce427544482ec24a209301ffdb21b3306d395347535dcb43641fe473b868a9a4711ea35753d0ccdc9c4e2f3f5940026a15689a1da9b95b3f726d8763aa1733d1d7749f289578566b588e83c7b69764c0e0c7d81eb141c474fc7a848a2d4cdc71e780aa3bb279ecd85373fae0b75184622b178a7db5523b2bbc744e414654dc598755f8e819679e5b1d9ae0508148fa1f302a1b464121a35f1b8b4a162d00a3878922e7124b709b327f2e2d82bb1d99de0ed377b11a4eb96ef4198ece18b48d9b8edc1834d8fa48f003ad8097ce716ed80e2e9db3fbb18cb386e21eef2e624140b3eab055c76e6d06a284f99dd0f6e4e13a4e2cc66ab227e1e3177fd06bdfe5f3ab3041a71d284d6dcd4fa1dfbfe933c7bde1dc582eeaf2df66171671157fb9513c2d94042efd1808b62d9b484521dfe05b34500d957d2fdb99dd24e0c63ce4a624e954a5f91f832d2a255b312d7b977d502767c3f8f321c7a3641cf920de137853072d8617f3d3e87bf46a52c61629274fa7a81b9c476bb5d8d8aba64ed97ef89f6857ac52931ee5369c9d537f1f85f7732df98eba98280a457897290b6e40f58c295c3410269ddedaea3d909f4d58305d0128af5525c1512bfea08feef750a4a5a4825de1163faad53b00143410e2d7a6c4ea56dc93b6e5cee59abb63f3a6c9752d9198ed372f47699c197d40d7e64cb75bc9ebcdf176843e3ec1fa3f5d46224c3d10ac8c129c9351a9680c21e59596625827bfc372719c27b0b0f1dec3d8d9b1479ddaed94b382ed2f857f8faccbbb5234b2d72ccd4262d30cdc019382a1129fcf5626d088c59bfdc49e238fc8d3e2a9cf55a3fc1270115f3ff30df63e290ab9af7c9805bf6ae43f841b2e087623eba64ba5bd22c8b290fd3c7fd3efb341327bfd6125a38ba31546c64d07bb6326ac46fcdd1e024152fa850c999d58019360396732e6f79ce9410f30d65894dcadf3d344ac24536c4b84308a45a7d1dffbaabad3f508667b861df58eacd3c60d421599a14d56d27005bfafa86fe883c23c7b60c4ee1da1b92c87c605961affb05576efaa3ec1f5e4dffb52eb19d9c17274a0e446be98991e77599d85915cf25ca9c24e0fe106ff107f80dd3aa6c3b56583428782b5d1f88cb93013db27428fb274c55f4947e2122ddd1a661195521e9edb70ddfb05268ec85815250aaca5ecbd4d27110e9e8921c5cee4ab6fd3a5f3706ecae32d1972bf0c6c291bf21c752c882c58e427e9acf564ca2f94708cbd6f0df73170a3d76f5bdd19f976cc7505b9774ac4f11e014269c6b3d069e9e6ac78b599013be3c4c68304891fa1a863eafecc5a47475e907c797baee91289de00668ae1f94860cf4792de97cee86146e8369f7f2133e10cda94ec33b6e8c59910aa4c20c8b4b353b7641d8ed8e41a0f5222cc6e8b7dd3d72f00eb0a6fa26e52242109c970a6ac75f49a6aae6f4b4ea2c72205638be8424a3501dcd0208720dab1da3f213b5144bf0585bd2369b63721af5b3418a8a3ab1a81487c2a8c41904b6406204b05eecff948413e6ec5bc97ec3051a9ef031d5d9f6a1d1e874f6de334e4bb2c6b3468ee605abfde42bda84b64f152fbcb999b3cb53bf5605a28b651f3a0eb307476792e11f5ff43d84c73fc9103ee24cc765144b85532d48ccef6d3a978cea299ec7cda2672967f1d3af6a3e22d33a6fec7e6b361927271271b6de6529882e868c8a629ec433318e76a6c545ad0ce175e1f4d04acf062c26b9df1bcce7f466ff043788f73ee4c39e0d4e0e5de5df6540935e9d214e265927c3bf702035e486bb7c649c5044b9b96a871f615e834b011b3b63e5dd1c291dd9f49ad2b1a248d95cad4cf09bbdfd4196904ab3b2f9a4f854a31e3f1b9b0be1f3a5bed90256c1cd854a90da2b75f54ad99051cffd394bed19968250aaa46fc9a1be1835257bf4cc1d94e85608765f0a6c3a8b38c589d57bc4cd53d6d23623be84221d94370732480c5c0e7ad8d05bb0cc7d3550712c3849abfd085fb2f240c7f8c38e61fba3d00a520d170ebcfe76af9e037f703faa5ecf749d165fb284831b7c91c348511522f345bdbd52735757ebeea9e253c1af0b5d1dedc0ee372d930d4d6e69660ad9a799ad1cae757cd34e830268e30e9c129904d037db7168fc79cec1ac0777a3cf91b8dca34bbee0637b0454feb8c295867376e74480a76863901a0c5a5c70df4cc2f8bd2eb7e258d3ed6132beb58c3b82b58c99e145b80340a15963141049bb3181ef16f075f56066fc858be5091bf9d83995b6f0341215acb72c73342b433a76e0eb8d07f6af74cd25df1c7a2fdceabffe7b3be30d02a0a75eaa02d49cc2eebca3cbd88e8969953a589aa3c1f0067fc8c82213010aa459961066b2060a5f29ab96b0d5a1c871d0a8089003f39506fc844ecf10244f8354bbc446241505452dec14805ec998b75b7496d9d6f07fe992c2e021c09af2f46bf878f08052d0e46ff32f90bcc08614a7e8fd736eda94d8ba12ff3ffb09103d233f81896bb43ee855a64c971a75e9fa29fbbc812d05a06072c8e4280a62e939734f340f6e885eb9fa5ab22467d70bb0a8d1bc4a7cbf0e40d7975d80d8a97673dcbefae89e5199f528b66eca757a5d2cce6ac63ae74c79f24bd7bf0534e96abb4fe4f211afd8f49668ffb062e922fb35749c77bfd51b6a13fac31f3e18e7b0a8d044669b1e8c01bfff909cbcf40bd012594f5a033263b03a8e2812c73bb9ba39080588ef54e8b47a18dba7a9fc183873fbd121679b7305eca293a332960777b075d073a2a272422c35009ba7506ff7b82604bae1a8c25f9f6bb789377eff1aeb3b04c1ec4fe785fa5e9f06268be804be51c566accb3ef009f454d94d99f995611ea7658ffb71f726a84b82b0d79f8bca380a6e4107708da087220a3154ce814626fcb1f8f653f9df8f7eb381272db9c6cd4d881ab85b4fb0609b84673d46aff9a798e9e145e5738f80011c36c9d7d41b17534998c09411beae8d0e17bff7a0d1e45da50392c9ee4b57faef06a9f18a98f164005c5acbbe087335c8672c115f5a3ef02ff173e99a4f53373bdbcba5f5d2ed8c490aca0da0cc7e6b6e404f45e81f88f7d68047af7df93644118f45462bb80d76f55b00988a9088b33b69b14c98ec40ef73c859a2c6c8cf951723432dfc77957906ddbb13ccb2dbe9c7686365cbc2bc0aa52156b336addb269eb11716c450f8d4508fa8c55942bc9aee1dc0d92fd2e3627da1009247fa6ea6cabbab2071a87375c4a4f05e93cc3507c1d91d76315b135fd013781cb271cdf44304ad481765642c1451de2744925d49c0ea77d2aed8a92afcfbff8575d91355cd27d8d3b0e2d2eab78944e9248c824a1deffeb57a6d3daa9217a8244e6856afc88dcefd9d2f749a451a3ba8a6977ac82dbfff46bfba9cae4b0bacbb7849f54f46c40a57a1fee1b9bc40bf57bb132e302e36e1ef5f7652f013f41891cbae0780cd0137ebe873fa60ef116e48b40367e2056fc5eac9d12d15198995f9c2a0398ff52386c06685505359a23bb8cded29326cc9a508457b8097d5d7e42323cdcea200e5df58d504df5b9d36a306b77f1c7a3aaae4dc8db136dadd92d16331d5c976d98d283eb498edebe273da898f343d2633a91af073da400c603b9a968cf34dc8364ea2013d7264c810ce214168d6a4d46deb37e5d6a406f33d0d83b91e7aa425a67c965110728f3100b59202ff8dc3bbe7a286c63358d9b4307836409d3f6c7f44d31d6161072cfcaf0ccfaa72fd026cddafccc2fda206ba4928e1cea386e2b516eea278665d59b0d479430e3115f27f35373422678f3d0105f04b6c1a1883767502ed7fbbca43acc591dfd28680ae7e501b1065fe6808d2fb36adc38df5a55b636ebf9b35c853f235442c14b1c866f590070dbb55fddfe36b3fe951cade087f2711a67c89bd73c8c5ae394bf03e21be5525d2b18780fe6a855bded8d0feeeec74c706607747c54ee0a387cd9caeef1e5d2dfeb9f41173d3174e46b927748357b1cdacc897af55b9d6194c033c54c1ea4170aa40df3109894c865dcbbf5d2edfd9be427dd37224293b767b69cb1f2ee8eed4b077cf81463c0f5b38813672fb6c6787ee20306ddb869910e5a0019673dc8fa6298360dfc7d819c0a22ca5455341448203892d43bc5df907722c9fb5d1aa2f13cdc9d888233b38b8fe96daa52789427400bcb3e15d36eea5c27c453eb84141380e5426e578b8999e3f654031663c42c1da5fcbd6933d074e5bb3e5bf3fda4c7671b03f3f96558d9582d38b4467ace7b4a1c3fcea63c4d5f4373b11545c19e20c7a7a503d3adcc8e8c5e2fb9d6b0fa3d2104431964d7b4b7087a106c603f3eefd03f0ec66a328efa751cb1013d37be0e312b8e2b33feafcc231c72dc224eeb48ce44b26b84487e9bf7a5ecf9b819532bdccef281ab66a43e94a36954bc49c850549f9fd3e68b0ca88cd431807e83b1b7585e953531cb1e4d9619b11a9e95cd6875dd927de9e23a18f0781ccc7e9f64cbbb3810e48cbeeb5fb00f6ab57411fe9e52e3840844e78f13fb169d09e6449c658ba923c5a69bc0971f0f876c17b55fd1a904732c4b2efa829e2c598678cac28483489123f9c6d1d65ffaa088befec99f9a0e3383dcebae4c05ca66ef6c540be8595f4b009a96f682ec97b03b970f2c1818be61aa1f6b9e97616af88c5b4a2e1389e36959f929605f97eee2b40bccd027fcac72be096bbe079156a03e89ac526fc4c933fdda20eda1c15fd4824e09070b0f22b13f75cf074d9785fa2bd59e73f3cd36649dcf7dc764eddd69bfc8d36b2b9acd95f85e177b17a3e08e1c983a798364a7aa055a4fdf254ac5b1a919c1b85abb92e3835d50c78bcf9e9269dfeb495dfc2bd866ed761527c3fa879bd1a1c9b36c47bf5f45bfad93876b209184dc9e685df937601f6ae8df6a1bfcdcccfd2c6d5f1775cf5729c5748333afb3f214a2f7aa721b65b02674f3c1e8eeb3a4ec67a23ef0dd48344b0dca26b943498f83fcf10877fd3bf44df1860a869ba737cc5b282ace12be8cfbcfb9682d6790261fb99dd3ef6044d680b6b12f1a51752fc2b1c898ee698965c8e148f30dd75901b29c468ef31126900a2b548fcb622fd4c332a0f3241962fdec93473699362feece33515b7d3d13bf696a41207d0ea618dc4c3be924fab2f0004b4191bb890c448e70a8d4606256b802a0571a1cae7e724186dcaaf8211629925a960154284f4165b37ab86785dee92e50f244ace4599460cdeff51b15bfdf495e5f528377084adb979b11904866c5d891990a2a64c5b2e5699febc3e34a9f6e529d9f3330e0b818cb0ce0bbc42f6d91d387ce0d005d01e107d4b722e960fba49c0157fae753f78b00f44da8a20d83b1f4fd605d5f2727ab0f6309c8be29defc188b97fca79a6ff42c9696a0de54f0a03165a54ec24e43c0eeb485fa392bd9ea6361a69e90a3ff01cd68d7be16fcfc5216ce2b7321a4dd24dedd4276b26a238a724edd092f5c0694a686e645d53ba68b0c00dd883702b7648b5e147995bf3a9b1a25e44fa73cc3a2791966c2bffe08f584b1bd34f686a27848d6791f68dd1a453800fdbffe5c8acacdeb2a349c78e91e1130ceb2b0064f3ebb359a9e1d595a7bc8c7849e0682f5d3e8c5070be0b3fc35c48924c7fe7afbc051caa256131e1e6249a090246751d0a81ddeff2744a56745ac8abce2ed51f6a56692ed69517be38fae793e57648be68c6af96abe9d96b70a9f1a7b738e31c65a6db84a9f126a68bb8110ee41c05e4fff16dd725d14836ea966b54f0e3f86832817da74afb9d49ffc41f07caab881bb5b789a343a29e4dd9c5d35229c2e603dd4c7b7e76bc6f5801a912a98648ca702738f61cfd5691431dc46f5155f2de4daf5c308a1597abc6153a7db68a81ae7abda5ff36d5685a7171beef4c7939ee541dc1a1023260b181197cdcc512de774c61f68712d9afd675612494ccf585a0da12c20dae910d650fcacf5dfc9051392b6f9b554f7ccec27d6f44449ce08a877fdec3b6cd7a70ab25d41db2d30f6dab0f84c9688afc9d708f0bb3e443b7bc473200217620f051539f06f4d8abd6e7d842a9854437cc0d7b8602e7ed50a078344dfa460b9993f760867e2a5bd71e2e73adf5ecdabfe0025500f38735d7d57e45a4883f96c7a00f3ffd533be3a33b852a5c7a9da7361ee1c4a5a8bc81d551d6e2df35add2b1254a3511bce9ba50d7e8b7000b1a032e0bde60980f82e34d704c845be7aa62380e2e68688e659613076d5cc69d787108ad6a7333a6168c4fb85a7d974813f740790a044d82cd29a2638e984f78bb65f20f200e050eb8fe53bbaecd0b8e59a4cabbbdb944b60a9caec96aece85075d3fcc7e4bf1103867651e2c99d1594b3c084a945c0ad8338763de72c780dd61fe6c6ec5c9aa20e01899a75181f84cf11920ee656a2807eb6c84a351ea85273f2c4ccf9289be3b18d8d3fd0618a7475ad602c3538ba228e439666586e85a26ccbbf1c1ee61612621ae81cd556e77c5e8c01c90a4cf97375e0f5eb4041aafa87fc0853133bcbfe52e33008c91131b75db466f0663e966a687e0e2df43851be56f7ad9a7caa22abdd4583f8c7d25ae1ac2aa3d559265611e8cfe047e8c12012eefa49db764e005b881963c770ef5f79a882bbc66e34ac2cfa5b501c27a9d19b5b8d9c3f4c00fcb95a0d4915f2f77d55d381cc9b57ca4b7eb70f5763e96180e76c6528a3ff873185d2002491a82d3fdf74babaaf301ecf475b38adbf53d7c3c43da4184929fdc9c2884660f83a2d0e57593983724f22b624518ac457f3787caf70f8970e49729a9f796a56f79c11e60b26d27a040ca51493336d7eda32fbd5a583936d3b7d9af14d36f30857c3b7e667504e6000e62af35898bd94af1af2dc7fe3490a23efb778188de361c62dec1d409d2911e4d676545c5d669b1837a4aa558e5dbf58d5e844d7126b631ebfcbb1f6cb873de81df95625fb9060b40b9dffab3c581e7d184243db49fec3d17d53cc317ecd9428de8e57a93af34414223df19817fe79c2fc500d492c6b4f9240b926fb7402e33cb2080070fc54b0c4394826f653af9ecd1752bb7467eb85d888f27f2c9dedbe501416ae52ff4ef1fea060728cd0b7c022e7835e268adf2557457d6e04d2f9985f8b37d334f4b2a6a10329166ac3cd5115f564a769fd4c21d59e81af82ba3006a5ab8223a23bbe3dfbd352d4436810412ee538f4bf969ec486ee5e28c0db4d84cfb72e0391a366514c9e75da0ffeff28c036a503985ca740c87d8c6c61ab2cc31dfa8fcf45e62299c606ad1c6e3afc45a41d9f9207ecab383fae1ab0487f8f0d7df4076eb0ce05853028d364a3841c3db1c8aa820f635e148c2951800657cd46977764fca45fa57d86e4d6db3d8c3efeafc1acb68922efdfe9fdaf12f283cb4d3a6662fb9feac16bde5ed86acc5e5e927255721cb7dc0e5ac610847986d26c3212fc5847e205db870f80dcb27f6e30ea51935923fe896b9443d73036dceb75b543305c5e69d21564aac5a2e740b7526000fe5bbcb8915280600c0579b7f6d132ea89e7ffe0cec348d64bcbc1a5128ce7fd724369b7270ad3acb1bf60b73696c449ec2ae738312894023a6a2e4291dfd6747a45823c1787f924ec608663661b32d000eb4f34de5bacf48dd5b3216f9d93461e82c58b7197664384c230ab8828b4fe9b9d4ca2280d2233871e2b22862428a5ac0858fbb2228b898e6cda20aa49279bc877bf7b4f0be0b30b65b0afc058c9a456621c3ad9af87c096846ac39adb66fe8f9959f63e10f841a6d0840cf1f9ec0638befeab99f3a962805894f026da0761e03321dcf4a78939a875f6c034e02f4c0604823f920a58d715f2376f2fd989f559c346b721581f41ab31e02c43799778171f5ab3c91891e89171fd30f87224ae8ec09cd75f46adb9c303076faa91b1ea53b04c1501bae3b47bb0e691b2244797127bc4dd27fe6237cee08fae50d07bdb8a257af90c2b9c3ef7c1f1195760975031bd3610a53f0c7ca479a9d47f764ae56ec27dd08bd022ebc406b9d6df5188c81d1db03444a6a56623ea332beb81f8ffff100316be0606f38922798bf680dfd1afae6c180f9eb788654d2b58ff1c9f0a3295420c4107ddbbd5185cce6190488547e4efa0913d8dda95f4f89250ba38973b49700b00fbc75e8963d44362dd41bd305c9932f9e8cb6da1ed6ac7ff3f22cc6951e2e85f439f08a08cfce52c917e139adf5271e41c96b5b2e067dd2323e89008d89a94902d1128fb256a929734d5d827f9b49e2e891fbb55095ca9c7c9f001d50f71b71701c5d1711b443d45a71720c8ab0679200ebbb165d812e213d8e775066bb86f22ac65399f40d91728969730ea14e5ed1bad163bd09f9b946aae4c719632175be86aa7d5973f9044011d405f881b440ba047a2c17b6f41d070818f16309f4e50997cc1911c312ea1cae194c8a258c36d7161880e1eac08c158816264dd9de3db12f008d131cc016099fb8034e24a94299a1bc29db1185d36c20a8feddda6be8b04b8b6e8a405c08fc3325bb86cfeb30b8188e6ea45284d6615f5559fa3040318add8d8489b60b1dacf5fa9c066687440bae1986ac767ffe7a3f5c22ee4b3ecf53546fe31b0a022677501529e0729cba482b7498b0055a1c8f233da0e1bf4ac7d06646a4a0aa1f055f829554fd3a28e50aa9f0a5850fd71856280b92dbf45337ab3a37047204f3ca973b8838cfbd10d2d6c107f507b7adf31d1940533f82b3090486c4a716973267689b0b2e627220b7a4a3308a51cc4ca698af38fb2bd387eec522f2134fa46eff33d31a232b14cf49a5f5be5ec2c9a245e110293c6ecef5a1fdc6914c824eeecb9178d545ae3178f6df8ffee7ecfa81988b67108e04434bc369e9da9b85458d6d9e73ad70bba2876bdb36b1ff1fd47bdfcabec0a63ff7222314327cc83d56fd072f8a3fc6763f3b064124640b107f4b57b81dad7678bc4c506b9e6f32f8f4119ee611739dc7e87fd35c4550d33fc638160b2d43af9a63981fc45922894f80f25be80d13b78d7160c588c45fdd0500b5fc7126a3ce70b4ad4b9c7a24b3bf19584cc332697ac9e8614a4550c6a00050d2ae920c6b73c1dcf1e271efdaf72a8f520c6eeaf73216852fa110feb981f9802e38658b09f388b4c62e6e626f6e29bec04de1e1ff634af85bb39158a39c7f5d99a2939c0795f6c6aab78d901de809230449f568a76ee2d380ef48104f05c63644e06b50f0dc25c4f1986b3491e379029184a95c4cc46cdd9beeac67667fa7a9a004f66e7eb759e355b6daf8eb73f040fbf25623483acbb86ac6292547cbba45e7640da65ab86e5a88bc3eb396ee2e34d53f264989fa2228472de5f3c2e21c8e51175abb1d8ba2097ffeedef4bb2e2f1916830018ffba86e3229251aafcb85258dd5b20a5ceb1afb7a4dbae48e85233c9729a83d1586b896242c989928d4b046af433afc5696a9580d76dbd20db7416926ddb0c3783c70150312074e34d69b14a803ae388c3b2d227bfc4617599837bf15f783b441b2020cc3318b7779671b1da7be6eeeec5a186f2204a2aa84e242ebe08d787e61560ac1ca85eb82cd1ee1859d5f60a7e1077c0a92371d8725912a005aae900378a83a3e38e714d0254aedddd6889fe4d173e62dc3de445f55cc862a9eebe88a784ef9e9528060c2cd141430d3b5b57a39823914a3842529337b0c557e628113f2cd3c4b810d21e6c2c36ddac5980314dc629022e0d72beb4dceb6818e51c126af8b055bbbb1ed1d1b839ba1342bab61b763017acff9965977d3b53802b8586b8f4bfe27e39db218081efea092f4a54cc7da9dbd148aa303a39fd35d0073d8121adcabe116b8f542de48ee0bcfd3366eca69378a7bd23105ba7a1e1a6d72f08c8cb0b040b5a073da8b410ebc1e39589a39bcf8823c40ee5c8cb2b75f5e303f1d61d52af43bc60a9b4eeef7a972de2cc6dc49f6194fcebf2a37428b663e35b7693aa325ee27671b2990f861328888029a0b0fb88d50b22730ecd3030306dafd0c32c108940092be0e7bd5ab707e03d99e2645f992311cf9d63b8d7c9a2fdfe58ffd42825991d604b1cdb63a2e7f5ff8ce4ea4873a3e7bde7ebb6791eec832cd0f57984a32b4581658ac079c8c2a7a8327e70e2845cf302978f18d1b5f74cd5b1dc55acc7d33aed01891bf40e90b4ea6fa511a72feb3833bccef96dec7fec93d34f6a84a32b83b93b59984650bdf21bbc2771f22e32ac61ef88201c3ee4bd13e882c0903672208a432143447197efa075ffb08b16c1b792b204b7ff96f1c787938de8ef83c6e1a54bbe8cb9c2042cd2356eb84f5646f55d7c3db3dc887f2563b99550a036decdf60f83da3bf79d13ea868bef938e4e3a9dfa1a552e7121b63230170b7ebcceeaf119ce2edade9fac08c0276f7e85c019f2c3f1cd367421ab92627c0708154041506489200e462691967ad97d0ff092a78364fe4ac362a4661701e0d7ee10078a19b6b0af2604b398d175511726e565ada5ff7904d6218ef0343ad026265778e0e2191e703e4ceb8e4db2500edc565556d8daa5442b74d7c56e3906ecaccf79deea1e48bed3ef1faefd80781879e6b7817e571755b57da762fcfbb027a852441048e77c933337cacc10fa95f51d47558720</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年5月记事</title>
<link href="https://blog.cancin.cn/post/5038508d.html"/>
<id>https://blog.cancin.cn/post/5038508d.html</id>
<published>2024-05-01T01:19:55.000Z</published>
<updated>2024-09-22T04:39:39.391Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="8fdf0d1f7ede55ec037230d41467700cb69a649cf458cc2bd368b8fe81ef1f24">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc1412b95a57e26d68169c6dcb0c990ebd5a882c799c99ea4a01810568fd18bd6555cb519a84a520e0fa2c3e54e842c2a0e79dbdd5eb34c11906d3d40ba32c84ad70825d0e4c6a7a8c730bda1e9876c09a1ffca18efb056d7a5d06a505fa8d56ff7bd815e9c4fbc62627ea0dd970c2a683a0eb38b1ec36bba3c4b6de7809efb3ff288b4a76e667e8f705bf2e153a45a0c14c1e811a5fa3d688b615cf3ca1f311a85ec917231ae8241250726369356d56282cbb572129c9933f8bd431b63962cb6ff6a4c956f9ef3b67d6e42c772b83021da9d55114c504218914d38da205d3cfecef1343b8aa17f6c3b6a1f0ef7181ff8f74f234ff69be9542b1675dba8c363e49ef63031f4c39084f74de517f138d627863f49883e94dfcbc68abad5919b781ad556fc2b361ddadb060ab530ff96e43952f1dea2ffc40a2dee3bbce73bea082220c6b3362c48bf5391ad11fd74d15d6b29e2ae30a86f1f555b92a53f64151abba821c30bc95ddbc756455eca2e789556b7248acbb5becb106324f777c250c5c0e3aa115b420934517e9089efa0095cdccfb28dfb2a0714913f50522d08837c4710235d335a16803f454032544ef613127ba7abaf028b734e9687211b0663a16532657bb2c5556c19a19f516bfa6c0f93580084dcfe5e4d45feb4a2626ad894848b1440820b18026fc568cea3d2a23c43b28939232c1ccec123f33bd52eba232c1024853e3786e102b202c8623da97c22d67a2d3c9dcc7276ad2916ab8ab131860cfe7a8ab61ac62a7ee38591652fdface3fee0679117f5a177ee3716d8fc907fddc5b9bfe719923a60539c3ac71ff42b6df05b0f278acd43f55c9efe6e06252029117a151fc9a54d74670eb9de8680630c487bc198a699a2f433918d3490b7375f089403fda35e4b2d751c357663909792eb31f0a71dfe59a9e14be6722ef95997f52a69e91ac7a1307709e6b3aa49592383abb7bb5fd8e5a4a529ef54e8190d550ac0a531cf0bb1963813e4cca4ec71ea475e7f39817f03089eeb4b86c071ab63b5193b9ac5499f3da30693618a38f223ad5393f1b4cce060914250bbac6e4130e08a25c044cafeea8b9ecb1d770fe5bf3efa1fdc7125e18239dece59a3de50a9fdeca2fe2ed81b6ec25868af04bcb1d839588dabb919fe9af88b3cbaffd72029fcd2180d9f1937065dba08723bc4a80e5af47713ae5da00a4b7bf7b8a0ddd814e6837ffb0bb95273ceba60ccbbc12a1602c7160a88e02def75424fca9681ab0ee0b9014ff6b75687cd54274be526c908846b00ae64c0509c15cde83c34b97a0a4d517d26a2335769a40e0031690c0ee25904b4baeacfcdb93a482779c923bc5c0740d9359bff63a02916001617caa57306259d69f59e103234822568a688ec2e04fdb05e8e9e63a0e02be00e18b644e74f0851aef6c229fc07d5a7926d9944299e067fd22a1e4943be2a542e9dbd418d8f57965f2d23dd4a24de1399a3509609fba64b124ea046038f87119caf05f6b8fecea1fe27dd00668f8e245d0e618eaf9a6655a48ca522dbd0d94e6434240368fdf06f965660d444a513158a8338a1f6a5dd59d776166164a414561ad3fa3b8bbed5bcdc2ff3a72f257e9100c7568491540ceb65e4edff11448b263f52db1cdf91ea3db6420acaa16794750f65dc90616541025904265c865cd060ac098b8a4dafe9ab22c63a651ae5e5c3dd7359b8455cf70257786d21e3943a654b15ab1563840c7e30c2e615dc95825e17063a649fcdf5344f4c712371d861ae60787d96828a0e5af73a54225198bf021fe4e5d19feecfa26ca29b46a5bf49a004e462a96ccfff8e629e8c069b5fd438b92e3df45405ec7672582231dfedffcf939e6c1a7757f403e3a24f3cc0ba621416f5f4f6357aa3c1f5ef89de62864fff9e63c7eb38fa45a37606de6d436583b605ad5e3cad1b81a5418b3bc50f6ff5f61c03362391f18dcebdeadef7c85b9a85189ad19e7d74ccb02d7cf49eb1a2809723c84f062e2ddb83f1bd63539b201c2bb0d8e39fdad44a599eac91f89933eee5751fd47889964a57691c3ee9087f5979d21d20ca47380665c0bd226bc6d69b58efcfec4d2adbe77613379751d63717c5d91d6497aeff4c3f70a9343cf1a39f7fbe338065578873d071538d0bab4360c2368b4bee66c4b7bc00f390dd0afecd04c3f12bd18f317c38a05b8752f88bf31f044931c4491d1500e0993bc28606f8a4fc7cec97b01413d6303cc38a877e4cdcfb2ff181f025b13957e1eba570791566322e65f1abf74a27335a0ddcbe120067ac5bb7be8b5c44427d7741a2542f0f1b3fc12f5a5d831c5f770da84926d2da0efb52e68596e26e63ea76837762c8e84d295c5c26edf03fc95ab5304eec6f892b9b2034e1b44ce304e0cc1a7a4be3265d166f0805ac3deb857f91863c158f4dcfdbe5e5bc5f1e565a1f1d12d5f57f529e44868bd80c40de66a702aeb6b38057d091972b8a213a008b02a174bffa5faa0ab6b4d343744e7ca92b8ff39dbabe73fbf007be2096b82fe3e123777b0ce3640068784919f40fcfb6434f82e534808932c36f1766b1f958e1b42e278ec83470b0d7f79e71fa80d2db60828b9f8594408c78ce945d948f1abd1fd095f11454bb3e3c4ff8309f607018b5b143cb12bbd4e915e2d84ac808e3ebe80de1f7aa1c94a1d85f2ea5fe144f357411e791071accef8819c3a0e6173337d0c28498e5603485921d3cbaff474bf2ad39ddbdef78b6ca45457f76e987e7c0319aadcfcf7d8620d2d8af9891a882713f94040720c54a62b84c04f20253ac7f061bfdc385b49c373576e175d23d5d305cea4461f1cf10be118e3df84e4048f3a105642322144052981cd940a80b3f9752bbf35583de615979467cec8122d0cdc09420de6252c89dd77b88dee7be4c3e015b7c3094e896c81855a46f388788078cac07473b7baff3090b865c623adceabbdd86a37ec5cdda0b1508571ba848b136af998b342c1d6ab0c60ae4564b18f32a56f20e33fb750ded9656ff701c201ddbe4ca560bd07658eb4a2151046e112bef61860db307b877395dd86669594527e1e35fa0ff55a578c66007810a1e1109923c0130444fb61edf93fdf173b34acc72337fefb54b3f19a05b28b71f546a7464167f78f9eea97761ed32d517a4209070a5ffa5de61c689418cf922ac53fe2bbd4354e60a1d5b371e6926dc3bb0c73f3eee9e8ae0d332252fab7729d12ed434460b2a98aa0ca2e0e0f31f1283bc058c783d51ddf4b6df1a19ef1cf8d716423b349d454d87a67db778cac7f06a37eecf20b3ea6fce4fd5b229e68d288a571033545c0ad28534ee70bc6bfb74cd055446522f34266f63cb23b847f28382bd3945046fd578365c4205dbacc89c27649a7d6b72e179f27943ec24cb34bc1c7f2c5ed62256bae3e9a06d6626a251382c40fe0ceddef8ef042879b524fdccd4fdad68a397c5fe3c931ede79c9d9978b50120128830769c1d062f3b9f326258b32f0c74079a66948e28c29b8ad439b585ae5305e2bcea2f64422ad2dcaefe6bdc386f590f9adca3ae075b7f3c763ed05633937de25464b866c7e4111e8f4c77362e92269bc63301944df8cc8777906a20ff5a0df9fab3fa54861ce54bc4d48aafc6906700616ca364e658b24d138f3b7f42e8c0113888d111d0060d4f7677e14d7dce6c9eff959b8c24ea184e8e36a0ee5582fc6a1591d1976185281c54990c334c51aebe070c40125aca3472f1ba564df43a678939262eb42de54a7a90bd30c08310a4fe1db8fcbe4edba2d69aa2bfbb4b79f0ffb9cb1de0743a0f890094781933f8f68ef98f7b426d069db64407b2d42657a0c030e9d62c1e6ae781e5e760498a1711658801da884935a26e1101b7213326d2b64aefa38ab0d269a2ef37a3ac3055758c2296f95cb3d8d168155784485ae39bf529d2d9e6d06343af57800beaea423ba15239e52ce4660f1902d4f79e8e529fe6c7754b30fd6aab35d8b398da217a48492a4f5477a684d82466a6273d694a7563135dc770e2431af64f948759b346ecad8b6d822cd4022af5bfb7a69cd507ba2e5f8766629e29139b2cbb9ab367e3e9a0f00fb1a40bea468580bd5a5f4ce155607db99e799d6bebe1dfe189da4271781c0642fef1484723073c9bc6755de18e2709be6bbdcf58758aa11f8139c12cf847a0a6f6149051fbbf88e5d45195ff2f5d87f402a6e0673c8fb5729bcc9f65542711743fe41e936df721880bd98764468de1d22238e447612a7686bb94dbc95f2d2df54b0673f92eb5dbc6addd8c1d8ac03a72cddc0bb771a0a3fe639fe98966b3bd23a61674fc0fac90800f7f4101f640aa5eb7008ce900d5e4bb339202acf9c679d0eee897e69c282d98ae8ee06349ba746c2e56e7023cb7c3e804c6f97cb20f31952160243f976183b9d69086b5360dd32480185c1ea272af83ee3443408646c3adf8ecf62cdde19abdba87d7c8f0825dbb99222b80f39f72f4805c58609bfbd76e50985933d5c209ab614f33f8c1e98c0492d6a76af9b6f65484f794995fe74650cbb92bed88b66b74aff113360289f63a43bd97dd6456822ae735116eec240abaaa8cdcb1d367146a3b817a2028237e111d26db24b0c1089def0fd38fc9ca9bfa1a03a8bb92c1385be35192a97404b933a853cc378103c8f3cdb41cbfd3a2b279f03a34d75a1e45636d4653c5f727087e853ff2ccfd3956d434b873f5ca84604cab29097a576d76ad3e59df01b6e98c3eff3221f728fd79aa716c68262232e6cce1f3d49bae704968a3675275bb5ac85ebe12023ddb36e5bdd6b28529bb0751c61873816e369dde69651f527413b7e2c14dcc9f61af1e60be86cdb1890e577362dae2198b2b388ff5d247b242d23194f6732d6f05c162489b0c76c001d10194fcb95a7e4f995036ced05794cbedc698502409902b4df0c0eeb40f3da10a277cb8a4111c9d98d66208ade4cc7aa1e62edd90c04087d63ecdc1f74fec18638ce9c5c9e1a02e5a01e0631dba48d27a33b6f823c8337cb1f341b10568e298fbf5db9c14d1b0ca95b0cfee285e97fea68b56e554d1d918b405928b6c8f665a11c515a834d7554b3d4c07044d6f89e32eb8085c56fca9cc73362d7e0e221f662fe9900e58a3337d8e24cf4488ceac26eb30fbbc0046c3a7f35fe3d75dd024ac731d643a5a60b4fd33bcbf5a4dae335d2b1a41015453bda3d451824b561e37d43391da6c1d4fcdd5b1f38a320142789d87877eb9a393c83ce33bb7d717055e1b88360d0fb16a76029504af8ba270b8ad60ceef90854bf82cb120bad89f32d105992f0f6dadcda414efcde705a1c211ef55ef6d9d2d1960f37fafe0019410bc5b3ee544951d27bdce4754237a2070be24b5406875527d673471238a2583010dd81072499871efb4a4f2656c51451af717ca9c70b15d4d850c77a4c5ef09010e9d2f4041ad2abb005bba3af9e5a7f04c6eccfa7f19ddf5d704c63e4cb31e64eef54041f9e45b372eaac0483b782e4e7d70606f7e577321d010874c8e2daf1a43441b28b3954fb9fba047f426252410792c92d2693f5827e8fb2e1eb865c61920008ab433260a040febebd409ab0cfd0408801eebe94854edee27aa02e867f76f6ef646255bb3fd51bdaff9aa7de3a9a8e80f8dfe6318416a0d8fb7e8046c92838f59f96822fc769010870bf91747ea1bc58cdb502fab6728c258bf23d093275c29fa2ddace93efbd093533572350dc3276f5e30cbd5c3f65178a756873642e5695a3789146925333f851235658ff1e36da846fd51d308ff099bc3c5e5e2f7aa0237b4a4b4f9410950e488570a34bd0237c975f3929aaac0d3b3362cb7575455363eca9128d2ca7c264767d353b973ea59b49484049fabf4ba77947264c7abc0a98dc62500ca393bee5452cf95e5ded027ba54f09678e450567611a9cd5fffa3eb43b99dfa4db803aca14209aa066cc652cc335658851b9164262da615d4ac2a9e34f72ea1cddce571ce09d97fa0bd6facbb7babc0250da9635e45b3df96141e2c2ae4b5690f5e35cf1a21e7230c1e5869df72070c12449d29d2b2b6f5c0c3d9050c0797a94e95fa48341a12c92b9acf5807070c61dd8375f623286821cca47d57204fdea9766b661cb92bd021f936e2071351d122f954b5d996204c119d4699baf0f99a6134f04c585645ac8956f936442dd968aa31fe9c8603d931aeb4a2898d8165ed86452f2b24e172f9922b087222a006bc7a04e16e948040f8516aa033881225a8420c0885f9dbcaa9f1529d5e99b7fa7b533bddf8224e34153fbeb8c96a74bc2833891b07ea4eb03dc94f40315d07979a7b8144b7edb8e1f8e0765f99bc2400fc38099a9321e80788b0d8484246e3058ad606de6b6b83d20563c9dabb2d7e1a99907359268ffb6a5681bd9d272a01319b5ac4ab1c9e0731fc372b53ca86bc3f9b96c45297bb3f537cb32132e5bef129e1f4221d170717d076b137f0999e529068f35d647f333f21892e895f0a53b20e6cce31fe353d9aca2ae6993e8effdc7ede8162812d3ad6ae9bc92be1406c362a0a8f0b70222fda64af2e297aa12706429666d25ea5d4e666de28a60ed328e2250b10dd618c254887fe788edd886a412c3a6db0b5681d70b5fc5c74000bebdab932ea315e18e7538115d7d167eecfe77fbed6f24a19828692bee56c59ce950803357e082d9f92c3f898c76fe3c73519be030d92ca35bba4969bd9366734f5d9509552490c9275e7d660ffdd0b3015bd86249f84599025b6f343d7ae210abb2c18b033454d9bddf0d0c4986f0b3643153b5f47f8dd494f4b355d9b6e87912116db73eebefe5609e5ba25ce51fa277e79c5d42144a161d26c51390bf7108d7ec7716a5fe80464e182b86fe3173db26faf39045a4efe72ddb932caf86aaf58b839f5fc848b546674bbda1697ab233e196a02638c77e362c8b6f4d8e1eab79ceff82b7b35e2c2d2eef3a79de82c78cb838b7e516f78ece6136cb03c14f21f8a8b43f3ef462a45ba77c0ec4548289b21f77a3d6a5e26364d90c82fba2a7f42945533afbaaaa09c4c1fc94b156e24a72a332d80e2d0a2cd0d0dd8355ecaad0d7fe3df6c560e2e52dfececc080d37bc7969ba245bdd874be2a9f8f74b4875a1432b83a81a7305cc9235e732dd6bcf8a5c3ba56c721981f2772e58b3d5b9929628731bc0cccc32eaaf2f2ea7282d140e93228339b44073b08762731683580d56572c0faf70650fe18f8d4171d58b5e74610d296ada87e1bce20832d1647effd3f804eb5023d5d9eed3f29e29874e71e3af2e7b45bf0707477d81254410c70372c61cc7d2e13105087748d4f20aee02c91b848f9ea1f34a7a6484836b24066f95ad29692291c98697198d69d49f62d33273f6f27ae34e1b8d4c830279f8af17b36e66f952d5424f280154cd0cab6a76ef13ba274e4eda6afec78d2b97c5adc09423cc639381fd0d3006294db2e75b699ca2d805f245c9e225970e547a9bb6443da2be6665783f5c9a88b46a52ac0ab6e2b6323d9575b00b6ec8a733fb2749a283356ee2f5026d1202b3f839b2cf40d80284550101211d2997fa04eea8d3217d062642f2e647ed966696d5424352eba2d860250d241db1d177c88310e27b608e4773fad862b1c78a103244ae7961e7ddff426a1351eef5e4dd443cd5a98474009e81911b8ac4a62900c671fd72bc3f581408db68000207d9488717e8ae72ee9b15484fc0ed25c4fda27d064a2b5d16fca1f3a223acedbd648b0059138b79fa15f8557b0997476a20bbbcf00b0967da683f82c5d431223e4f8baa347b78776c915d9352e4aed4f714f0ad1cc59c30c729bae7267527875632655f44060874c5e6e3fc58e5e6373737d61d44f56ee6f5a999b625ad6ef2e2ed28ad69aa2c97a513940dceb45280d6f47d30f29c0aeba1799b442f658edd880226c66f350fc64242178bc0bcc758d12bd8eeb22e489669259fde1a13f7256d674d24b0600b32ef7e9784527613f0e0ed81a395dca9b1f70733d1f7b5c72bfe0f9058d2a0c1ea75dad3a007e85fee787a666843767fbf0ad9a48824741ae2dc88e93a4835c0ee955b3907c7b91097f56d2d19f913c66fde8326fbc66760cc6c92508d01365e58de1085d2f4bb44674657a37a9bb6f0de6f245200aa27757bff343f77ecd3a605296774fa151052305333d673110728f2877ebd84fee3815c4d40c54aadd7d0f2bc9a9d1055ffbdbadbc580fbe2d3a943d1df3809fe4ce0fb468f1ab8f432a692d53466fa4530b3fa75d54f1853e20e29d67d584da4451a34f44001c2e9288d424b18eb261af2dd6e57555e199424d3b6f66bca1c53551b4cbd0525f667238fab1720b125ef6f826970dc9fb50c463bfce3b8ef459c9df6bb50c3200be6220e5cf07ae5e32d967caec0b04bb96a6df5085ff8c6d520a31689a0fade17216bcccb4e0c3d981a7076e76ae28ac397aad7488083cc5c4f2324c2cac48a18f3c52f8b805a0073a4b5050f1a043ff9c0d821da58eea61142db85091059757bbec0fe8dfbd63de7448345a4d10a73e243ed3d8d0411ad5ba0213028c50f57fa770bcd9b7edfee3a0dbb0877b027cea7564a7ae19fddb823c7d22e672b912b4537af96da845ffb3865c92665c717a354a88bfc9937c0e43bc3e30a710b68493950742444fff7660d1f5857b41c25a259afa4a937758cd711cf22566d110ce860e89149abad78a99f4f934734900f81479adffa65cb818d0f874ca06803f2e856d7d65a4587f224b6aa023573c19030e4346a93bc738eac6c41d84d0ce37e9798deab430cdb0e1029bccb34d3b7015a2b83a02413674764bd8dae845951fa2d8eeb49bdb6132c4f25f5a4bea255386b1dbc7629c695247e2c64546b705ca7e3910c03c6a30b45eafcde9fccfb785c6351b9cf266a9612c3343c6496d7e8993252ed5929fa50a20df87b24417e021dbce2306f6be1882738a1b1ae621c08d3b0161959e16c24cb6a56a4ca5480f572e19c133304c0bf6bb9be670dc80bb8aa95a3c9ed48c23e3295090e5446cc4bc0d73cd033741461ec648198cd3f4f85a08c16c41148bc665e0d46d8b114382e79d83598cca59954baccd5371bc37e7dd66a52fa77bb59a3ad89d2a09f53155d580dc624ab22ddbaade91fa646b649212bf5aaf22ac5569113c18f10013ec8320456311ef8933ff0747c0b6de4771e0b503993d2d895af77d839c40bd446d1f3258b322a7558cbfec79b47f6ee2689adccf95a4c30b331f85c7933b8e992a298f443cc14a1abae40345a0c8f6b16d116d72c1f849c9f206839ecf6a6cabebce3778740efe24488739778b08e1efa3dbf78756bfe903626fb662c0c42282e898ef43a69b5d53b2174fc783543e98e1db41b48be1791572df4309dc2edab679782840dfc9b9dc758ac5bfc04cdf697a0821a7c8b59a5daaefc7424507d5852cdc5be6f791a017536749e399711c176f99b65477627606f0510290f8ad26f5472f48245de936d7123dd1c691b811298b97cdee0ac20ce53e34283839c7a8066caea6d4c7aae1b1aeeb1907fbb3343fe327f545d4bc17324169643dacbcce41d0cd8af99ad9d25b9e24f6cf51a8ae0e32d01ae0c32444cf8a539c1a7e8fa59f1b438fdd05de528e5f1b0170d53c1965fa4c91eb0af53f807184d88b4130ecfc410c072c3789ba709a5d28d3d716e5b105ce9d8b7b55fb044dd6860e33878e6649e9601336cf727cb38f9882b4b7b1801c654e644e3d34b92588c3259e94242da3ea4ac80c2fdc634592d8a456c64093c203513f2afc2a055567fb1b3d332b34839770ba88849ff37e400a27545e3df5a6acbd672b72de02211f70a4be1aaf8e1f324620f827ac419fbf3dc9638ec763619d4496667b2794037fdde15f73a8188ac4c0872384de6b1ef1b79015e380383db670a6320c86ea7f4ab4d8c467cd42851e2cd48974938a61885892010684688d58972f8808d46a1733be7a878bded203df8c61884f1775dfb46ae9e8a5030d7f8b5cf3b924d3f4c3a9ba026d9f3e4903b94519d3d991b52ea2bd15ee39ea1ac90f945c5801d385284799718068502a270493ee4da1100722da86ee76d0907321f6155b9ac9d635ef8dc6764f6e1e8d5391d6c57ecff0953d277a0ea49529df26482f359881687583427de1a5f3791f7820cbf3481c96f39fa3bda04e25e5cfe6a4b983b52c62cee26c75523bbd17df13430801a60d7e4c55c26c2dafdb39b41ea4ce78c8b7423adbf22cbd6631015f4215cda84bc691e72983fdb4c96c2310c6cc4b3f8a2d36e3505d4cd3ec9124fa93982ab0399b64a801afa3cff24a94cc36cebe5bec0846b3768d2deff625506315433cfa930f1af835f5fe19d13c08a617b11513885508f9ec585abccc40a6f75147d1eab9dc22e98fe59bf20b7340f9392887caec84e9b0beb69da69af2f008dad8a22e40a620d5af5dc4899ed01981228678c4e91fc985a4ce97894f8206dbef87920f5747d7b133b73735a8a66e572aa83076b82ba3c79cae06a805203e4bde6ddc59d7d6195f62db522596f44c28cd6a0d5f3ea6b02cd38e1f2df308ff14ae9b1a52f4739511d0c7b6bf8db2c50954efa3988dead8174cc49ed869811a680dcb0d5cb393039c262e49afb66c8406cd3dfabc703bc9b613781019f65d91e242078bd0f611fd0c40987456e66ee9f82f6824e5ee9a9e53aa95d11fc283ef6edd212e580e50bf9cf4742e53e87dbddf31edcde878cdb8deafd198e9d137b48fc837c9d35a2bedc2b0b874bc94c722930f0171a63eab1981cead20e4fd019bf02c6a6bf1e887f9058ccd734af505a7c291de1bed847d6cd9378c218afcab00dfd8baea382b2c45e4b15964687ed589da3ff8836c9fc8e747d3b8394475c13b74e3e0ac9c3b8751967dd6b866beb993fc8092fae8ab55fe30c671c841cca7b80ea7bbea5a1b309bcabba0af7270241e3219da83979024a675255666e8ce61f1e1e77789d2bbff9feb2722dc8ef3ad0c154d56544dd34bb6ed7f309e15a35689fa5ffc0385d2e4b7358186ab3423ca3832b86261e6c0b71d64ecbb1b0dfcf42a86d197ba9a8f9ef387aabfe6a51938b7b70aaf1f59a1a8bddf46067ce5eea286252cfeba44ff36b5993121561a4dfe532481790f462518dd11d45b715dbc1d72196b6dd70ad79a12b94223c2854c54ecd5893c097545008d21d3c5fca20c71ad075f8f6192e2c18d93d29e1fd2d2d4606fd7f4b162f16d9d8a671858495af8b5b2a50b89d44c89cc23357d731dc4b900f30b613cda95a4f7cc7920954bdef456783137b66a502b5a392450c87670941a009948f9079c49b49e2546d9555ebe2a6271e025519075eafdc2107df545c74cc0b7877afc8276a41c25de797d64af6c28223a05eb661c91181b1e1b0499869be0216ba8d8d6b9c396473b79d6cbdc0566b9741c028f5cf6cb64234a55a43c600dd99e51314bbc3bb6c32aadd41528efd8f79235ae4efd746623f6c9f5d4269b6ab1c1063a01da9d8bd953064ec400b7c81285141dd9b3d47e5220d2176befc38388f70280ac3b9b47f124e98af3dd460f75dba4f0b7ba39bd5420607fc72233264caff277a4ae5b2daf55ef7a90f474ae31049ad64babef71636ba410359e506775776e3054b9e7ede01f94b9634b15c0118bb4c70833cb9c304dba1b78905b96d200430e054f1e81f9f1300416eb7d5edb18683853a3ba087cfb2d857dd498fdfaf6657279d2028c318f8e4c5cf23ceff8806fb127da255c82a2de2e15bd3fcbd24559b40da59fe00ae92ccf30c0103968290d4d25c51fda4f6d47161144af405015fe3255def63076171d1358b4935211a03c01023fd7d449443c0801c31e6f37de191e38cac2a8d083ef16cb116b516b4a060665f7857ed923412dec22b98913f1c0c03e0b865e796bb373248bbd411cfb164390d46d8d38748d57029b</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年4月记事</title>
<link href="https://blog.cancin.cn/post/bffa3bb3.html"/>
<id>https://blog.cancin.cn/post/bffa3bb3.html</id>
<published>2024-04-03T13:04:03.000Z</published>
<updated>2024-09-22T04:39:39.392Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="a4ce8768b542019a94298c1fb1985de0eb41840ac77b35fc3b04489a12957649">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc1414710d277cff0fa4856d2e1a8a8c80505455e2ff610d0c3e844a63202f50c74150c16d75d9e3c9b8c4a82b4c2bab0be687e19de8933716da038d042ce7f6870a8b3498d6a95dcdb6ddd92b291c6b934f9a07b1a0eceef26425d62c94a95b51a782ccde13524fb16df5c195e9e7521b64d99b6f838ae7ee4ca684194bdbc40d0c9f800aebcd21ce2bdd036e931982cf95bcafcf84b21f688369882b1ca4712270e5a35c69acb33d2e59a95622fed6a019a47cb0e26d9852d449106d1d1c8833b6e80f3adbd4458ae36d81b4c254fa96507b6f4b1b612a4b15c551b02e08d883589d22c2f70b6ea06feaf9c9d87ecb464a1c314cb03c431dd1a181ef10d42487849f7815f7b8f9938dd8a19854b5fc61160dbc22853c9b943739a333d269e3db3495bdcd23b1c275685e18fa68fe4da511de53441033fdb67f4a5a3401981c33e6ac1491f12e749c70793bcc6b1e2e0c9f262c5374f8653d4004e9d810e56bd89daa72b21b4092d92e739b5a32ae1768e5f3862658b413ecf6002fcf41e8227cdde818275885c3dc8cc7196e663f4ab16a72f786fb31a3813e711f0633eaad090ab07068818a1243576846dcbfea38a6c5905f95a686d39e1cf514123806e4d25b6bc03d900b6a62db0d9dd0cb521c0a8e023c51d78779a622b7a39a6bbba1f061bf0f6778e2254f9ea3545e564b1783585138f44a4e86faad612c98a6af8a0f56210d6d188ed9fe6ef65a18b5efc0664cafe5a39e83b179ecaff1dce63589518b0a011179f5de344e0d2262b5e853e5add301afaf1cd3d7e8118fb415148e4a293f846e87b625514dc816a5192f526be034ca26b91c1f9bb74f11d0b48223fb250cfbf7b1f624f484967f9a56f9c260ad59a9c0f74cfac0848d8b9e97063a196f432d4d3e5c694eda1e4a3f1d2cc8df2a1b177191d14ce20b1fde6b7d8e7c9dbc9e21b2928c0531883d2c0e60560abdefb218e15589619d0bb68ad9a10521cf5dfa550cf7048641ba18879c4281e68b23cee1d0a4e09a80f53e0cb1049050a0df78dd00409f208dcda4a7b23acfaacccb95e16fa21988fffda5da91f4287c8ef2180475ba14e96b008d961d785a36e0fe32c3e12d076c81d7c669b9a906f72bfac2cc2e152fb5988dbaf4e142e8cb412cc8f8db2cb02c57ee8b29589cde13aefbc9807c56ffb5146bc1b5c9030859d2e5bb2da35ff35a7a19931b89e48b8d08e31204a8fd8d73dbb08da8dcd20d54a97acd0c0c762a161be7b0c8ad3cd57c2526fc210f2bee59887b2d002e4f983a1cddd17443cd04568d471810d83139dc29b92df8fc13a66351fea49a797ecab1252edfd114e3be3270791e3f41e13abc3e3b0a7cd8a6838045c7c4763a964dc9a08f739d9b7f14e804ecbefb454640e94d38097980c7ac405115517a47d62aff6e4eea3931426c709da62aa6964288f1746814aa61414fa4e2c4fa9796cd33688a97d10804cf6ea7109b352a7b383b57ab1030e8eb8f98f73217d6ef503e7ad4770f90dffa322ebe3080cd03ce513c0b96021508e2c253e92dfeadd314dcc26ce4e6dfc380d5ca332751c9ea66ab54f0145d898035954acb636f57aa25b2e0fc2253e872a9630c422b4d093954eeda74d7f4004952a1f36a1b8f2d6af101803fe27d6515610f143cff5fece7df8c014ff9ced910216b00408aaf70cee931360968c37dc45c80d7059a663a598a6bcc6dad781be31b590a96ab52c1af81af61da976dc5fa8a11f6b0645cfb35a818a3074e8d21dc52c3fc8c5fd99d90bbf99b9e08037602fe2391e9052ad38879b87f0e55fc8632d9a1f2143601a3f2366fa914572105d42ac52c8561f86bfbb0a892f2900b6133f1eb66c0e5bc231da4b4a5af28e040f9c32556c3067ff58ce0b9af4731e8cdb690a17c2067e38e94070ea61efa3dcc2baff2158c7a5661e74bc24d4b56f314c71f9d26dff6bbb83a47173b0b65c0b0f8f275c23c0da958c821f43c2bc362c226820b5d06b9ac4fc3d3298f50607ebdaa485db966154ed5c38058205e7048ac20dc86224ab4759f89c6833fb2e7cb81bcb08fdc14f8d0a7d4bb5ef755b3f6e5a8ea58c537c8efb22f47b4438de55592d8a3d8769efdc7c6996188f57f874708601c7a4c68f5852b8bac6e0233e657288d6e972180f3aa154f1b2deff63b14d3cf0aafbb667ce62e49f57463e9386ba761ef7e607f4c694e2027fbf30291450bf6b87ab620c1f4e117c4be000d2592b52de4d8f6a39096431ddf5059e6d238f6ff49cc4f3eeea73b07da83afb6a6c996e6bd04bae76efd552e7b3f55b99140e593ea0e68f2a4db3fb743b56ee83aac813763cbb4f77bcbaf98f5013588ffa8f0deb795c623210a0707c8fbd3144208aba545c32ecd2327b1d8d400f3da0052e3c0b9f49f30f7f3aa9ccad5389f666abbe0de5635b2822eff3c32b732af632f2f3c26e279a74b9aaea51532218d26b0b84eb356751e78e26a0c0bf9fc34c98955289abccfb3893759a5c2d516c42323b23dea2678b116bc267e02b7091595c8167f8c271880ec7480c7fadf718aaffe88ca1e66157c5d09c26165fcf622b86035d3c003103c60c46f9e85d71706db3de7562825a33702e05a5d3a784e679f995116987f1da1c6954a523e406950b9dad4e476ede43b1644ab2c859ff738b89aea5446ad38f1b1fadba950e3dd27874f7a8183c232d7f205ffa941899d5842f040212cc04c40104f44a5781174436d8d435b1570693fa5af9da225c3b18376c42389473772561e7052e07b27a30dbcd3458e5ec602215de9a07a142c41a8a372021f141d1e80212eacd54ee6d6660e19a81a59e8c601ea58d27fd7de861eb8da344003e0aedbb31ca84683013dfd2ece268aa841ad4ef238c94c7e49a5160a4c0cb348023f997886ac8619fb090d32865c170d4625d8c9ab34557566f7367bcae42b5a5a330d4f9b58d34b40a9f8b2177e52ed42e3b0d6a96c421f9827ddffbf21916c6d484c40ff963337026c3e3b73c49db46a48ff6d0617d8021e006103df3ca27031af12b5cd20a86460173d3ffc836fd151cdae752c16d9fc4d10eae8c6686a1e2b8e76fc3ebdf53f972a10ec8ba83648cb986aa77e24e7d208be3f1f87fca3a4489972db435638970321eda5f4ceea1a6a4e94449ef131008f53ccf24339a838807c4dfbe39f9953e170bd14e2972b612f93652fb2529a1e1b3859285c62feea4fc031d5f253cf492032bc7d9d549c148447d6a0aec34008656314da943f2f8f7dfd585fd0882693097b44f8989218d2e644a4e296740fa5d79ca937af36c4aa4d8611def0558e82ec88273077af2284917187185222a1b2f8383628f726ec8c145537fab945729278c79a86a9058227018ce0621cabd701f7c3345d664cd58852557a1679f7ed1eb766f4324f7ce81015ae357cf388dbaa6492a40cc326d734a4df5a7fc4ec0d49396db4aecaf4d9ca0e2c03dc056d215523712843ea8403938bf4595c15da630b1de1140c88a27981632fcde5f8ecb1dd40650cf26dd472f6847dcfcd51cd3cab8b96122b028849588c03f03bf9f90dcff57d426b2d4a26fc45a38d07b7e0d53c9ed7683b0df4b00d039c975d3a4e7aa28e997af3562d61a11d4568155cb8ccaad4cd3c328f500f574278a7ff97023add41cb0c766be93e3e8ebcce8e1ca87a5997198ea8c62859a19f7d9792605624a44abf38ebbd63c7cadb859a3bc5d2921bf74c10eced08ab7ab0415764ea2e0b7a110baa29e171452d4dd9f06570794f11dc25e89b86dc5c6f6b7f483ffcb6d21ebdf32749ce335fc07e0c7c661092c22c9502a508ebf4eee0e46e706281214137d39f685ef27dbadca53ff0b1d961353932df6246474c0c292b476eef085d321182793a424e434e3152479b06c5c2294591aaab6d866daacc3eaff001a9b39197ba41fc0ed0c66078ad30f51ac48bc00c60b779a83407be91bc3431ad3e8e3f4f79f25ef85f7eae9d810a385fa7f87aa9a91aae6e4ea13e771e7f7234a9310e0235a591d5f3d3659241472fda56dca26de71aad37e63cb93d2025148fac9fa03d7d2881c9c968403d5ab7f22d82fb027c59113320a4c41e714ec5589b6cca6edf765d38bfa51305e06381031bf6508a889e241b0ac49fbe6640bb2b5946d4ee3639fcba4b92ffe99d3c6554952bbbdddcf29b5699ffc024ab5054111c4df267a29035a2ad762588b514e7059f90adb7a9c521d63ec84cdd5a30044d23ba49f1bc064ef1b886259730a4888d69e3ca10b9476b402c995183b71a172ecbb056ba986eecb6914b9ecad78639a4842324a52df733cfc91d05c994a9a8c479ba6f5ac0c5113b241e66b450c1938e73a2c6deb68c1a66991fab2c121472aad8078a9d9b3cdf1060c84cf4ce0da2dff30f6df1e65c1774a44351cebf368b9eb06ad778e85fafd0d0c885f39746b6ab5ae8da591d6bc4e934e53a4976a28f6c3061174db0a7c5ddca32b00fc971872c3e0b98010466c82773be37e697d4a62c6b8eb7f30d649c07fa1d02f09949e4edfb5b78891c82e4679c1cb8a0493c7f8820718940f86b8b8df4683cf001b7cbe947df93c75bccf0783d80b220c9d0aba0e78c3ee7364f2f0e68d97755319bf0b2750801e565e6d1b49470a9953a3a6c3860bedc3cef7304e9757fa569ae08e0455ebd976c572c44ef15d15fa3dde7ad51bc555e59b86405a08cfc25d04d8daf3dc7ff2230cd6c2ea84b64d4c56e57821950eeef0609eae3c313252c89a134bd060bf50ff243849094853c0ee1f9819bce311dc42498b0e13917218575868c16c8903986674c37696293b5ff5e8a6f4fc3f8f2f9559b967c9810270b705d62c7880415694ec38cdfa0d084a777bec968e808dbe03cb047843484fb5d8d6d0f4e63e8e95bdf564e0595316601dcc741d87e34a6590161aa6f50c01abd9242d2882ded37c8eb4191b898980f119f0c5814fc4c5aa07dd86b08eef2540db97668f0489daafdaa36e4a8b42a29b97e1867f02f47e38d703d6463d3c0780c68b5adc4c6d5a96ad1152333639242755d6ed7c8176f23c7379dca24d975356d222ac93dde8052c150583ec13077c1ead9df5892799439a425b409649463b2cfb4d9570a2e40a6c55ea12259d0a1c1b1ca0d6b0bea3073412f7e8b247153c5512eabadd164b1a8b2a0483e02c75cab0d5ea07662f5f252efcad41121ca1d851cf53f9a3e4b77cf7635b7d666d1e5b043bc18c9a0e3752bd109e6bd661e1c7d09be92ac2e17e3e8693350634da8f10626ee2e7f4cd5eb384f589cdd4e250d3dece884138b5ccd07a76678d96c8e3ae685e70da7b66e33f6d4c01ba7663fc4d563cf2701f9b3f6b536d11ab1a851a3cc855cd61613f8579408a63943c13f3b75f5da9a9f3a68b310d1b81eeaa3fce573470525fa6c19c231d9c8b5ccf574acf0ff3ba6b1bb2176fb095bee5c556499859a063513d5a0c1356542e1479ec905f54beed0ce5755635d95e5a34fc027b55a4ea88f7f47aaf29f20d8193668561789e28f3b741a3e7f6c2607d2afbc7099386f2c8486184b1c5896b469e1898e253fc024206eda8a4dc90dd056b18670393489b5db663e3aa00c175bfc8ab1582ba48c98e216fcc025ecb16adb944eaee84180ccfacaa56b504dc6e1c1f4b0d22f5f1b735d134341288dc820e9174f258266c6dbc7ce917aaf78bb14111a6cd1559d1a0ec3c8d928c19f464ff9cc52749c179fa7b849ff7a18086e98dbeb03d079676fee390bc50be2da1ade89cdfe3853019760be284eb27abf6f5240c57766629714508a8ade918c9ac2bf85b8e4dc3846b1de3a1d0d388c749cc881e80d28916dbcc437c45a03149b8f59e252cf1cec922fe9df2910bc8ad398ebaa574ed72bcfeb3f2274fee4ae7347e5a1d2cdf7ebf47467d914d243f8be8104156f91e4eedfba26596ed9780712bb96a225eaa731f52e37e21164b05c5d8eb6ded47a804a383c01c4a23d82f775ef40ae82d4710baad5752af1846c1aef4cdedd8a4b618473d0faebbffe9541f55fdffb9f2ca69e256385f1fcea42759f1541d1d34582937c0d4e45d3db3f4fbba9a9d25fc971c98784252c855a7fbdee8a43eeef19dee250d1ab4386bf849de95e5bf87492cf0db05650d44d0983167c695735001e2d2b7135736bec414f9d008d34f07d2ab1628f41643e78b82b51df5e40c21532f3d9ab6bdf8fdc77c4943bf5d86fa75662b39a41426599092d9d01733ad05d98e9a8e0820d4b2b76aa8b84f3045451566193dd451742ebc61ca8242d4ffc4f4392bc76284452691d12189df42215068621d4135cb41c6b294f7718a71a186b0d8cc3af13afd211030d7d8f9d181d2e6c2022c4a9bd061c99a20a16b18d9dc09a6e56f3a88e6027e6792cef779d8f2e6a2bb1db32e56d2fe4500a40a4d421808ff5c229019d8441cc590afb72cf4a89192fd55402998435b535a14e18909cebcd1cb73805f7dafba3f33c65442551a6326ea35495131cbc680d848c011f4ab9705f831d985cef46c65823986171b6ae1bbdbf8b5854c443addd40b4f5ce398a1374638ca1acb8051f5abbc67c84bce4eb57e1a8ba343100a64762e44cb117bb2c35643f55f293bf4962c6288d5925c3c9ff0975e2d3641ce2c7a601fe7bec3107679f1024bf908ac8bf442fe5db9945daa138d1ddd309a0a1477f92474a22814c227b1bf996e06a849c84b17d0c102482f2d69e3cc69edfb2585f465e8067cf5cfeb1c2be90a4a010fbf9a9f0597e1870bf1fec3f604f700cc77a1c2fe695aac1c7f6314530442ded3e4a329962a1fef63aaf91d20039312ca403a8e95ad7733f740330a70d7ff5f31873cf5902832499e8fd32d109e18fb9ec6521c1ff6940aacee472420504a84c7f2aad2d1ed7970d35c99093ca50955e9ea0db0394c69a1fb0e904d333b5dd16f23802b1d1e70d094ce5974611b57cbecd6b4ca5e1e258bf16dbfae01657d1f58703bcddee82f4fceebd6dea6d2777da5e7b598f36fb7df8af8164b9c1c9325cba012a83e672d23b33e6838f1fdd193ce5ab71264fb15c4deb52baa2dadfa94c27190d300b024d032a4caee882341ac268ce1adaf246c0f40b0677b22f0ce551816613a8503c26dddd7249358967bddd11b895f4bc491c59d9fe6dd69a16428591a643e763d2a148e7faecbf1ee01c72d6d58d2f71b383c46d33f62f32d6bf04913467f087e7043860ddbad9d92838e17f1e28512298a535fafaf92733c011a1685f064a4f00d421a9989dcf6129476935190c0e4c3b169f9d96275d9f97bce2fe70788c40ea61ec6395c255889ff64d0c7b9e25557a162538fc7e7c6abecb0ab6e28bd6585659a01abd3cdd837619156688b6c96bc1ced8eab9f11076d347a19c768b6c08c9a96577f3d21ddcb50c13eea7b4cfb326bb8a90899c8fb367365a75d43ba4c2ba2d69e91223b3373bcf4b1e05ec1cb0fbb4e6eccd2519ae541dcb4e370004816340e21522faa5703abaab91a593ce922ce68708ef3baa377069f02ac7b1ff36d9fa2e14beaf35d8405bc61204ce1af363f3160eae9adfd403b9a9080cb7f4b7a6ddfff932bdd78894b59151a01ab2475c9b9a507010f171a9130216af88a2f4fc10978f5b9c53019c8c1e17cf044629c278cc028fca1f3d693c5e5cfcdc8ead550fc028722d8a7f6350c6ef0b87bbfb613bfc4c1829e687eea6555850c37046fc18a257528a4a20cf1e8847db7e573f7845bdd4b1033940a1152e11e5e26e2470c4fdc417216eab528cc61648589d889d77f0d52053ae0b0435b0cf918b47fcb2a3606e73b027a1eb8ca42f943576fadadef9a85639ebcf0da08c0d0a90b651bebf0fd14dde1cc3811e51569df70a6f01c496b59677ba626ec797f27f332119318714b3e3335c580b8f7eb880e33d1c118fe5e9c03438d1b477c5cd6d5cc913482d54ac6babb7e1fc0717556c442dad451c396153b2390cbc29dded5dce40d9e7d66935b161da9efc81037b4247acd97bdd736cdde610463ec10274e84120d5f91e4f00844af1a2ce0c2aec174148d281f36a338b520204942098ee227251d6d1ccfae3251ac02657d91a91f961b74edaf7242366c90c395ee8d3df4d4e465cb0243ed999cdf0446dca6854471801b3c95826eea4cf4f0567ba9ab1a3be29ac614098d3ccd681043b17c167f3d877b49c973ff1ebd0bd8d6716a4008a46035de39c2c3078081f16544a09d3cae24fca9ec5e07b8a4dc9d258901b6ab3edd43bc33055a1467096389b9141c8d4bfd9b0bf474aea56a1daa1b5a145710cd760c2143582c035abb442e553a54dc1cbf58dcedc89c50a7a9c9e517ec641cbf00d665d53fac72c3be2276321b683b2ab1809a4df8df2c70499cc3596b1a985eb27f6e884701c07944963f566d74e8eb1b6ea7de82dc486aafbf637648983383056cf61548d259237cdc6f394ac43d5fedd932b3fc71601cf1e34674e18f3cdf2a676fbf54c7375182308cecb2067b39af0a5eeac53b8a40324346296f352b886867f70f2c469b2db8c2f81db5a07bed9351bd5d77323cc1a1a91cd545cf626bad8a273e130e75792e2f678bb1d65728260340802f0a6425f78f0aec921ac1bd1f1ce7ea3621adb2fc63490496493bf7d5f1a4121700a0496693b19d63beae8e9725a248693b97d56d64c49561bd0b1c3c3df8b2a7719b14af72b040fbf5502fac3d6c87f992c8d7c53ebcb572dce62f773c855dbf2099c4371c1745c545482e11d7bdc291969e363f85630865b4318ae90566ffd2b0c5d2f76097897b61477067200c4413ae9c37448ff44fdb1f1022df2e14b2efe87470bb6b516a593446250dbf3a070a9fdd1500848041298e8f87c1e07f0beaff5a59b211e01ccb86454fb585053cd53c8d87cc9831b03f9c56b7a87c1dc1e3ed71fe52890aee742f0bb59bbf70a0960747ff258d142603e1f4d94342ce4160855986dc675dbee218ce60b345055fae3f5f70ac25a09b706975bb4df0b8eea68e015de1d0dda2aa3d827a3675bd03566acdd07e7812e346cf218d4a9351d3e35db4a35c70ae4df30720e9124e7c2d7e06bcb0a9a84e9ac47a3371752c292e53cc4d64ed029a942688cd718085349e9c1044d0dccf331a7e6d3beb51b0edd07fb3de4542362feea71f65cf911fe902c93dd7ecf9695d9fad905b09f728c8e55d549605b5b06b6d6bc874b864934e3d0703920f26545b03fe35c246ac684c3abedb0f8268ed727fe557084b28e68f9a694748e33be1f6b07de21b09ff76c6280b9fa028c5e1280f6b0f00aadcd8f49d6f12406c78a08ac8a765914c8107b0722fd41522929be025fe968347b48c00b915e41a837a7e57de12fdc48382c529ecaa91e2d2890d8bb5f1e1a6958b749c6078eeaa8f09d376ef7b593a35556202c1ca78c118246f9b4f361bbc7b680ebdc7c2bdf8f8e04cecd32f6e073afa94e7e4cc6bf1a910d283c1da5cd5b8dde815cf485ecca029b675e08cf695cb8b87a1a366e3024a5018ca874b38ea45b3fc050842ef6429cc7e8d467dc92e82b21ff0ef509a3764e62e4181fa1fbbeff61fb027ea33dc7504430636cfe62721710abf1df018e63c8787b0c15cbd5161633292c32ff1977fd2ee4b5b265121b763359b7f9778798ef038bb8d052290c8748e6fcaa57da5946ec15be57100bc3a0ea3b8a4dd6c9e40e788508b56cf84235b3d78fa526027566fef2265cfd50cc28aa01a8ef504c1bd1c9ec8b49d5da35230e930f1595e1334ec8cb7089a588dc823112f1c9657b3f039b717697ac5a8a9ecd410f801eccdd3c32b14faabfb82d3e16d7c3a6900d0785075b6816b408662a1e69546f350d9922661fc4141f96d9de4a3b1a8ed62d6110f1b73c1bf9ea024fb2c2f87ba96fe07afc3e3a88cf3d387b886247a006768c18066f5cba031430bb740afb5de540cf06b056a34696a752ef3a5ff44b48437e4e4f94db59bc22de5066f5de6917eb9bab4637aae3b7052e6a07b9c603676c71799dca11dacdc70468c46ff1d683d7b997733b06005304c7ba9b26ea0e628f826037a95099fcc55ce043b0e4071f8947b717727739e351d28011c14d1d5e0a8b729ba02b418fc47e984144c54ee0a4c49992886f95b171717dd1f07de73127bd9d45cb157d31e0c4d2dc47f241468ca903e6275547673966f78f8ac38086fa4c744396ed436bd0cfa30b6a9b22796721cd9ae540548ecd3cc0f555a78ecd1d719aab3fcef46707b355ae610adbb382e53ed806666d4f7b1da6508dbb1284a6038264681aea42cdad107f4791788e443d79e7c887aa86f063c06c4f560225910c9d493b092b354c539b7d66884718349ca77d545daac073833a38930ae97c7a04491aefdda6007f4606ca20a115d52380d83554619fcd81bb12e7df187433d13d1aa77d8d86bdba5d1a5117ef6911ec2918b0f6f826c323d6bbd6a1415ad6ebc7c3470f3a639e53cc1ee93f0ffbe9babfc2b665c92f8123f5cb4262254f2198f1c9ba3779fbf5b25f4a97e28e6a8445bf6f2e33b3cfde65384cf0afe3bf0dbc8e76032e26ed76858998fa843fa3e8e8eb82c2b121f9f2326de74a1073003c22d5a87b71e30e000cced66da4ce33123692a3cdc637079cefa5db0d6d34e43e8b122b2c861206e346cc90e648d1ee7e0d4a53e4dd1a8d422a572e8b4dee0854b99947f0dd4609d0a780061049f98742fa62dd08b5877770d6d33b5666d1978ab6a209638e20ecd97a9830721ed3c82f0ef87c8067687e66233cecca2d8073482ad63636248f51380ef55e0ce064ffae6c599c83a8c594de097831f070a45fc477dd3f98a884faab1cf32171c454d693568d6e10bcaee0656af6a4f6251aa5f047810be4af24322eb3548472f0de4be27746675efcad9d06f03518581480a81b9ecf54ae9e92989298d796d1a24f3d9282346ce1980064cc9dc3d940a6368af9de7e4a018401e8c6f3533775e686674cf95f7ecfbc3ad1984f878c375b74253ae0495a9376eedb7023e69dfc91c56391a3b6af36a34e171e65f722d1dd8907b02557f7ca787d1cd2a30935aacc81217a1921adf2a59cdedf357e0491e22834e0a09f9d45fae2c2de69b50edfe7a1ca5a0d6b049465d960074b26a53dd9049db063f9b73af70bb9a2d8e45444389641b3ea072f70fb4408cda133da09d1862ad70cf0a0bcb0c468a1be043999e88591b98c4ce61be2a90f230b70707d5a2804da9dd17f2e2f00e305f33c96839e7d5a99e39d7df69188c627dfe231e5dda1bbe6967137be80dd3890f88f9392f11c0f72d1a3c46b58451a8103883e212c70a58175c057a49b2d5aad969485c4a9d2df421ac98233ce77f1a64316e48af854d4b542eb505ea0b7663d1ab68fabf4d558279229c7128c3af1275fbc918e83328c759405e81ce3382c74ef9963a7f9b358889bc3928d1c37ca2fbc3c1bfabe50b116a53dea69463558ab0b79c99dd90dc968b9fe7672054e1e4cf30d9f9fd90f4e204e83a505b64a22c87621c85459591957001dc97b4baa73c426186a2a25868693445367a55673b411ba56714eabc41e1c24b4dae26ed47fefcbc9958d565e55eb273c8cff567956997bfae4f5778c892f48c6a239fc4863e0daa9d46dbb1a6bc55d2c81314d08f2b310b42e96ddba1e0f683d3de33bf103540016f521b94081cba6935cfbdbd2be3c1f118c1902be2d80ea281cdd996e8f70a8f7052f804e53021f752d1d63cfdaeb55282bd43e65340ee8c9c9a37d2882a3f365cfde5d8aa159875b64d984006e6e07c878ec3dc74cc4187443604bee36b3cedd0a9392217c42bf471846976eced6330cdae3afcd230f8da5ca7b1cf90ba775a30039f9379f679f5d83b91672c81d133a0fc15e7296328923c8b73a6dfdb5dd53bc989d707157dcb49f492725c9e9f2f3b66df56de78f0a04c45e6d4cb65e00c4ac7d2481847bb80702fb0eb40736456d5e7a8986526c0c6a0dedc52538ff2eb5b9cb4e3902966c0968affb256299f721b8027599e57cf338315b2f96bdbd72769e029f170f180e3481d9d7bd0cc358aeee67617603793200254553a6a55e6824796d4803b3919e5c5b73003ab01544e41433562845746c26599e6393494b9f18a0fe545ddd9a91ee2f986dbae5a15d0c75197af972db1304ed9c57dfe032c5ba4f8aaf3f39b2038af19ad34fad31e3f188ad45a473a8778ee22df599a16e2b130fd5ea7deed508545c91e330cdb5aa3a16d01866fbcba42cba889c5022bc5fb63c47bc17f2e91e3bf4cbf35f10cdd7e706533007ae195469e4a050fbe69e0966e9bd133c2af741bde03cf991f17818cf62741b9277c4330ca81479ae638dc0b9f800ad51cf0f453419533e81c93fa8b6c6af16b6c8477785f9bf6c46f27007e2801da8e4307edff99774ccf8e3c243b65ddece175190afdf0319b89b7eab67bda61509a6f7ef8316809eae7b18a3f0e896da7c43f6920b2c8a75c29fb247daa6fe4736f70ba16566efa1d6101a80a05e16b4ada3fb877d266eb0ce2727d7fefb997ca69a6ad7ac39baa7535389018497b493ab2f85f3d747242e435c5989788b897f11fb25372ae3d91ea11732e87a0f4d70489686b9b20babd34ee0a3621a6bdc552347bb567287880f503aa7c1efd585c690ee0a0aadb7eaaf09ae299cb72ed2cc5ab2e384efdee13eef5486151b2a02dd57f92d2b3e14b9f3f19bd6c444bf4c91372bc924680436f681d4ccec7f135b701d71c0fa5e541894178b306e5704db05877c8e6be7051884d510bfe66602f955c150ace4292b7cf638f719055f65998dd599f07e2be83e429125e2f74b26716caaa90dbce8bf3c6058baa32c84fe659d5669a47328901e8fbd6514a53497646603c30497ddea75c2949f5b33ad735bcc61cf52b2a1eac132a6adeb83d0bc3e3b5436187a366660e0b8877239e640ad61877819d5311f66195780df59dd254232e080121ff85491b131f421d79d263bee878a9b64905e1dee6cffc75d8a59920cd0ae4be91b968f3b0da3bb151f72b10c28487df5f3381160cf19cd879c7cceaaa3a191f75b44f1cddd2a8fd7b90e01f591f3ec2adadf1cda3348c0219b1b1e6233c71db94d7badb41a57a1e03e952c240b4ff3696b275842a37bfb01c7cd92d94a6e09b17b29f91051e720c49b5093de23d7e83fef461f2ff710f441f89e1fb528aad9e4825a13bd3c709b697bf2c9c6bea62925fe126637f69db0bebe0a050e5b09d9a29f5fb3be11fc460a50d06ad4a00201af7b259a8fbd76e043d2c99f1d4dd066c8e573f6aec3b302412b50ca83c9af87adb4a151208415d59e2e05238c1005d1b44a45f83e6ff9fd28049dfba5400dd979d033c62e0e1062b9679f04e1d787f0e026d8e7e2cfcbde47d51daf663821f8e1bd1ca3b4a63e50b0e373e7e9d937bdbde3eb567d87e7e881e32dffb28b7748602ba28f7b838faa4bd741967f2c2ea576dc84923cebed9b0e0d2615135e6376285c21850123fef7f98db30b65f614e1115d34f5a2a0aaf0821e43d30ec9e0eaff462cc6e3c3e81fd54036a8ae0e249de2f59b41e36a0cfb8efff4e043a0d3a45b5a65f8f3b82854c456c42d5744a0720adf3adf99ed149c703f921902b0ddb1ef2f85597e64c87e9415327ab3a795d80dde2a19dd47476abc87a468783ee6a3d0646d99a8facc52ec706ff2aa9cac4835f2bb2a8a89659be2ab999277603da06368a9b1967ba5b16238a071c5ea8237778553feeddb585d848d994e1ca262ab2a1db48ea3b7c1604011e611296d8d7ea25412a9a629d5bc6d1b82c70680e2f570c38de5b9fddb2e8633d389024aed9a8c28bc8299dd3b843b7a81637cb2c46dd75e3c7009f95012e36391673e70ede4235521db83f961ca4afc2ffcd49cf679d18f183c9</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年3月记事</title>
<link href="https://blog.cancin.cn/post/5d2620ca.html"/>
<id>https://blog.cancin.cn/post/5d2620ca.html</id>
<published>2024-02-29T14:54:22.000Z</published>
<updated>2024-09-22T04:39:39.393Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="3e9b13dab08beab0a6e36eb1a2e258bb736e4f5b3bd2b58641a3d7dfecee2762">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc141c0e6a654e86f36065e1bbd438ce494d5352d1faa06f37150fd53df87b35de9c982f9cecb89e021cabfdbe129ad2ca6766d144662ce6f631d3e326137657d10458383f6efe2125ad62da863c0340b68bd9f52f35ffb4f5fa120c8b38f969a7bcf01b6d6887919a40623256b9783f9cb10b7b77534e28817b6e18ed95acf83ee5b917f2918115cf7ecf008ffe2c17d8c145c5fa42b6220cada9cd45d9b0bd1f66aa336d74c90be99abfb1bcfd0635379c01818153d7d699ad696ed40fcd0f71e72b7deb899ad1553c766a47f4d08417efa4ff3ef01091fa9d006148fae8ffcc616f504bb666ba6e2f2113be27221e7c79af5abef3201516bd4b68816ff18d6565da16970667d3d4d0fa40f03cf7abb6cc586d3a2831ac51a7525f1a727897c8a04666eb43866e5d56bf4035e9fb07076eb626cb0506b88ca80ab852154719a38641da59d321a4dda1d96c24fd1462a0d6867cc572d328ff453bb7c1b0e4d18501ed54d1708da5074e7de0bb1ae5e8fb6cb0938a3029f02c1a1913e70b37b395e1691839fa7f275766a298693b5f579e924a7b0401e70e2ef49a90cd76ca27347dafc86dfb0ae8addf4135755bd6c5bd085240cc871f3e3e260624aa3a1c1f2c30be85ee07ecc73e0982e82b3aa512ccbe9d591f7c80c34a12a83d612a6a9d60c31d13e575c6d6203d0a0ff5bd0d8ec6e1b06a49ffbca310182bf21d2b6bed7a7fa9ffff923978ce67e3feb8acbdebea4f7a7c025d475d37b32eefeb3abd48f003a7461050653743d08f021db636b2060066b10cb0d1923ed9979fc32d2824d7cc67cf0870b3bc32aebf66f59330dc18369c4c58781af8e6c7e29e8399f62a6318f9f683ba0fa1e7c4df625dc03dcf7d316391d903e92e331f4512b89e9c2d408417810a76e9b3b19c911b98e1ebf0eb323f07dc222aa71b576f45572eb7f1a859ccd2a0d83777f03ab02174424bb8c5f7053f04f87b842e49e665239c3ff207259bdaf3f66217934549148d29f262a7f68d700ec37f0b3876b29c1d32c427b0a07bd28e669f98ab61f68cb4eaca8cb614967410b34fb636d4ea83328f9470755a66f7bf10a2d924c21a4c81f965074f2f626ebf2304c77ec3536eb9d76bc3e76e468b51cfc18750a6d32db2141b8610f2bd921f80444341da2be4432fcc4d6a41be678f3088196bbefaea16236b6e8a3b5429be834fa356d1e6af34fa3b611a214621b0e8d3273baae1c49c577dcf24e8a8ba0b4b534681674a101af9acfc4b948ff6cdd2e0de3068608c733e8585610f1265a9faa7bd505c5610aa6255d2281616800f6e3ec289f10eb7d4da6712c3e2251c444eb4aff88703a5251550b042480696776798c71b3d84f503354e24cc01fcbdd00804bbb9ade35146d5fae84e4c4fea41b0b6204e16590b74e943d8c2f34cbf31239f3904608bfb66e4530a92ac570fad2a10f49c956fa170c6c9d69742bfb8837cfc072a55e50f9e2ec3a6711f24aac0de1c21dab8aa47189d4823974dbbc6fee97f00443f42fa7df1b5b026cb5da628daee379df545b461585a70284c625f3d7b9a151435b8c384eb5e7f7133a361d8802f05e2765f7900e053922b5b8e16bc4326dbd1a6ac3d3b147ef844a3c20c5df50afd1d0f7fd793b4710d01ad6dd040ae1c978bf9e7c89ac85a750de710a4e6cf7600026a4fa840e3d9f48160bc7637281ec3e1034ca47e572154b14e102c125588b6b1c5cbd36425c6f406d24a66ac3299953ef0dfe0a05c5262688f34d570b24ee36794ac28da15be83cb1977198ba09059ba5d9173c4bfdb2aee1db8075ce76f3628ac5a6108f24ab364369d576ed6a55fa42db32780c66ccbe59807212f1999459efe899d2e17fb8b777fb0bd07f748b15bd4d684fa008a20925febfead6bdb8b0c005ab31528e10828eec46f4ab4e4423e0a08df3835b3ee5e9fe68d5b69eb417d701f5973a9886956ab78389c6c44b53efd52f4c17a2e07c875ff0d5a0c6cf7597b446784949bf93f980bf7732ed75c87ba93050866eb21ccc57543fbeec19496b976defc0a707b8009ed3cf47accccf981cfaa977a5c4026551427c176ddddda508352a3faebb41b52261fc96ec9ce9750a6686d683da323f061ee0d51c095d04fb6f168d02de757be21c378b5f272a4fca030472674b409c22278c823d10473de0826c41513423f36e3b3cb763bc85a45335e4f695ddd1fd14eb59d3e28239838dd5ba43b7b1d3f4a8943656e57f233e0681128c696b038806de19613f35c3061f79532982af63cee834df52d380c660d728f30ce3cf50d1d184f5be4cbc94bfd209311de1d0911d08ac758e18d97ef4eae82f3ad9fc1a824aa39fa3329e4de9623dee3283c65ce72ee95691f8d67dc170702a7609f02afb9d0729369c60dca7c92911b9cb03d06240862a5a87532e7857845a5e117f9540b30cf533537728dfacb03242693987d8a77de3ef2a43a9ea5928acc09e98be0c06c25263d1ea776509ba1042c5ad76b59934d302a754fddd8140eccd2241f3ba4c5dde5cd466f3c8eb72679bd81a16f5cd3ccb0cc73ad9b5531c874d92efbfca24515656b1e87ccb4e857cf2d8fc7aac8c44a4cea078e5d3e7a8e3314bda3219559a5825bb1ff8bf13610e978ea370cfc5123fdd23a3a6074bd233af15186a42759d64678160a2bdf804f8b545319f9aca8c4046dbaafa03b271d78e8119b07cc11106e66735723f69445cfb35e7cedd2ebb77f941678a7aa92b56a191d6cc43b6a1984152e9e886e7328485ffe2547ae0e2850a62c6b63378a06e37ddaff1fb1888156210a16361bfc744e51a0ff9690f063c3e6f192cb1d62444a7ac46cdd48e8651e7bd6638fc02930c27929322a59b3a21d57b7716789bec2f0b5ec9eb94ee3ee2f384fa40197248b3611ba8de224977b4e96dca6242ca407dad0196de2188aa97fe1b5c58f0827c0343d7c80346ba196b202728cf00d75cf6e619b0e2860d156f3c9b4a49025de8e4bb55be25671f38ab9759063615c71e32a4f38d70e5609f8c40c6c4689e0e95d3ae9942a9c58a98b47281de6d3300395ef987948cdcc045057bb1433683e2aac62b420c99c09c413d3cacee068c309a3b48e707736fb5f201cd86e8b9bfe9553ddc3c1fb0d4fe3d453a716532e0c908debcecf235805a234a253c606e0627ff46b7dc57cf042ee5b665ce4362dac765f44fa3b9c2ec8308641e144927fa6b04c2e008a2b7ae955227952ed7cb559d75b4a815e558d3e5799d6c31f72f34962da9b8f66ee80f79c5d113b45458e6d148c0069ebcc269d04050f7f9235b5ab9d425184a384e7808056417dd9eb76cdbda4bfe26430d76e6aa2779ff615d294cb6bc493f064662a254446cb67e8b6b71918d5be6276c4c4d0fe295d3a6a0d2f53c15d7817aaf6c59a4d8108f66dbdd3146ec9dc3a48d174b6cb2f8aa58fab6ee6055c03406d941eb7e8f882c0500a052d83d546eb2c7613989858d6de81cf5a78e73ad01958b68613ca48264e4cb49e312d3dd43d8c7c2e6f154e63e3f28527934e47f411c140855e5529b9054e473def061865728e3c5d4595f863cab814cc910a510e415056e14a1c63b31530d4e1be7c2e9077c151e94138ed3096fe14e038feac1bf331131112f9be2418442716216aab55c82b014b17592d924792f30252fb0cd0d94ed6685f2cabe2ab8d2eadb9b84874ef99fa4978a6f320db4610cf4b9f439188abde2e89a916de763e2ef6c2a4c2e331e9a58bd68069e62c87761c8a9dc67acf95a8439876bfb36a3fb9523d6b13d2f8440d3ff54631c52ac24ea99466430e0966301c58e4679d690c7d251d1fe733f1625605676aa9ec897194b087059ee8725f4ffc511e893a818e320e1a23849376c335cf1c7ab3cd538813edc779c15589438bef8832c395a85be40fadad0ff6a14fe47c6cacc28f3f027f70747a62667f096720e62b437beac59b71986192bfee1b0150afcfc45eeeec0b12608974780f0066db0deebd9d640d1a84e50072fcc70a11d0195ac5300fd743046a8f4e7ceeb02659bd5409e2fd36a1fe02893ec4880f5a6caff642279f5b641929ae922254067885f6d6c2831176ac84dc64edd3306e2de54e508de93ad7e3b3188b89b4af77e08b1d994468710dae68d06a89200be82ac94942df8645075826e203afe034da2cdb2dddd390b15e19bf36e0faa2231810ac4725a131b3395a428cee3fb2a02af0c7d0ca4161a335784eea76a50ea975d0bd8b163490ff7872fb6c40575d93120f0653cc35dc62bfc986976264aba05aa3d490cea3e79c19ee3763b4db89e6fd62f90247d7d598f401ee64008afbd418278ebcbf89351a0e5e328a0bc7b973cb5932381e6817a46141894736aaee63458af3b98cdff2b512c0f51a12f156d151530b5267acff393e12f016ae1b728425e14d3988f2f99e8500fc048a3dbd61ec8875de9fdb0666db96d24e3f44cfd329c8963e97acaa9f6dc1fc273fa89311dff7cc97f62a4aaa4df9a04c0ab4354c94cbb2bc83bfc055589ff2b081aa5fa28cb424a1b8bada389c6933f3d701420ca9aff079a1a1b667561a69d259f4fe1378b3eaa36b18150730b2521061a044b568e0439084307ab8ed0aff6e525a0c6e2f3925f6497a395eded1cea405a106363cc433693b3a2a51ac3d3a82315fb3ed416dcd5bc2e6cf606f97abd4f3d7d4cf62f089701213d7e361bd7a65a001aa1efdb72b3184155919f09b14975a485de9cb357a967bbe6e210102546af04a2a2950b2e5d0e4fdfe7175df0638409dc0a4f0a2e59b8db5cc6d8a60b1983057075a44b4f5eae4c9661c70ba7ae0dc20716edbe4828faf1afb8021801f46dae8c42bd65542468838b1728fdb98a64b4067a6e9b53b08969f0a0a9095cc0cd3cae1b1798f77f2965987b12f882c7094c3fa73f89c27ef27345417fbc5e270cf6318a064140394c81ad0843acbc8260f2352a928e7c95cd29116dc120603514faa09a0273d16cf5c7c1acfe62501835ebb6cfe3f2e8ebba79ffd164ea9cd670011dedb6c3d2d2ae1ffdc3d5d6f9bbbf3125da566c4e8cee5a017751b5339a82d5db9131257af58e6cca049b7d087003ca3c3a325564412ddf2e8f0c83345d83d8555963b52f185ce1e57b87155160f160da7fda80fddd81c5f63158eb4e66f1b6edde3a5c24b9d5fdf81b0e87002194eb4760be2dafdc27c4ea61b53c8b45395fe78ef12596ec80d828de43e15936d29a89d80d210367126baa0c4e40247556af6889152b970f48ce8ab6390b9a6bb1661f6e284a183f8698d7e4b154b812f490d29479a1909f39b48243aafa1ecc4bff6def0d745e0bed4a169c4cec9abb5b4dd9d48c1ff37d8eba2cfdf620937e20df5ded8d28934b67d766038f8e8a007b49ddfe882116db3b62a60e8db3e7c811457e0240e758649e57c238533c4e1ad00b1b7d690d73196598b5c6fc23ac3897d6dee988c83e946c3db44e3221e48d52eafaaa41cbf3fc09019331b2721a6449080c42a5f3dfde2249c954db948861ed83494a4f7dbcb3663a9804288c708134d61c8b37beb830bef2f9ecf638876321071ecdbca89ea0bc4dc32f416afe8d2fc03bcc4ecba07bd764af1fff0b68213e8636965aa89cb2bb34eed9b20eb74a8a46a5629396421e0e1d720c2ff113f88d3e645d18bf13656d86f85923fa56aa5f80a10aca34f997d8917101694d9a1c3ca33ad2f6922a63ac92bab62861f10b6ccdfbe95c19028f1955e6475e68ef7695799bd154815c2f8c840c669af4386b699d969a66aca09dddc79f6f57db602e6052920d4e8f493cc5d6e4cc204914a002b359eb51fd4eca2a68e4697d4c4817ee689db21bd877460422d281b44f06b6f3a32d09837fcb00515066e096d76cc2e285e09bcddfa827ec3caa37ad4fe2d163ccfaeedfad673072b52a58721064a736cd72b1e671f2090a296830e2497a77141328d79fcdc99ba1339b5e9b41266adc7b5d4881862ab324ef5b1394c6b1f9f2bb20f9c08cbe2928bcad12b33716369ee89a41137de26da7706fab2afeab61f268054bed35fe104cf8ace6022b5bb5bf31b710095e9f465e3ef5058f04663ad2e0865d1a182b815d1f3b1a1d5f1c668f3cf414103e335d2c9279aa8ead4d4f9c75f5e4da759986524b347469fb8ee6a7311b9ccc2e3915dcbf8973f5ac58cad92d4194e26054afdf2c448fe4b4103c3ff6c85c0dbe7fe8e04bf8829f0f0016a869bdcf5629f34ec88bca0b8847871f28e9872cb3dd3a9cd8464e55dda1092c8d65fe33adbbe93dee26f8a339bc284b6e26614a5f2fe82b8fccd8e198dbc6524933071cfde2beb0e73616962835e73e732f7f399bf9dc3dc69361e1dae6dd17e1ddd8f372f07e9b0a8d898c59a9f293f8d40aca025f802635e51e053864caee95ad831b40d5c90ffccd1db249d66fb75409b3116bc2bd065500711dd631e5bae580df5a288677196b9987338dd3e62de59952e723af0b32aca44a2fc012412b710e77a551ec978597b6af0b514a6020810557eb3ae2510891cfe37463b8bff602606f1985a2d4421dc8fb50d23d5b907d5362a66994407b6ae5c4adb067cb33cebdf0fd8d891aade40178241b7b1b85042e171a752509641eaac8d08f98ef3781b80a5f027e2acb721c7229f8128d9ea343de8055af5567c3bd37de9525faee04a6b93a44b8b2bfdf6340838d5c096df2bca14e0ba1bfedb7895f9adffcdd78e27e6f9e0b3159715261ee7884ec0a564042256b4c94c0f4f7417e3a7ea2d6223e9cb37cb05b988060e569b49d56871f64d15f40a0e7e670183203bc27838271375497c53a2611e453197e585a3091340ca442b0f652253b53161195620ed188cf3c13b52d639d9c143da7b42e837f5c964bd77165711059e26ad2326ae1a74bfaf1fa277cd79fad626094b4a1ffe1f62feba5a08a957733bae8957cfa95f034ff88914b6b0a1eeefe94e31a83c14af1d7f297216977fa248f06d1ed2c9105331bfc78c8eb47b5ad8b2cfaa36cfd0c026d16c9c1760a871c2bf2d0fea71a63e6a52dc3190602ea9a2d2cb95e2ea70e24f29811a1a012acf6adce68e45b0782b09f018e2e531d32e38c95088ecd0bfbd8fa482293925427635a4c5cc77ab2e6c15322e19b3405b1e760e15b0d39172c837f6e5dec8bff4a8599859e7a1bd0831f2046f9294bdc2a9eebde2e90fb2fe65cc3b66196604c172cb3d594b3747f341367bd5c104b424604e31540d66c8366a0cb30e32d37e0d918a9df0bbd9b4bdcb164b6d800245ae8f6f81f6c53ad16636ed5594aba960170869f46b9de2d87500138ac6e85bac7fcc3841dbab2e60f3de36f3419b4cca77ebe04e160dee751ed3c61b7216f6b577da4f002bbae9c96171880dc46dd91802add8716287ec9c0eca495d95474b2be445fe12f509d96a3cf0c0d97aeb546460499251553d4698c46364b722c49418b7704084a887e25bfdcb972cad87cc7c2ecb754886d45ce18ce321aa4417a78e8bf7d2a8e8d7271d35dcdc7996dccd20cf4b4ffdc95fd2107990f888a08e41b122ad169ab0fcdd0c1813d85499b648fba898f44957ace0025a69670cc0952f8f8821b5de55da289910848f9eab84912a2f097abd2e179859c277062cc250dbb0a7ea4484dbf1aa8656f5b3604a7d8880412bec135641dc7b7597e6e1d3ac8977e530fc4c06b9693ee0639bbca7e286b1d3655af22dd4abac8b39982c105bc31d915f4b33322ae7353ee6151e582efc235c6f8d25c80ac6ac36f788cb353b622b214d0a06ecc3f98c9774fc0731b3267502434791acff74b3145e05295a8ae2e29d780effa54a2234ee72ccdb4e722de1f2157448153c677af85dd9b267fe14c2ee2b0a29a5c12415d25fb61fc99338e98779b8c1dc13324da8d6507a4a132087d3bc3a273bb20e2d548bacdf466ba05360aaee0edd941678f076e8c6efbf8b650a0c1cbb0c9f7a74925d499fa578315a40a333617dc7118c29c409b06a577c9cf589fd3fcd20eb840ec726bdf015c7d5b64fa2169c76c713da68445e1bd2d4edb5635b3bab5bf823c48b778d0687e113add0a841f3f4fd137972edab6eb9fb4ac3074542fc6d0e2ede1961beac5b9268a9ea6edaac4080dbe12f4c1377ca9f7bf86e835b96d5588784f8a67a74bce70a288ba0b5b7e26d72e99b1c8634af84be5096a32579fb27f9539066507318b1f837494e6060dffe474502c03d76fee2fa5ac4c0e1fae553e423d279be63696c7dad4aa8e1ea000c4a19238dcb680aecaed70192fc4b28fd3babec235541043c5da88307dbbc226a51128a17814c1625bfdb2b3bde2a5f58d632d0263fb319cb1d6f360c623d6e96d719bd051e8072fc6c6cf5f2ea0b8a79abc0ba5f7cfdc71269a8dc247bc7c2464b7cf57ada49c87a4cebc423cb9333dd4210b92da484dbdd62c97148f45ae1247ce4ced906b5c3894a74cb7972ec7698993111b2f388e0da379c86bf7c9151e8857003f79f01ba7ffe8925da81cad7877aab2f2d2b9478e37a35339abb647f8bb315b6f239b18c82a86b589937ba093caab5b7557adfd89e224b641e28217a04038f7e1eff3a87809330389bf9407c0ec78d596e7e7087b124b19b1d5d53c1896fd2c41b66872112cba6474e4fa5b5594da3ab9de83245b6743964c3b98cf7cc5a157ecc26680228b5bb961034e70eb98ad46308f21135ec71ac951fe930385c70e7968704b212664193b434620516a73a18e253d419a09d5f16bd980543256a12401a824ed5d0f73c9f278bb9f233e9da3bfcbe60de4ca3df458ce52e01635fa9e58a1ae8297e2810b02cb0430cfdd28064ae758a456390a87feb259240d5921be78d0e9345e022458e8624fd1f483462220e548661308533f723373d007654e4ec39a489aa1d11ced0b1d9129347f14899d0c9a2c2ff69701881e1f5a3552c8924a70135a60f1edd8879cda134628e085150983c1fa70d609220c4078e8fbc8f9213e4ed45bd23f40f62841e3a00375f34990c33ceddec5bc8a6e1d7e753103cbe6663e219d845befe40ee6ab0be452cebd83361735fa04e0c7fbb845fc002a0a0b371e04700f8b51278efdb89d1d296deed6d50c24b01f4ed074c513a6d115d4b6c48cc7cc14b89c0624e7cabc4646d78ffbb31cb62638db51526b341c09dcd2d77ddda3bf5423c119a1f299c6f9366230faff861f7b4e5bf9b69703e8690a10eb296a868a8904de351f5a4e01e81827d1d3c31ff0101c2f7dcd55ff0dca05e6bb99aeec36220ba42f7d6b8172c384ba83a865cd6854d126614fc53cb22cf7951f58a9d8857d4056d29227995b9fd6d8d1d530478921880583f08c52c806214b4e1330ad37c2e5493f14064041850e15e5407afb71f1c619b03d738b316bff38a50d4d77b882259e60350aad37e70e294eca30d55363064e8f7c887092dd29397cd2a1efc9f0a16913c0e2f29cc0b98e9a0000e4697ea79664640a079ae588cc0a6ca3bea5128430db2bc6aae3bb573fdbf3180ec35b782952189ebb34b18b03c2cecae9fab14f21cf855435ffd2d2d6379fb8831516db9ddcca939ebc56b1c5fe9207deccf56038ddc5e69464044f04b6b2d633584290025e4835e08bc191c2e5e91d61af8770253976c811ad49bd8617e261a23a1f3454a7ce9b4286f168dcb5398b2dfb96236000a362a0394e8ad096623b01b829fc0efcf0a40f80973f7a26f93c81057169a196b1ab766d5e0e3733b068aa49a5eafc7000efc9a6b0dd23053909ee968b962b6bbe6586e02999aad3f3cc91d26886319bc0ab6b288ddbfbd0e6d4faf83e2ab5787ac5ff64a40fa5e09ac1e21afa03dcb4e0687d6699b1a27629e0c3764340ced8fd40b15de30c6c485f826ffd9c6b4743d8ee6c5d6fc1fbf26df82cdbdbfe0927ea8245d73b36815f099863274fc566b62c4fd3978911841514e590df538487fd188f0b7e5f0b10cc6ccff9b35f3165eeca1efeb7630e7a1ba239bda92d78ce37f4f7317fee09cf4461b3fb8cc54b6a3b05916e0567430e050a45021fcb3fef143b665fc02bec3d7cd304a420e9d96f537c06c64a06237d87f3b4fec683cd35ab0e4073ec22e4981eaedb81ef1f72716b9f073952f38fc4f9c79c705c11d27cc1e66954612c6b79d664d779c484843a847ca621d76a88385a360e420683fda54303f2f11b35c54fd1968a1a4b8bdbabbfd5370d6614561a7381f9f6303b7e1a8cdffe03795477aaf6b899428b51272ea65ddb46912937bd1fd1446efb150bb4207cad77fd21f39d41d5771679f50fee03ebdca87a0926ffdb4ad04427db95a75447918697d55b8c69fb6d8ad4f788ae250cd75b0ca0aad2ce24c73003a68e9fe480d1524576e9c177e83348bc3563e5df13c81fcf84b9e9629a67c228dc4f645d6e164d2c280c01e97a1f4dbd846b1cc31151926d17a557fd530ae4a5521a86ddd75f040568974d41776119e5cb910e3a4aa7139a4b5651dde3de196a0f8d30107694936f5457a03c4872d6e9c7c8fd73cdf6da4983667b718fe463ca053ece3aa20013ee99453bad5f2ca6f6ffb4324668f0eb37f4297f0a940da28ad8616059cb6cfb500f33efedb480fd19577b04ec90992c796f1508ae45e88573d759ed034b3ca113c83528780e51178e065842514e15f27017a1d002bd42f331c9015303df9b96e8c1a294c532299a4310c5b9ff2bdef3cc9d233de1392fa1c5d2c40d18720842a13f4cfdb0f183e70c61ddf3a49e163936b45d3a928a59023a0a976dce3a5b84efcfa3e148e3346d688fdec04b8592be19e723e5fd978fc237b93d2038f2209893e63e11285cb4cac258ba581f4244750da27fa76b8b36fe483f070c497719233d064dad945e7b027273dd1470f57934805c0ea1b50876ed38c24175393f67e2a765d4b93a96765a7bd62bb3d10e02b7bd4bfeaae4fb0c8571045406ad773febf7f94800bd783e6763b48ab1ae23b69b723cf57f643ed65e86c3516966c88892a960d45e6189138337b353412bdba4f35ef576d59a7860c46f5b636a35a6e6be15b0ee884dcaa5166ecf5f7874cbf08fe0f53ba5dc2c7f65d4a913dd7b8ff83aa817d98af80967be7df0e47e78fe65609b2f3383f1e4068fdd4baf34bd674b541c00883df208f8b2d5d3d1a1ab835855d6129cde9008644d60119d863beff88042d2f9f5563c5158f6aaa6350a039df7819c3a096d1df582e0c31d458ccce59cdc52932994dbe4dd8cb9a383e67db42f7a43e9bae60a698375887fa50090d259884a5ebb55875a4d6977c1577d4f9fbcee07fc726b531a333ee124b54e586f8ff80aaa550de4252ce7afbe17c7dff9d08f62092c81cb6881bd7578cee6cf1fd35a99282e9ea63d189391c6e924c6ea7134ad22af6cc3237dd4bcd044081f5d4857ad479ef263e5174e6267d91859f1d41ac17f7a513291790fe5a54545e554f2b7878857966248fed87d0d6e097d684ec6da39ccec0a6e48259159ec0d8a57b1914db1596574a0ec3483d9f0b23eb36da1f49daf461dc9a3dca9d15d950727824d4d84d68acfe9016838b84cae576946d09346808cc2c224c30ac28a6acdb93422e642153b5cef1f6e6037c359d684ba8689d5dc9537ac2afe56cbee7822f6eaed5e487e4e2f300ef2d0c3872bbb44566efb5f8b5d4326b334956042b19bc05fdbe5d4830a49bde502c58b37b5ec7d53837e6963af9d7ce83817dbce5f05a2a859f916d8c65954296e143b6dda6b44c0bff77fb455d022de0ae944094b3bc444381f84c36b0d2c76305bde3e9dfe47d2cce9d1b94dec64653866a8802f87745f1c46287d3f72ee4212f4025c1f6cc74f3204920e47cc9126f9a966b99b8cb2e4cd65d282843f01926a2c0f6a7202c1dd86bb89c38c55d63a993b07d520255655582374a1588e1cf8e58675017767a2283135c7c2340bdf921963a0e26d90c321328e749cf26d48338cc041afcff1</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年2月记事</title>
<link href="https://blog.cancin.cn/post/b2e44bf4.html"/>
<id>https://blog.cancin.cn/post/b2e44bf4.html</id>
<published>2024-02-04T01:17:40.000Z</published>
<updated>2024-09-22T04:39:39.394Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="5fefdb2dfdca3adc1dcee82a2a3c7f3f405775137b51f4e62db669977a863f93">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc141320f3768f7705942a27c7d9b3e4f09e30b2a8ef630dcd6b8315761d5118857db7f9056613704187563cd4617b886018cb01450a5217db4bbaf16d3514b10444ce43eb50ffbd1e556babe14f24e9e1fefd4a1613313a0f39a85752addd1883ff2fd777f560645c7a17fff57ac63207c485337af51f51353754e3aa80ea13d16f8ab13d17d8d2d7750da7d3525e48fd66f888bc79f24b5089413a3b6ed8bfabeb86c3f45e9f9bdf9a056132cfd4570200370d2fcf3dbc72f7b66e68503f9f870d415b193a3920fd747b9e9cd412d2af0e893c1e8864c54f5b55e8695dce81c0798734b15b145299d719a5169c62369affb8edac2b0e26dd5d28a5b463c3ed22b895beb9ceb392196ca456caf6639c0b48a84dc6cd16b5f01011ee53c4a46f3769fe23162c0a28921001a9ee78bed71863bb1784753f6c4b1578cc199215a1637738fa73dd5b895984b4c9d73a986387ffa4ffd27741bcf9d159d3db77f91b931f20d9668968b79c2c74813ced4083aee4dc52a93627ddb125390ed2dd423af30b948d6b01c843dd116f250d7530b12a1e5626106ecc63f2010dcc7210bbe9bcb4dc39c18cc2dec53bfd5838e12d8bbb1918acbeb08abb63ccfdcd26c12df4f00cbeec7cb3d3e2dbaba7748ae36e692bf7e43695aa60b8f8385538917b368d2aa2fbc549d8232d41985dc757b4c66b6c1806f9714b27f3db0f87e2709398448e637dcfbbb3dd9384caa6221619c6ccd0ab471ee568a7cd88dc2be877769377927e4de311ee10e1b3466ff203b3e9e0a38fa158c76d9a0b8f3d008a8b70b6165c8f26515bdae28cfa010c08c4f1d2c65ce770e3eddcbadd1bda0688bbb567201ff5bcbf808f77c746f3987d988501907ea86599cbc3bce020279fee4b36a04cf204e62b686529a7b38d1fc27419fd1eff4be07a945e2a3e02a013b3408154ff12d7e50891a4a5b539cd6264952e9c875c1ee82b7c8330c0c5406dfa684103fd934d7ebd6c14f41aa9350424b1c811b451d710b57eaaa4c80fc70f66032a6d695d0dd2289129cd874d5839a22dfe4e01d5aa81970c0f2a9f20cb77a834af3cc1108dead9d0a9627524ab32529ddcf98d1b50e8b2bafccd97e0c0235fa7621f52d398c918650806a8693939e528b95fbd05182c04a17dd7fb97e14ee7cf3d1eb6d48de94c63914f9c8253bda5c23dc3ba19c5740f0b77218c294d0a8c32f82fe71f88fda5d07ef991d13436196c9428eeeaf94f1a57a6a5a9d168feaf0066d754c503deb89257868d42ddb582cf86f06d7b80d0e6f40da96e3b885f3cdbf5c6b6c1bcf46546f99e605d5bb8a6e71ed072248c8a6e2e1704d9ba0bb547975aaf9ea8e55a28b0cfc8e16710d2c16077f78cee8fc8eae7c934f9293040fcf5079165a03033a1f0d35540ee1c9742ddae802cd1f9a4df6e48acebe7e7556207ad48f516888df9a5ce4905b9c1852da8e8ebfc616584e5731fbcf741fc288436fac9ad25c0f1d1c092e31d327c92638addda6dad399f1f8f1b0881e07efebc236aa01e41d1aa9d2566ff8f79eed4abb719168d161bd7cc9df7314480fd772c5bdabf29a3e5014e018f7ce92d38631d34c85941c2b5996665745caacc36d992b86aa084b9c27a1a298ee517e3263cdae67098ce660d731fecfa76170050dfbe742d5f6ba9de9da167256a6da1c28b116c345d4c34e084041e7c5c1a0a141fa136802f30766953a43571a130ba254529bcfbb03edc96a464e42810db5a34bcfa506133763f962b1292852722dbef298b2f87223b36e0c2e1317780ba434f20783c53d206407c497f8f4ad64bb99356974a278738bf3c6b3121b4cc1a0e31636055466ac35949635776d9b03dd1be95911a5e38710745f0f20893d9c882cd627668dce3b0e58914663dfb8af7cae25185f9acee41da83f9435924f3cc9fe4a41b75435d772479952b86b4737aea3131ccd09614590c02eb1d21acee4d9a5053500bd16f28329c7428cc3b6c685f4b51f2c50954a7fea62a93c9261447fd52224d917ccf6582a393679cdab95603ad93149be73283f6b3171330dcfb1027ae7b37a479edecb87d467688a193d03633baf0410ff1ea202bf7f91942318cd7d67b049369801e7ca3f7855de5cbd70f758c12009b6df8ee3715db524f1f3e741004bc16701694053348f482126f7ae947295453b650a35ab72cb4193b47a28d6cbf7b6579aa1ec3bb0a8a2e9b8697ce9cda533dfcda3c73d6237b680e564b75d061ba64df66b07724acc5020f567b358a4282a5e660eb85029754ab57cd2e990231a50976b946963e5eec05b985cf49b047344d136c518ac7c829a51c374ba92c655c7eeb9d36e0e67fc15be31c275031888d6d4b7b99911b3908d7883068897fb65be85db2b718d03d39387712accd87ef87bb4dee0062e936773e2ef18544be6b1a3b8aab322766c52dfce79ebc28182c8c449d927ebf5bf8b11a572109f151764d08cf17bd2aaee0c472797ce01bf67f0c7a3540f9de7a6085d295c34ba723cdc3c7966d30dea8f0702d4aece01ddf3f9fe79275bf7a31403b81e9e0f023b88c9cf6aa9bba9cb220b47d4ecdd0d16dd6fe7f1e0983120989a78e3ee1fa05cd738bebf5a20b230249df823b44457df2ab26b168a810235eeb6c992124e4f40d8ea3e0407ff86a3480ba76ccf6129e2d0067e5448cdb9d16535fdc3c74b36664c7050c0f1b0f37de2e7a76b8a83f04d5dca0c6d402611ae440160b0e1cd6048425b188eea73d8e497df1ad14fd6956f4c82693accac6c4c11929c1e5b228f6c27c398895c39c16cf62621839f5116f4b9f186cb5b6648076afadb9d510b7e91f0d32c5b075c1962ebc53477e2115638c5eeac378623d73ff4cecf62f2d315c62153ff24629c93c92840f8a27c3e5d8661b2950af38e004ed0ccb9b71e65dd35148f5501d18ce305eb19a6113b79e054bdde2d81b92b2872f88f5a3f8f15c67c9ca9c5692f41852b32691cb0e4f191a5994dd9239af7b6b71af977e63e8d15575a1e2b0b35d21fa2c295d39a6b67a698739787a8fc02bd3500acf6caa73abf95c0f94b3a929b0286a4ac19cd31c59e76c561594c7303aa8d805d689987d3ee99dd7002e5048389fdf18d187f7390d359961fd9a8b3fa3cb0b692603a651234cbd5a6f3a79fcde881b89c7beea15e3e11725e80c08f86886eba7e49290f8f500ed44de64ecdc5a5b3e4ee8ffa5957c0acaba9abe6752b0cd803540d686b5b975bf060bece3926f940d87eaaefdbfc9139d3452f11061bd7f426b267d313254840a84784ec06a0ee030609eaa1230175b1e88d10b3e59d33f1b87a7ca0808da487855c71f95e5f4c59937d19f9d02460aeabf7f8ce01d929bae38136e68dc709a950b2c187557283b2a35ee1e3d9b463e6eb1b0549244a8a6bb4a87f9a395bd885cb3c1ae499506992a65f8af2573f7f8e610e4d645b5f3b0e6293949764ba876284a41e756d63f4a429d742554ab6564cf34c9f261b63250c1d69848733e91c543e3494ef66b6e720e7adb666b5600183332156c045b498f45140d0ce06d91c84012af7822e3191a8c3cb3c874fb4470bfcc219e53a9771279f7c2f752cc674d9d67d41bfd0f214d085e38167f24ee2bd68a98ad25bf610d99eb3f293df66657662208ba76517194c9018dd162048c0745ebc780c2c0e1d86c22e33cedbed78b6bda781820559b3d9663119a5de03ae33ce564bb140967ff3e43cd85190d541361b628366a3ef8c567f1695abb00c444ec1d99b3c2b4e2b47c725b5752fd27e3ce13a3dceaf34309c39b1a3530bd1789f73627d46df4eb20ec9269c40d14c07137eb5c5a126f2162b6e36e494e66a5d1f76e9c265702ad3e2bb50ef2b38fcabc9211d3d0f9a5f08e1955be051576d84ab6bad303f8f7432d008f06fd98d5e135ba92d64046f2084a371c7825f145052b112e0045e6777ad2d8063443ff586dd105627c41bd76c4465cfc5be577b35612a715931a2c93e14bfc7bee033da72339e4e3bf2104fe9e0ae1803480f1bb43fe0b3b5728e90032796d7a99f7e2ae3ffa6d7ccdea60f4467523539dbaf01166265213581fcd48adc122b972d33c35d479cdec5d0a1a365cf9c4549fe5abee12054a38b711d13396109484788d2573332794185e8ffbb1a2186c6174b419f576cf8299f723367a9e67366c2d7b5c6c11af901ba65e714e8c5c2ee8fd5343ee15cef4a5c1e293587c25cf5dd463af00a81640b32d7ba13add7e93ad7c781f153e50444fb3440e4ca40ffb69671c88ae715d96f29a5b336a372a8c8233736ff6a22f2b79147ca2abfc6052540517e78df26af61ea353b7ae3f6ec1a051d013d0c7c40be98302571d9023930c8c5a3eccec1d23ca66d7558664ee1df33c4a1b1916b05dc6db5f42a29b404dd489091922637976e75e0f7ea34458425edc22120916a1ae0fd13ae53d705134cc5bf89e173b6bf5929a4a2f52ab1fde9f9858761207b62097c2afda24ad387076bb3e75838b9c31fd186d86f9848b71b85e080beacb24144fd491685c1382cc4ca1bc116c1d4f8f14bf76fa24e2fb63f0880e05c41605cbe5699ebea22a6a68ed9970b514e6068577c1bfc74de321289249bb9c70b9cddeb1c44a92f8916a42cbc26fbb83a3f3d871abd71eb90faf8c6dbc24f460dc638971a57466b8c5f6a61221600cf5ecf4afe22b9ef49dc8c8aa31cb19d19b6fd3d37bc533a4df5986547335015d72b9c518b32d827356102d01a39ff097493d1951004de8df183f6f183914f762e4c678d46a570f7c14766fb17587397e022e9ac2060010038ada256886a9840c0eb4e47fb78a9961ff267d55d9cdd7698cd584112489a8b08f1f44fba8db5c87c1766b9fd9351b88c7ae44ad7125f463b0e2d2e12da966f836001dcaabde1dd5c96078db7f2b58c0db88d330b5fa7eac1fb6906a123a096170bf937f3cc173da573c470593553aabff7cd5677e2c3c4a492f71021a24bb93e956e93f9e1291340c3e0ebee26359e4d0abf1f30473f452f49ad18df398bd24b8c464387fc3220c3f66fae3efff2f6d82d9ad1cbb457d57c412270c7caa3118cf699326e1b06f1a891c9c99c01523925f315434f3db897d6a3b29fc53690863eb7d9c6f139d789a425f13eb64fbae16e1839818b6e63e4658c5d94b55f2d59c0c35d679440f23f870771c1d5a80a1c3a3f7def50be71e8a6d6672df4e69b20b9354ea82e92898adbac9604cd8f45fd54c1effba0280de46b97f02299fc43da3f941eb971a73cfa8b564a01d900578969d2ea0cddca22b7bca7daf14586ba69113102078a0dc9d931fdcbac09664cbe28c80a2ed035f88f5bd7439372e4b30e98e108d60392fc03a5f648687c241e0ef820b8c2b65d38210a5b7a7ebb7579f6acbf9f3265995af537e50823fdf58ce4d12452e1031229b47e3b9446f7ed0dcc0fca50a19ba97b4146350dd169e25652e02a4c1164c6567ec2d9fd72c1f58cdb4f69ac6d4cd6cc9e03d10631a33593c379eeb3fa162f763ab0bfd6b31b16ee549d16662147f6d067dd73eb503d53c7c6aa836caf18e089955908aeee85196c025d542679a722713e6c76ad0caa286b1096fdd3499d582bb52a99af800e6e30bc0aa2fa818ba7af4a5a13b5c67737311ce85fe8924dc3f4f7d1130d6af41b79df9c20fb9c2d143a6025c202d7866611a6e0fb85a37a53c4de4f304ee4c64a4052e016af8c7597888caa852f01de0b1ab2ded165e751aa668216a2c61e60728aea1b4f7fd79aa12ed714807ad6e0ada7b34b398b0757bcb76638317a2c7136a6f1001745df99ca6c89690a6ab75f3fc031c1644c56de38ab24e38419dc207b711e4e6b43fae82709a4b80a593e9e44b61484ce6ad020fa1e9f6db79d8f6b40ded9f71fc8e9e80415490b9c9d9d30bec5a2aab8c103d156b31266d62d56bb525950aed1d8ea6845e09a3b28fc3383916f488e6b8a1bdcc9c0f267514e62e5e998e68141adcddb3948f80a9e8330078c888f623524c8a44af145eaf9c1cd5887352cd287532ea89ba52693b6fcfc25e73de8b12b2f439b8547ad41ae54009d2540653aaed6ee4ace35680835425f7829de267ec4b8046bd3dd2230911799a682b0fe99dfc3d483efb1f9f9d1c05f2e9a8ecdaffa3e2874983bdf37bb9ac336370d5da6a7c8771fc94149b6b6ec59b4aa15a2a509041934476a1df9e03382f0aa50822a986837e8a57d463d285a951bc4bf72776974f8316642ad19389f960fe4c7e5fd4f2f978ae4cdcff3456a648079e8c310efe153ed6a0421a60498c0f8ff87244f17f84146a3cdfedb01d9912a38b18f40ba57236c4d1dff4405614e317b62c171b608deb581ed25e1339aa15194404b3bd8e69d2255c01ebed939e589e12303fd9405f55ee5e67d4ea39b78271b4ab0bdae65716c690f747e8094d0e1200574ea21e62fb4ca669716b8ba8b8e391da82df602bdee158110c50b405c052486ae9de60b1d860f5b694a203020b508bd5f4f483565ca999447e9725974169e904b26257b66ce447aa39420039428806932a695a510180eed896d931db78fd9cf7223c855ecb3a0ffbc87f2e3f47ee8bbccfe3d2e0ef6d7f30e9a3b326dcb6c2d234c498e409bde817db446ab886740283d1a1ced49cb565796b3c877d945f8ca404fd8021139c1a9c89b7d2c8d3aa1443df1ebb8ee6e53cc8a5c2e462d354415a16596a0a24ba19410f8651dadd43b5bdf4f6fb5106fcb7556f6bf7de78d9ca715c0c586f01b7a76c7ec0549bbd1e47413ff3907c9496202b5d301e70bf2edac28dc4357f1e8ccc2d0d45d6947e68ad2bb68a9165c2f81c841cbe0301f76ee30cc21c109936d59924dbe796bba15ad1e1c4732f13639b54b687e0d4957890507ec3cd2aa40a8f6ef04f1220a5556ec4c5c430bbfc5d3f4c307d96ff7f42fad852f9e21ff1c943dc9e02857f44677744561b7280d60ec7690c12ae44dedf41ac8d25adad9b87447a073eb34e606456472415ff2f5b41750e8afabf7274d186daf2a2fa2f9af9bb374984612eabec070d3bdca077c5ec3252be099bca3eafa5861eab4b41ef36ce0b49d1d4d30b2254aabe5fab7482d30c6529289c5e9e3f5c3df5dd5a8b8fa8a4e762b65f3a887723765508b497c43aedc2970eb880fdcfbff592d9470cf33a33eefa27d5b9df0258866c4e35de6f20599f4235d1e0e722970bee8d409854f105d39b78eff4ddca2eefbb2a4d7a70a40565a231df637c80d9e42685276d99026a265e38336498f1c98924f090ac5dd7a77522d6664ee7e5f8cd939b0b76b78f689b7d07ce4795e169362a9ded143d6df19fd91e90555c961bc5fcbd83020dfaa487635cc3a11f1a414c9d8caa25dfe5324151764c36d927ebf361caba396125ef6be99692f897fc17fa3506f13e12869e5db12c9f2cb6b99ae1424754d7cae6b5903ff51b4b3fd9f9a890bbca4f77741841865087e55fc8fa12ebb33884d1c19e43b28e1ae7fe1f1cb97c0f5a7668b86d8a6f9c92d990e55d8e2c56c7c7eaab65fe856132402fa03beb1b2d70b7c964725991c3e971b0c0c60750a30ef149b459a00e304999bd799fad5ce12a3c0f803ba313f70d946fafd38e0345672ec3ec16a319050586da51e002009e1e79de376e302738a4da1b21c4eb332d6387d77c4880bab2959bca7f3536aa88fd14fa69220962cbcaaca7abee87757c9e52cc9a0237275d6cda9ade3e13c189c9a917ba84e1328e07261e3d3fdd618c46a0da1945cfa703339303f7cb96bb9a4d38d24f50a7389e2380195955ac8030c65f280c8762bdf610f4c2f8b389b3552fa11aeaf56e6e7e7cfae30a87053dab42f33af2554950835fa7eec9f7436577252089ae78ea49b01fcebd2549e0e1e36cdf1ebdb6a396b119d78f8cb2a9893140df91f8195c11284eeacca4fb35c3ca167eea273cfe8b2e18bd3219ef22161a39f7920254893c375a2dd25c865df4b63724dd3607818faf343738d8ebd934f73c1112dc83777ba566d2259a4dd5856aa129663c5682f218be4b8b14e6e0e12a1558b21b9b4732dc3cd0375ec5ef908d7b23eaec35001c20682537a2849f546802d67be0864396133c33351c87caab925410e8dbf8768d88e770ddb904ebb915c57a3adfcbdf3e6cf4570d5815cd332c63724a6e4131f9215c62235f4209b175393de21a7f4aa59092ea046ef22d6114490d37bba471a3a41e6bd1b56b077d895a6b87fa9ea585cb394e852b42bf99bdc12bd6d20ab938a46905200e98d5c57d2ca74a8c7843905d6791b81b2867f4891914c61c9b33cedaa6132b407bcdc9c8294f3e375ea4a879bfa713ff8a44264d2bc6f67ca92a2ea3f224c29714e44672a19a975956c8621bbaf6e98eaacc561e3203c9842e93916557ec1ab069a63f84bbc65fa6cb78731780bc1065b9097ef18ea0b8b4818b2ae4e59dfef597786679184666780e90cdc2226dfa4ca4b3d0961d2bafc2667b609d1b87804fc07cfdd04d07720bb7cedd68089dece15dcc152b1bb5f2932115730efd77dc904a94e2a95e18fbafd605842d07c9ed05ee88bbc5818b4fc8a9b99bcfa87bdaac2ee27561b67548ecc336a8d26d151592d029c6aa55cf1c14eac96fb4f23ffeddad024949ee7fdaba306481598eac229190ec4d625c2e3408609030318893f0baa62c7197346ba3835bbc561fea41d40762a1498232779eb5508b2a81b767ad32672e6994f6a8daaf9d3dc4f6b1d7638fb9d9b6f4eac748442df35b3fcb61cb096023ad15f00aee32eee2d8300b7a4d97d19eb7fb188927494d3cc957d1b0053ddbed407a2cbf27f1441f4c5eabac4a7346eaf62d0efb6ad69f4d617016087c311f46413cdfb340d2f8e0f511aa725d0507ce0cafbdb4761be2ab7c80e27a594894bb87e94f8559c1731c5de91445927e6ed4f0df3c8b83e2751b52b2eb437b24197af2c07111f01970764678801f01d5dc3b20d2cc0b534e4e4dbf06c223d5d7a822818d4d1f6db6dd71977333c876b2bf53feaeaf545dc6e71b58e7353791571fcc53521664a4edebe2ecb7b6d1dd5cd0fddca4f0fb947d66ecd318be78a920ab94eea221cb663589ccd5d686618786bd46fc0299a48598d7985e717ee789a10289fc2b0f9079a9931cefd6fc34e33248b1c66f9fcfd0270ac364a6f69986e1a0e1fbd681eb03c7bbe6db6d412fc988b6d6cf85cb627fe4d3dceb680321acb1c870155be51badbfa227bfe27a9f696e3acb621b5204bd7a0fe050a11eabe7f81c673f1d0536ff9aa07bcea3b026a61c8a14e7e920c24c55e1f694c4b97f377662c58dc54f151143c73b7c767e754a9756758e204c47ec9cae22771c6081582afe352b9b28fb9b02a06fc238a11214617fda40aa1fd6ce9a279a468392c62af811a5121260de68293511fad6c77e7bd556a64f66ee0a4b705da618bd404732181c3ac9a3472f5d573f4179c368b774ecab3d1e3f008c1b51cf30adb286cb325b8be884210b727fe707c9515428886d3895fee6a8a4d542133d7075355aaefb16c77528830c57e8c09ced376e9acf88549e38c97773135702a56336a6aeadef76c5cbd3c2f854b63057242ce13023f70b3da2e9af834a408b26d1405b62037598b4e65eed07464ca8166280e9d7b9aa9fbc382c8154c2e64b0be737d6ae24bec72161e5a8ca9a682c7210818bf7df4cec1ceca4f43cd039230846192712a6abf6fece04c3317de61dafc367cd4a6b6da7decd5abbb0c66aceca6fbd96675fe5ea94648c2eeee36332a092946b22b07e713d78e66e0464bba6f4cb3eb8d5dc7fff2b5a562f4f7babbe816223753d86d6ffc225ca3db8c5a9d8f4bc372db7f6797d68f6beef92c647c7214907f066cd6edd8c6663bbafa38e1d7af0eb6d858c670370a00f9c2c9a7f1e24d6307779db68faf7de3e887e5948a28d2430f52c1d7149d4af05c355a11c1a1cd3284e27ace1763e42ec99ae8aa984d3bba31b58765c9251cf62f2935f7fc45b04da5097335c47d78797c4d2b2d51f106679cfd855c565dbaa091421c3bf04655ba6c52dca1dae1bc728bfce8f5208d89993f78102fbe4f7d57aa65c638bcc544b99f7c5d9375b5887eeee763122abc4400585ac23a8dbf0663d6f50c4ec18f2ad5edf711ffdf9e62d5f7038e597a454114643c9c5a53cfc5063a5064bc733de15ec6412ce7137a459e1b4c16e980e40b160137fe4cfaee12557ffe020a2751bd2f9f5b3bc5f35dbd4465a992f55bac6da429c3363c37f19096e890a9cd633a5b8fc62d6c4171c95c64e4e64c939defcf03b618b4b616fb6b482b1d51465ccaeddfc93d40e97b336706e1c1fbb4491d0ff1e33f242966dab71c2cab3908051333b963a4c150ffb532e10a0323e17fe48d30a4258c286135de6c61dc4a5dbdc95321254edd9927988a7a4a27b0f2009a61804a80ce92080dceafe9beac58298f687646b6c63d8221dcdc22e7ab6ea87fd81d9b56df5e8f9c70e3cb1310a0cc055dc88639b34280a4fea990d869c9fdbc0661f3bd27de9686c147a07c7af5b47ee2a03aa07d6e9281cd3205cfea8ab5d3d51bffc5a327b7eb1900cee877f0f7f5ebd88730cef7b6257b6f34bba4ea25d765c749d6ba1a63c2093216dba9fdd799507f7a174e2c9becc8e0d50d637dec55ef1a25abcd99e0618dad130347e161be09047a0fc6bd886b02661e2efcfe6b62c96197ae27352b023f17665c770db0e45571b4612c203f0fce9dd163d615c5a8613e74b640669ff3c0848c2c1f77586ef16244587f1ad7fd94de392e3125a52b08e0c1b7d99f67e90b3aaf2dcfe0e971675885dce18e09f11436ad6212dca1270775d82fe636b6af729c025bfe5fb6284ba66c3bf2931dbd34c63e60d8d44d2cf58841adcaf9003e6a6095848d55063b82e1191a93b0749af0dc3ce5abcae45e14c45cb08446c645455d7ae95f3fbc49995c4d28759cb436ccb2eaf56fe43e77604aed3d3147cbffa6a573a0e673c52b2062f54f515ba01a74d5a171426fbd48fcf711f1ee88b565b060c2a79373d95a6c2c2c4f968a5f7d42edb0e23dec84fb34bc9267f92ae3a4f64b1bb390dcc463fc8c8b234e3155937c618fc525010a5bf20c7bc73c1a849e9b465905bf3da8abad573419f929ab4c7c4151292a84886f6f546ea0aec2a6292c0673a76e7898c0e5296ab51e073f1daa54ea9f8f3319bb7656466ff05f56e10a4823962297d6c9ff86976538b24391ca1e01dd73636d0d1981e9a100860b06c34a3c45ee7c85ffcadd85cbcfe1e803c85659491793930f44adcf1a49f20779d0488490a31891b9bbc7cc762495f2d1222e0d22e799fab62235e448cdc1447cf4df88c176b958ae94894f3bf9bdb41ebf70e87b6826001e3aa9c368e2cadff32d7f2f2b39a47243f9634cb1d74e1f33a30de74f55cf6c778f1b5b914b0db5427d41bf4934c52df0bf50b1a662f203318fe88976a49f44b377e8ca08280283e229044ae0588bd1622122f010c87974e7b0a8fe6978db249d467f1773cba1e4e75f93c03c1e3c8b9ebff4cfbbd317908762beafa371b86a4672351dc4e67609fc6745bd2a19dbdad237e8a47214da8c35e9726789e118793edf9172abe6541a661ee2d61d2be829dda9ab61adc9bb6d3e29f61d1b1ba9ed2b6366ca5ff43e4d4c285e7ef0e90d14d54e9a36536544a5a9e31b69d5ddb1e9dd7a35a2b282aafc9cf336d320637083646080d18380e85beaa0c848e1cc5ff83a8448698527245fa2b1064f5f14cfca62b6a5faabf97e909237474f1d4fb66211e1303cf4c2296557f2f1c68f59393ddf8e69b24ef2312ca54a956d51f14a8c0b872800c83fd8305db4640fb44a0c1cacb351509b878deda1aa4ca9be549f91efe3d68fe34ad83f54e3412dd7278b9d1b7039779b135fc2afbd2f26183e22f98851363011de1e2d27579d8070c13fad60fef8484e83c92304ac6750a755bb8599b8b6b5e9db631d20ded47bc4def7d6cde0b40fa6de25a228b1e7a7507b8e982c5346c9be362087faae89575e419e71a18a70160e3036e701efb8a7bf8fe6e858d12e6f26e2dce5c6b7f92131ff57202bcd39f1e5e8976def64471e2b8de934ff4a0d4dc9baf1773ebfa149d2b0b0b81ab865d73ef19f6f4df07d4007a3163440f22ec2361e9f93a221431e299e53b1b511a4f36536a42447e1b5eb3f310dc51f56274e171f1d2c5c320caf77396cf8bb5fb4f6e6f1e3cae2be3def08017b2ccbe9f7043157f80f3330442c5f39d6980120ea99be14fae4b5af81c6bb0b0457c3e78f0eb75c971c9bac1c37301fdc7d5f0b0b965b3b854af26754568602bf91054e93ea62c432cc88e9a9cd6f65cd3af81a8cb2e5957d69de49d8f626ac9137eda3cdff7a10fc2d603fe6359414b9e3eb024c533e0ecf897d1c769ee3016d64492e33c18ed0ffa3cb9db62fb5918a4c81ab911e67cc8c51e0f8e0f278bd8c0dc25d8fe3f9924fa6df584b0a5e12c2368e0310819255b505551d223e2161a07a9dd1b6379072025be23d7a8e4a1543bdddbcbfaa45c2d53728cb0edbde41143ef8a0bccf1716f9c9b1e075a971cb00fbd5bfe6cb94a318ce9fabbac03fc34e14f3e0558a019e7e122c33ce8df0cb067fb20ff17d0a522176afb35ed611fccc43631bf614e17dbc7ad8d772fe87d0b68012584f7eb4a14e6819fdbf7fb34f1c740a74ce9e3bd29f960bfb7b7d2455596346f777da9d6657b2667417215d314fdaaf216999d7cb82a78aab65e0a373368386a7734bdc8fddc98f8913db071a5e1fa5c7c4fb8874fcd15e7f83cf106b00aa1a12424d9bacfa3dd15183eadb348e5e5519311d6169c7213ca6c1ccb8138f1d1033f87dc2e9def1b66bee3b785541a3ec0dd7a3f19b9c4bb5295e98a0f772af281512dbb120f9a1c0c26366f357468795edc77ee31a449ff7664f803c70c5b805d221b043b66052e07697e4d40d3442a2e5192de430ff7445d36246f4b2310f81c4c98b3382ee1369b5a9ca010e4c0c2a6daff800929f29f03c5df22b6fb4d77a04d2021f1fb56d92a097b64c0d1d61ecaf9a06c04c1a28c51825e9996fb5ede1455101921ddea481553de3149859a80f9705b07e653e6bcbddabc3aab439991bd8e45b1c57fd532323b868de878adddaf24c3e3df717e87b8c907bd0597850c4e104e38dd20e8ebcdffc417a5e128f9a77aa44a352ab250b5b5fdf07c065e9355ac8289bf274a74448ff016a6f1091caa72c7657cb755482ac249a9d307cf9e68f453083aa9c8ac248b3097f534eb22484aeff389c9fcb84fed3d1b9daa1c36d69536f134f835a5cdc058f2b5bbde5d802781af66f7c2dc4ff9bdb0126de8e57a1249b1be0900c54e10826c2a78cf58222e2257884de042d5d8e3be11da0339b2371b199f329afa3b14143824393a02614913efbe05272336a866626dd501e1eec855e3d5f8817b50620925d6198f6ccc4dc28bc0b18dba08b340bcf23724b41219a98f6e3c09d92e142db17a69f33870f296f423350676a92f05b13d1ea116a8c7b9a3ca776cc14e54476849e8eeb233768c1333bc06e6e609e45ae1f2628b22b3681a5477d63a3986e8464674ece73d769fcd1a9da5ecabdb415e4bfeb5e766e0d8e1c7f6803a6ab87eceb2ad72d99819e8d39af4ce3cbdd978105ffae01982af4a978ca532d91e0d19407d39143abd8af1ad97e422ee86a20793e68ced4bfec8b11241217b722f6d543664d89766d1fd5aac3e5aec1c2eeee0e70646ea8f36b8c48d0b977bfa878c061eea131e247b0c08ad98c257a4321db1bc9015851b315594746bc2783645a19d5ee4fcea05b25195f3c070347e0ed3a9a9ba47912dbd0e1b2a9765cd4f14274026db1f887d5d92074a051c5e96caf379fc0f78090593401b30cf2572c72c9c24e7b98ee4b55e3e09b29ae01fb89f5001f7db2420731bf2f6eb87ffeb1bad3d592ebb77ba8437aa126168a326537e9baafbfccd1eb0d623472552fe73589f8cebb4c1513df49b75640f8150c4854520c2a7b34e881a5c10aa3b62f4d5a5d0018e7dfb144ff5e3c6ec47244a4867195039e0c94467ebdbb751f16df893a1098a3c83b8fabb86fe335da83ab898af5764a055d9d702a35029cd66a166c855b5fbb8fabec926e16df81129ecd613bf9977fe6a96a242054bd3271be1395f0e9081a3a3bf2dde55f4542e642b0101f12c727527c6b71b3362f2979bbe4f772d97ebbbc943708793740ea5e71979fb5e731a96632744f7c8d00bff9f1208a4f86640002bc686ac15431db51403db72b03415aa33d3c7e1ecd3a02a9eee608911437c9ef0f4473074d574f1a13472b406d104965f5e067c60a935ddd3734b21a6cd338bd3d5fd339e54f047b1aecbb3de71ddc5cc7758fb7da533ffac56a6a4b52696b5f8e4b470ff298bf99163f9bcf40ca55bdc914be4b7bbcfe160df06cc3c7ffa592fec82854edb8037eba84fab65c9874c5b3e5c1c6054c07b8f5d42659486821db047eeeb25d17125f572187f41ff575cbf1f58e3bab084806da3fad2a6bc0ea85fa84b4f99fc2cdf508d919d6bbb6bee964dff186571d8c4814ce238dc77df200c2b61908bb40d5b52e42ecaeb9bb98e96a826bf784fb62e4df2ecf939050609e6dc22b04026a50074329dbe424480d911830d21721a397245cc1c7e3631fd037748b43e7de25b1ca421e87d43eee4e9ad478114bc63d06f849fcf65df6b0e1299322ae798f8be9027b3b35ffb02ef84dfaa693a74b16654ef4239db54e4b2f48f18241cb16cc8ac14c04a32a7bae2f036a23d5c9e67fb51a5a2ba0bc3a6ccabe4ee9ee88484fa06345dc85d36a31c9dea826999863d2a2cb2709aafad16f2e3f250335c135ac2a6ee23c02c3f32760bf473ea0fa5652843e3fd8ffd1758de523f811e5ef2db5d978815a06681ed80a314ab075da2eec5de42b463836c2d234c32217339839f0caaefc46b211181f125436a12112d02aeada71f2a972eb7e8cddeb21af5bfe0e6e373c7fc9d37153d49d743259478cd583137d4305c6bfc795949ea6592229c2bc479e19eee1e8f01726ce4fbf8787c3972a174453ce51487d8d72d2d15123175f3b385f546df994ca7ecf16dc90832e703ccbccaab6531aa1bbe81a1e4293064ba21cecfef569eae48c90a4c4f4f434e6cb59fa2a581d1864a8546ed72d26a40f59f34f005fbb6070cf38bb157ce037052875407dd09684ec567325bbb010eedfb658ea17975ff60d7f161689b01b0182d43d2a8ff7523ba009b9696d624b62ee5191fa6ac5ccd7efa8f57b8f25c1b43d3abd21f6be4d5b1c51624185687b7bee137526e058d0897253d4e613caec5a00b6bd82e8705b511ee5b82b58f85ff0eccc921bb5c552af28ae04608dd4390dc867ef2f8aa9b1dad5cbc375c7dde15f5078ffee7867648cd4f6cb57bc5da1ad70a5057a42541f2f445c7f9b244b698b08609e70a84a2fc803fa9c7a769fe4f9d2e1599d5664eb0454c56d0230d4b6ca09c294fd6cab8d0d83af26c87eb9b6e137a848571163665d4c807ffd923b7a96db9261e70da3f13b2591b411e7575097b7a400b83cc2f95fda566e048b5e5fbf56f0b536ed3b1ac95d870f4922f83f507020908415e63b57f31f582b53c0baa2531c23a053455942555dd39266db321a8984905aa66915cc2bb5cef580437224cbb045703f870aea97cbf3e82897b2a5cc52d35b161c1b0b5d6115a17c4a9c2a271ad8a4e9f224ef400608e3f416e0f9fdfb5b6d63ca2e314f5a919b1f4466b490385049cd2bdbd18d7afbcc58b29d14a9ea02db074c49e2476e579e1457b2b52c949142d3590580483df1c8c2941ebf18459a1dd4e93bdcd740f93e7597f966cef84eb208eb4f1e2b6bc1bd1dcad9e8bbb262947da4c3fc41f8edd907980b326c6a051a55e18a877698b776393db3046fd14d8f97eb9cc86908e4420d4b4dbbc3ce940b6585f8d550b8d1149bb617c61768b5b90a2ca7f6b38241d5455dcc735e5f776bd2928f929c389af992d6c37f8c9e3388e181f6bfb6437b4c256b8bc94c8365bd5ecbf6e58eda616cad5abd104bba9b5d9e3693d223da1f9478f12c8001f50686126b8a437ec4a48df3a4d7e469543270fdb9bcd4658160dcd959edb7c951b2a64314c5dcb249c6a1f94a1bcd00ac5a8286dcb870e38e3615a8eb1913b84974eb59a4cccf4000f87947386d7d444c42912e5e8030c9be7e629e2d51c37ba9f837820ea4e29912979599de6cde4101184eedb51a0564dcc3a95a70a24dab7690ddcecdeeed61466ff1c81c4e6bf4a88665aad3ad56835210f2975dcc509219202f7890ff38cc6fb57e8c75f55a22624cae9cc15e81e34ae02ecaf5088f48e97dc76bdea1ea65a826cf6d0a37850596acd4337ad39e0e4199676f0dbffbf93092ce206b78ffb1ef92e54086685a48b6f11a8f97e47c08270979200a267fca64f954b6e138ead829015844b6ed962b7a86cb8711fecc22f1d6311629245a96d6dfa00b189dd7b56d4421aaaebe7bd4d944d22e808c0ce9d0adb80d4906b206075621da4e486cd7e494385d64cd18755458bb3ed94b9b1d3f23de64d82b4abcf5b66f702909b754a61cfb7aca8400a8f0085ef5372472bb8e59c4b5d896ece2482d3dcb3e860611376b08b228f347facddb05e7efd4bf0bc85c5a9d734bf3e88fa9ffccdf6cbc8eee648abe37b5933677b44d46b0e1715b2964f8d5abec40032b3343c51b614a4e49bfb97934c90bce9ee7d30adb7c626f8c320ce57af11ffccf29a5b8d85bc0c68949d33df38163e6d00989327332ed57e3d8847badf5e3939b4b559e47ce7e85d8abeabadce9792d0d82817d1992753509a300c3d6027a9dda0044c69674be8f9e20c67b1d1742e6d2c11db9c07d530fd78fd8aa2be71d8a91457c2c82e67788fce7c869cc5f1c2dcaedc334e9dec57ab12a7251214b928d8c06794cc2ad98c9c0af117b01d6743c692ba456f432cebebb1d593f180c5939ff27264a832ba3290772be3875f3a8e6fc20614be9d0b35cdaf2ae5893288304632883014fb54e6005693c456919115595b15de81caef8ac80738111270cb65fbadf1391f017074469f69503cf6c7c7f5e85a667af50fa4bc802b82aedb6756432f2eb94bc0539684b416225213a5ab02c575c074ac2415e3bf18276df09e3b3da989137049989d953c09154962c625051290e82f528162dec3eab3c8bfc6d1b8e99ed2dd0475112ea76fbfdf3465bf562807964476b9cc3ddd10e0f71c73ae7d47f41d7fd3c99a6f6c699f08c6a2875b5a702732d414d74521ce2f884ce7dc8f9e5bcebe861b9f03e18d8faa4381585474b29e769f5a3298700adfde496a7678c1fe286d1aa763d7c59d232e696636b5924a936f0292801735372f031226ae30f4b4e7500bf592d660343943219abf8d1822099a55125ccb0dd96a7cdfbd2e438598c6aaa55a9a1d13b2c2613be45af1f8b39046b1d258255b51b3e5d475daf0e51d62a31c8de238acfeb3055d9571df04422e841b64dd206e0505d44dde216bf950127c8b96aac7aa8352b0d5a1cb1942d20a5712c789c5ced44c5c1200888b207037325022befa36f0dd384fedd6f76287e160a7bd35693b494b94e8ea766942b36f538a2e55a00f3e3ebeb3f12981d799e0344c051a86bbf7e42ceab95987b185129d1bed83c8b1e0371ccbf239c0318b9e45f3ba7accb31d559c2d2651b94e7e23379421d4eb50cc1d8ce251a4936f2ad2688b194b95c95ad2901fa5f0ca41f5e9fc9ade48e8fa62f512963d13a198d4e4f9a2af53eba388052aaf62f95b68a2b37dc4b17f0e5626b91738ff1f86fbff7c37b8b770f160a29325c9e46181d4c8efa953f5fd96703120881ef47aa2158006ad08f6d92db73604e06434d8c029e0be9e7213eca19e86db3d0339dffbbf9580fd80da92e7a55018230ee2f7aa79580970ef31734915278675cd0d3703977c3d346482351bf197841a9f1177a939507000bad00142e102a2740fa095ea1158fc2eca4a561ee2a0696f1f095e3864c9a6b8f073acca5c7087fe74418e78835e4a6e54351891757a4ab5ca6d9ad0872c6286754b6cc0ecf0790e15d4736148edfda179669cdde8ce9d295689710385ad0a7a9c70b2bcacc709de3a143c45fc11ad55b6f336c751aa105dd98b5090719690955405097b9368ebbd98a16a27c2c1aeff17b30fa5399674363cfd1947c72521ceb43f3a50d0d01dd48ab51f6dfeee0ec4f93fefa3cf06a27e6824def5a43ed68fa2c4f157cbb4f6bf5b0c379f104dc45428df47dcf5f34be53cba7580ef43f66ca072fa3d197e40b1f4411cf7da875ded323db26192ff9442d58a51d9c00289bcb936fcd1df20771b396f1eeb49b0063aa86d30dffa4adc5d9d935f3d23f0188e1b3570175eeff637a7ce14d30a3012073966390922b234b8e467ff8ad4a86d8966d45d7824afe77e0cdaab773593885783b794cfa678274d0e289d02a934e881396a66549a241b2ae80fee1653847774adb2b16571dd084de29866ca04568706292aadf5bfc3f9b6918e82c2662621c80d6ef20a26edb1e828ddcbabb7011ec60a6d94d9fd62a13d329c3a48877da43e6a25bc5dcb50e0c96c3f631a932c77d1ed44a666b326f455968b87d9f9d5f0cfe3534ce8480b4a0719f12b65d71a78fec517c5146a5c6e9aa2b31b2295a3d198827aab4bb152b0556480170f8f2d6a9e7db3177853c6b135d8af4cccacdbe53481919000b58dbbb7a153e7fcbcc65f966301d8efccdafb0e0793dc25cb19c08e065f5c2a81879510db0e6486a4a9483d1230a9a70ff87856c39a6a6d47f45fb225863cd51e72fa4e9f890a3113dbf82322eaa015038747e9b0925065d45da857e31690d0aab37671f6667825594e46b39e7bcbe0b1b1a209406eafb9027c6c1ff2381673ca75fdc01c0cd2c85e18f3065ce7804a5a062917d5add55abf70766ac977d9ac5123735858c9263423a5db478ab06030278b72487f07f7fed1f1fa2d52bf746649e72d18728746a6edfc2f6d104a0dc3195d41198b8382ccca42c05f11f412e6c03423067781255d71e7d6044925c8c68540ec97275a8a7b48032fdcf883c7c60d19631fb851f3221aa2920947167ef3b3626c88a9b30455fa10762c52eeeab3d359065beacc737c554f0b6aad7d6ef6b7f9a8f7dd324b2e4911138cfb1b0b05ab6a193f331a1db9a5d860741468b6f35df62ab6ff86cdc51332b6a1696f1a6a37897ee2f520071a3b118463ad0a504a460d7b6514aa340207ce2b59c8c369937e69826812ef3b2f127a9675a49a7515679b1b6316239634825d17232862b8fbdba6ddb7a42b4a05a48320b0e68fdab6ab4951b0ff3d93a3b4ed412302b3e76de19611eb240c82d485cd02d245dc81ed73173d224ec52ba7618ef2ed52c31c39a566165caf957659eab8169bf0e2e8cafeb608190e2613c2c133f5b3b9e9ec2b8b6bdfd9e065289091cd9ff194d04d90ced798685f665719e27761143142846495f0bbd04432af99c1926d04755476b572b51cb487443bc981a3f4f415f3e76ece1296b401dc41780706c91f2e0d68a03085d0952c2cc33ecc2d7780be6c68e5824f8e41cdc2ae0c98e44780d915aa6ccfd43fdd7efe48c7fd248abd9c46507c0c8086c7c14c1c8b3fc9d8c8218ee4f4289f516f994d71f917e3bc0868e6fe16912bbb78a113b877f3c56afb7336b388adaf2bb554676eeb9a849f1fbbd94063effff007a16810e281d321c67272ca6e59b2a1c7958715ea0483a5dd351dae7492ac382cd2114bcc0d6c7877ee62ce18c2d6a0daa62f617cd2a3346c2c7accad05059b7f91703237585d6bf635874e241232e958172e4cdbbb47724c4843a5155acfac5c830f097de9ee36bd29df560bf1feb09d8d0e4daf5fa0a829f08dec5375771a76041412e1d7335e10adf1559191ed19927b0fc84d3c55169fb0e3dbeaeca2b9c242635bc483f8452666165414dd1c0643ae2c6c82d07490d3678ae9821afa554ec60fd4b5874e5407958b3c94dfaa52604426566c1b1ee564f544335cc01892ef1052fb82a8e81f0bb8543c0d194ced94468438ef4178f345e8724159d2d94b70a5bbe7d63f1bc593ae029deff379d6ed45782f6cde08b99d44c5626dd322413d606305ab5de9dc76e54be543ea1217ce28cb8ff68e97b908f6dac2a01fc30ace5a5674002119257fee7e0dfa361ce462247408aaa10712984b7013c1aab2b1ff346be8cc2e5031fa5b7c608ced2663450d744371516dee018194305a968d7d4e55e95668bf5b0b4f59164e0a02b1cb4590d2a73fb5e9baace2ab39c6316950985c432ec40b2a9be90d7896f58b7ea2bd04ac63bb6729e736bcab4a1ae9ee1a27f6c362d72e93f38fc4f71aa7850d87732dcf8c2354ed156d3e2c8bd5fc302518f9b1e3e6596f0c0a282755997b0d6a7da2dae6a519dd7b0ba98c1ecbf3219598d5d0181aaf37ddc1f17682fe01e79d4af4280e8b0059c6b9d5a305513296197cb650e0b37c84bb17b767c0a19867279f039bc9b01a41372e1cc0805ce2b8a7cc1caf4cc72ce04417bf25f9ca84f39fd366ef2b69c4291c9e25cff0da90bc5e46383dcf534f834fd9160d31e72dd0c7cb17025d1fc2ad37069216673d2607c6d98700b19ba211e7b076ca82f74e8206f3e273f4f934b67ee74566cc36eeea717be219e8dcb361d93e5feb7510a6b022d3d2808355091a35fc6cc7267f1a9e080ac6c6cea5402fa7a89a1249ce59abe4f41edbcadb4fdf1319417ff5e7a6080468466b3a14305522e77b46436f8fe4ab27730b69b930f53bd4c91710f2140c681151a2ea8b95514f4cea85530158d7a5429edaccafef0124e3f088d656fd233f8db9aa4ee28ed5d0a9aff3c9a01fab1a0a24002b76ea5a9e334bdbf24c7e28068cf397a288119198b2ebd0bdf0b2d26093eef9f3e6724d679e3f9ae162d4298bd1ef7cb762dd470deb4f823825f29198778f7f0be04c228b44a036924d64ad29badc8312d20d49ab924af2fc5afd8604412e4c9dcaa19f98c6a02c6cd7729e3ecdae0bbaf761a880de2c2d97d0b84ecb70223b4af57717253099b1d0925518347491518afacec772bf61840dc91bcb44b5aa17af8e85aabe9b5696e57af1a27f1cab4886558c14281daed13070244e1e3972fdeed146197024859ad3771dc77f3f6daf92835aea65af3716b40ff36294137429d874f49bd5d70469b1f297022ef241877c4e1f8dcc4b1913ee963e1ba925c2fc3e11a5ae643e205e53204b9b50fcfad9b6b07f254d7109bc2c2f81476b9bbaa8b1841ad1be479ab67d3117dff8507d61d88549f81436dc7e27fee593514ec8dee715110d67df2ad6fda85f6f52af4d356a0bb822f2f9c62cdd7d0d45f4ca8c6bfe0590a2e39485839dc4d857cd49f7cd39faec34bb426967e64292567a88d98a1a4b01a4930527d2cc274413b6f4aca2f4edc005b29aef212743628626290104743df4de08db51ecbea672c6c3f034c6ef3944bab5d447223cbaea31a82db536e76ce56ad949749850ab6729db31ecebdf277f6c15549cb7289b98a0b9e78bcb1ab20db464799fe0c429e22e29a26be27b6e39f538b5d0413746698b977244421a7a818a22197113209597e0f48cb5d1d126f060f9ec240e438e81ae26857ee97689608543fc18f7457966348071bb7f1d34604db80220e80c9fe8fe2e31f082b67d0be0b4549e57a180a02600341d878b116370d911a80ada084c52aa3f055aab22ee9fc3f518f16cb4370b07c6c6277bb9e8a99740b7d41496e870eb9eeec1e30f105101537cbbb5cf2bbd16697728547567d74e8cf0675778a4a8a55aec45336f8dd46e164f7d67e4f364ab0cdea6cc91e4a4ab1111e29b47c5da3ae354de61a2e2729f5ee9ec590d774af566c53cf0ce0d35ac5656efb5413155882783d6d58d826abb350c92a9fe3a31e03618e3b997297f2dca610479c3c12022a2007ba48350ecb6e648d5d80b37cbca67214ed6c12b9490056c2c5628bafdcbfac443c7f018df11854e4dbc201cde1851bf3bfb620620378b86b5bd768c6cf547088a9fe399059f9d429c68bf21bcb52d9f0ace5b01cc0cb35274c53f66a4760efed8ed9ec91b7ca639bb171ab812f3aaaaa8884efa31d3564595d7e3cffbf06b4736e23d232af04f1d93c895eb089fbe9311bef6d1a42fd8bf39cb50a5a7dc5d340c303af2ffca9e686d4e6add3f9f88c6ff274741692081db6892a3503073a03a9c60f9b9dd75af436d45d971e722eb2c31ddbc76a4828218bcdf26973ff035e209ba1207493bfe0325c1fcbb990e901b4b8a68389eb5edac00f40f1073b38f0cd12e9f4a0a8af1645c4de2fb3617f3b8f739100d2dcea1cea428638b9ebff58ec78b3f47f685346e12ff593993e369fd222eb8ba3b51b95f7d200d1bb09a3d8ed0a470ffb34d1055b1488caa697df808bd8de0d5bd46148c4011bf417753715fcaa68cde015cb5ee67d7c084d539104f8a22bb6e60d98db195e3fa0a5386df6d7a6208d3397c048521428bf55dd9052cf4e4471fc5f99320049b57e50bd7698678ce4071e310670baa310a63d14bf1a9866458f5b156d8f4f8b41ed1a5841552b46d60454edf4d0ddf5e7d0f0f2920957e6c31d6ce5ebd8da4e90c31dfcb4d2a26abaab36ce4de3634a367efb113d56b564d91418ce40498fe6503628d6bc1532a299b60fe2ab8604886930fdb20343ba8de089d74f736715137195f9599aa25352839604b817fa194a59f0fdcc2f870b35955e3e1314fdec5270265134ef21ff47a9941598c9e2c1523d1e2cd9dc2825e367731e832dd8dfb8197f10c2f151537e827db9a5211bfa9c4c1a72ce1b260ec0e3689b13a3e7095bab525c1b41a66fbb506776eaef6f2411585b2bd016d2eaa3a1643cb48d64667055411cc5cf08f61cea74a21646170279a02ab83ce4048612119e5a311d6a1079336d8a12a64ace8e7c1d50208c11b954fabce3d71fc0e509beb9da06e07bc7bfde6465a463c2e623cf797c3f519db676a464bab0ec99d9c80cb995899306ce42fd3d4ed81acc3510fcd9ed39d1617dc1080e38bebff074924a227b652fc48993d6d19a6a16528b73c4e72ae2e1068b119207fd633b2f1bbed3de1888b17b59e713a5970731023c39506e59545cb6d35a87601de9a2e40403860a2af1c58750eeddf86a232a43818acd765485a2c71f4abc0934aac40895ec92f86db09bce58b6373806a74003f0339968b72318e7074ccaa498aae7f859615720912ece5a633379376a9af0e60c581ae5bb4fccac8442c19513cfeec5229180f575f43c96d0f8d5b2c02643308e5eebdae64289581ebd28032e0db5db5c0fc9b2672d8378d47667593904f19ec02f480d212bfa49675909bf42093c149fa80ae72dcb58fb181d8263e05229bdb00acfd43d5b9ede737c68e388b9aa8f2148832c2e186e280b1340fb8024827c024523bf443359dcb7a08a2dabc47ef1ce80b9c6fb03d151371d8b14f8c35a185691309039c7caf81d246c94815ee8c8d910920ead6e524982882bd56c038685b3b5012ea8087f1afdc00b881fc66c9c95451247daf280c16deeb78e3761d8ab40c835429be27208c7bd0cee157b6998626325a15d54d7dc3f9b3f2c640c2c720d765e5289ef10c2753b24880a709c20234bc0367e7f7f96f664b32052616ff3202296a593dda07a326228cfc4b4c3004fbc709a41c7999ea6be47b6e4e5e6d49f46c2e094dca83ab42472622c47b5148c62224c7015dc2b2b5624d119f8dd8df5c0d00d3b161977a67ae735ef36c044e0f6b0f4dec30140e167f46da92efde4b1677a4ab81a1433c3b7ce3958a37bca4665326b9ee765de292b90b7317fd279855edb0bb8e6b200078c1495e2b84e1d518198dc567bde458d4d5acfc90924b4e03c2816903e90bc9bd53d4d75738401cd1b2e0709004bbecdbedd1ce4363d9cdda7b4cc4b4d810d4846c8175346f01935e194a092b04844fb701666790bfb54fcb8026e8975eb357f6d75d8221e27d37d853295fb88a4feb70fbfc2e804786108610f1ff009565d9c2bca1ec3dc989d3c5a4d9f44df61f9edb8cefb4436895939092812fcf30efdd00a97e7f17e68c0568a65dde03f54d638588f77fb108928084cf5bc288d6b472b66e296399b678d99abac3ab5ac2bc594a66b022758fd6dd93a9c1f438830f15269bcd667054e8550177af4966ee10078c592f7c997aa67d60a775e7038439078cae717ef307b9120</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>2024年1月记事</title>
<link href="https://blog.cancin.cn/post/59d3f0f7.html"/>
<id>https://blog.cancin.cn/post/59d3f0f7.html</id>
<published>2024-01-09T14:33:52.000Z</published>
<updated>2024-09-22T04:39:39.394Z</updated>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试。" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。"> <script id="hbeData" type="hbeData" data-hmacdigest="2311cccf01e8756315155612bddd34f59d5890ec0a9b8301747e4f03b12d21e3">ced864f45009da4e5537372f52405f701b2b12280a593c81454e16d3b18bc141d10e09de5a882728a014796c14d1a24a5891264f94183c4f26e7e35dec024a7540c6d4e13f0186a057a4ec6bf63fb9a96adcf97ca1c6a54903358d0f7d70bda32f30316ed09d6b4686fb3834c8ae0c636981eee1b6bce492ed9cae8400533cfcd72cd77ea994773b5eee236112ca56cfc7188870945ff236650b15355a9579f5adbd5272a116498fc901a773eb299cb74738b2cd91aba8fb75c3e20e904885896c820c2ec57792e5acabb739fa7744c8ff6d962568042df84285c8ade0f52d701011ffe81894410f5442401bf99c813989fd035410538bcf0ab828def3ea7a7afc36aa8eb0037475c38b515b9695260532c32e6c1e3250aa0b0cc94f69383c4e83a27163d55438cb46673d400a9db907a6fb9866ff5d6227cba2c87fbd89afd52b9d541a0c837705ce7187def8a8a2d13ab9ff7286d90927269186e8f2f3f879442508ea61a7f22658afe9910e58c1323570f9de0fa00b7b883311c14d8159a346d46016750df6aab461b87a5a6c8e49875fb71428ad2ec3c8ec3affb6931be6af485856f10498bb8e764522851a8b6be3665aced9c61d05d6035403500905b49fe4541a6c93cc2afff0d8388d1d58ed3ed2bab3197efae4f812735c77ccbdbdb6d564084d14820cc0de41f4dc52df148f71bd2354d61945ce2390f46ed410c201cafed9c3b1878165b8df73f52594ad310d9a5d0661fac1a4aee634339066f748a9cd394f8a7c8ff6f193b4d7967511a09aed5b63292c3eb976e4d53ca302e872cc4a82566a407ce1eeb1f44aea7e7c5a714de4ef9cf9272bd87efb417bde9f2de194fd6e7f90ec89fca609e27210bc18ba8dc0542273e37a7bd06f72a3fff5b0963ae5d5b06846c7b19d65b5f61e653069e6200295a1ee1b21ca4b51ca4f6b5447f997bb4294a9de4821ef5e485a267f48e2f1baeec2127a4608418d894b84c5bdd22210063c960a853b673710b972117bd88618b8e0e7a1478da608c4560f2686a6627ee4005543437d24ac2dacb5c6319c695fe964bff6d3542d2d18a137c5e5dc608a8df2fee5d88eb652483745a73a2de7088a8fe35faabe20e35a4d0973d6c9328a4c2a797c8911a80df6dfb324fecc920dba065692156d407565dffe422b921f608d80a9fb70e4095de3bbfd25dbc4488b3f17fca3a4b3611fffa0258ca31b3744aa1b5359569588a5316d24dd115a29ff775f81b3fcb7b4145e494d38a40a2c5d1e4423ee583ac34bc1d885768f44741db4be449f6aaf304651232f8f69329d304cdba40d85fd57fe22f1dc76224f50506d2439223887a3d82e85738c6be6bc14e9e2c1a784158f504fcedf2f05d3026afc328c0914ce9690d33458071811b75013429118fa1cba8dd598f1d2abf89eb50c7d2075de1041dcd429bba788c086a1b1f085b8f25cf1e6472b054ba7751c04edf10d3503606e4189aeb811812deb2c8b523f8f5fe21f5ebe2db8e64fc03bdfc2486b528c116f001ae578bc9dfcf0b600f87fb1804e5c3104456c04422964bde281d57f9b571aa363820d64c523f7f812e30cf88bb8603dd36b016d4a43d12fcefdf76a0ce07776718ffc72a610094987d77e253e5f98172ffb4af71f30c635cf13a970116e9e7561bd457c6f03d164262817354093c7e0cd53401f5f361afbad053c2d313492f68a62754ba810c3875aed7db67498b8abcdfabdd2dbbad2c48a671c8f3ac9050d0cb5f549125c112ab689ddc882d1765f9066984257e62b7e3eeaf95afef8f0670c6a9e904b2d9696d19e0519539bc8b6b20e9e19fbafb770c555444dca5def9f474d71dbeb16f3c7f031793e628b1d66e1fb231c21b07e88de2332b132e13039c9f43da582b76fab9c7ca9a751433682994a26afeea42bbfa8c870d23b30f00908552e8b4624196977769128217364a69507cc8cb1f6794074d89c8114dcfa09ae6320f129d19eef5bdd30de478dabc035c2c23a59970e7e0d7c2fb95ca148179bb5b6737c94bf4c07f12043ddd29b537cf3023edf4eb8c4d39fc775f79c9d374412da5a9d7121af05d64e65fbec762922f6298f6590932f8644be4b8f07e5887e61ac127303345416b583e48ce0040a8ff899dae89b1518a6a93695d5a15bfa0cdceba84b6952a909c270ed9680664ea4882096bd2ea83753644867302ae24e8a15563db4124d3cb5878e2198efdf7cd0c916fe5ff117b5e9d93b7f9726bd30bd27c1f10854943c61f35ab43241d8cda2d7cb0dcd54a35454eb74e1c40b2171cb07362f1651cac70b083589f409ff65689dbcabb80af14f51ce89fd8976371349ee1c9fc2ea8c011636e6f992eca0d9b0ab22b304dc746bdd7c967c508d206e87c3134af44a8f42ab5dec4263ba19d3cacda6bfb60f7090285ad5f9e8d1c9674acdd948a47f74cae83066ff7f3f35f7addd76c075cfc992616e9d7730a891a61f4cb73c91dd14dbb35d15ee31fcd0da2756cb792d87b2a8e0d8a16eebc3bcbc0903b3693327c6723c613aa376729be02191bb6b2db659a1f339d1ab4b3dd6b90798a4d137e3374367121f37a70f5dd8974485810901cc436a5c808cb92f5a8da21f291abd4a1080a1ed081cd3c9af1da70fb3f497b66b2bca7fa51cda57e4bed63ee2389199b0ffbff5bcc69495f3341deacb178d78d7e8edc87d6434c33479ce30dfdc5c08e34f5fa279cdfb8a65a1de8a75873c16d7cd463915a106ed0c2520168ba189a243d69c8a878075b3e2e7ea61ad0862b7c20a00ce767e88ea74a136689ead499cde8fa44407aa37da94e916343302de5245b23894a60c62b30f86a7ffe6c6aca08f447165d0985621e52e5722b668b7ac71900b7f22661cd90bb42bc65d368cba692135b3dc9da18b8c3769879b709942d3542e2b348d78935e9f75dec36be244a876d3ec51375cc3151cf8abcf2fbbd3996a7c21a43d02864b42edfa69a7af4d05bcca99903e11157fe2a82c766c9d2f8a189c94bdd1846cdd2738b365c98a1e29034dc40b4e8a9e134dfc5126e6782aa5987935938b613ef4b3994fb25bf47a0ebd134fed2cb6444c70cf3eafb9c67c9ca42a04307dca7ecfa9882870820a7e3717b0738a9c3994f9d8c5cfb1312b836b83910fab5e3844ca9d6f314ad298201cb3ce1ca1ea3be4f68b2efb036306e0fc963fd63d7170f014091ca6b75f3aace9e68336e0ab67a06a69be635bfe4d30dbb16b76b89237146e54e125cc4ed9a4b039d915a9a5dd2a85fd9232b6e17ad9509b93daa5428aa29991037739808e556f4464de1c26345042c917d971ec3891bb310bdf68f28ff7ba3cca8991bc476edb9ba27f215c8e30345620521e9fb0b836be5ae2680a571b0390d2d4092c6aa0d6603fda42f1fdbbc103673ce0dc316a6a677ed2780e25922544c8fcad938d5f63198b7834af88d55e3ec9f9fa97862a1dd7b89056f58fd87b757dbd00a174b3104bdf5871b5a07bc4e07b8e5fc527846b604ce0b069bbcadbd5cc42abd0c5f16e08706ab16f6f9d5881f1abbe82599e67559e794eb4787284854673c6030fc3f914916dbe633cae20eb08e43870595da0ed777767a65cd47c8e21938d544235bda5832c99907f4d8880fcf26a707de331787c87bf298495226e88160350563da6362ddd20e1159c660f049ae8377e2f426f02bc1771ccb31249009e36cc750d170d2c328520b0550a49ae6883d71d4b05d15b6aa6b734f6cb5dcc8c0ec296d8f8967df2bbb531c0578ad44fac3faa4260d03557c62ccee87c73311293798777f3cd8be8066054b2a79586c5523912a199635120e34b9a14d07e94ef3347cc821cf902e3dbe303b88906277b741705d7fbfe714524180996feef0d84da9955f880a165b39affcde0ad6e69292ca038a354acf6585fe6657cb32570b250559d5870103b8d101c491815f2b1260c56b80162278675761d7f07fd8ea5d098b877081890c5a5a66dba97dc1800c563a4d0392cb92e5d367896ce010956f86183265893f24a45bcda0a4d0d63f87096443bb0454432ef29e89c223780a7c0108fd10913551d6d22ae910a963ece144ded47377a63f99c701b735f841105ac0fab73079b0c2382374b3389d29d0baadd2ecd2cd18a9c77e984f224b79f483d049d364fbca5c0f08adee0f9a230d87e380fd7d965a46c97b127ce666ec8823ed02903aaea83738ae5e4930fab7db3635917881442a6739125118397331e60f51be9cc7514ca7bb286cbc6d4f119a16d05edbdfdacb24ecd23468e7cac6b9e8c19dd7944e76c1c335d92b54b66598456e26321cbda680b3b033ebf2cbe6e248f6bcb66e7a03aa2c713d78d1bdb803e8418a6dab1b914e510930aad2baa107aefbd227f4d1ec30ec9e2270b8973ee09b323a11dedad87f37eb043dfee95963db9050e083b7cd9ef9f7ee8655cca357caa8fee5a36e8995e98964c1e55146bb0b8e1a60b19d5c89c49728eba9775ce3d54ccf3cda66c53e815c841c6ecc37cbbd571cbf6d4492f5145105cfa7f17482b21b0dbc4fa276d02898d5e751d1905199fc0a04c464800eba0648b2bc4529353d2201e42781a29c18f4b8d3ccd7e8bb363483ccf154cb7005db232d59751c2150130825c1b60ee6aa1b515ea6b38328f4bac50d63a288570af084451c4c1bd8926f51803470ffc7649c579a01b3d39319acf7bfc47d5aef14c5aa306e321bcb96eff92cdeeb41716907909f8769b6076eae8b45d2d1511adda9b4b18516f116754bc58e88248bb67455f72b6a0f12f3425f80b7701611c1916e4db611a5ca64c9177d1e0a47dbd47fef62477a2a5db38ae13fcae4faf43d68585cf6e43d693e49aa08a0939e7fff4202e140624ddc27cdde17f3131afd0e13538c9906d5eec03618f9a52b436a63ea93cfe54841f7be4d4bb3a5e2e3f0c7563adb3b557652c5ef551a1ba3fa3550339e2cc88e7327b306cf01290e08354bb6f675a5753e3b25263fc8b9863137a1a4e59f46b3ddbe0ea3003d5a0f2a452a11d8f0c34e564dcf0f95a0f86100c52c1506bb0da83871e5685e753603d7f56ec300cece0359cbdebf1f8c0a18385248a2a4b3bf3769f1faf898be3cb5cad988b30a4b6739ac45e9e29a36b48d4a711e0a0c3dd457e97427b5e93493971e0d53eb280e1d1f5b07f07be6ccf3be8ca5a5792f42b922784d10e683f22dead05fe0f41bf44c8ec37c2ec9413447aa9062aa0d93e322a9f478cede3f851275838fad4cbe37794740d8cd30e8e93869966e23521f93f9103a2838f6e956f01eca9c746d6cfa17e9f864a2a56788a732251bfa4e00ff937ca276b713607379d1a18c8bb03b58d863e1765d342667c6a10888f22b553a0694ce07901c3c64e0bb8892319b09ba7bf7cc9e501cdc4077a5755d9ed5b359710bf1a2c2330f8b4f0359dc418d90d7b6551450f727ab106278ef75b52f9f05819acef45440afdd839cfc8842b35aef387d9ad8a305651c7f6b58bb49f2917f54ae606e5da754d46bccf695e77fe814fe0385f5aa894e1649e40a89580d598d95c883ae92e69dd9a94bf65eb0934967eb9f66b130775441ca7ffd950580f048086f74b34ca298550b1f01b1ef48e5a7df6d0d2581cc2bd969df03445c15ccc78d1c89b0cdc6a77e7091bd470dc37b36adae2ccc468b35354d5a5a792fa227d7fb16757f06ba17fac3ccb5261860cfdbd72f1ad0017679fe0012bcc1d42c1da4f9b9e5e1b5d798f62c61307b1341dbf707f71a5017933e94dcba60d6d23b9af4e8ece851036d18ca6fab706c6d4aec959b9b9751165a5736046e3b24d05ce86ef330b1880b434cd009a596daeaea9c05bd28511f0fe3205650606a191bf56a62bc957e8b291d96e49e03c6d0d7f2940644ae5622830a15e4a89bc10495ef6529f85d07412773d145f31b361acaad179502a75bc1f89537104ce9efc3af7b66c2426820e9dfd75856e4c225069d647a6cb3e0a6c7ac20df2390d59a66bb7431b586332ba05649eb2cb23215dee5f6e3f26a357836067422a6da7cac3cb3b56a51cce4af88c8aae7004b1498cceb6f9519a9967307e977497f6bb5474134e8b0605bf22837afff5f78aab716d5107d4bfc5dad937192ff7d049c59c65495313095c13185d8259f773364f48199aaaaa1ace2a23d6058e8c45b554059b5eaca5277fa6c8c8f46bc8b7cbfa445937c8f7c673a923fad419d0b96a566bd7aa61aa2f81fb4a82a23f528611ea36a9e951b721c4b92d74d6b0ea9509381636a2089fcddb453d65c5df01b7fd1ca21c53e2649ecbfc333e6dba3ce01f8286a2c801738b8f668a7713dd2f677d238e272221ce8ca15074e348e56f58f56dafaa9c852fd1015f041edf5b26a8d3821591cbf2f88403a0aa9cda3535a15f6259fdbf4651f7e48485e7fc197e13be212e6cf875b38414128ea93ac4fbd0f4835446d401991f8b1ac73d27be0f4178d212e59d924bd139f5883bf4ba197e403078beadbdf6d4afddcb41b926f967373062b8c4637fd03d116a1d0d2e7c3ebd4397871ad5171ca594bd57b8c19a50b9dfc73fba05fb1c47a88bdebab01ef2a9f0e5771d946c84958b1b3a6682b159e4bed91f32199e75bb0f9491f477f37f43dac0e82e932859d567a7679c61647d2450810156786af0031853e70af5c760bfe980b650620b0ee69e29fb98bb3c479caf8d253198b3f4143f11ba0254bb6f8d2402b6ef0b85208d751bf6d2ad3f010a544f6087953f185d035ad9ae6f4deb84fd6b5d1edfe68c48a87ce6b218bc80a2d6c42c7322eb5d4e6f52d31e6bc9fd6880a0b6efb29da141b64d67779d71f56772166c01e7093802e396de4fe93c7d006db0e151138ec0968af97e22970818f7979e6a2096a1d06142de682c781b65f09c53b4ca94f6d61d256574b26d0757cedcc4409cc416d8d657e8d066219a455d725303a54f596cb19a1fa8c2b178c29a131d713ade6e9d99d30e4500ea46322cfa22e0a063c279509f3d276bdbe205b697b705e9914d81c8de29961a8278fc239355d492355a876c74706f3fdf48a68bd01077f28fbda1ac908738989d43c83dcc1f0d67538f8e4f35c2502ebdc13c8356701bb7a690fbedd5003a14aeb9ea8de7664ec1f74493bca57abc802132e08074b41f1b8a6178ba68ca9899531fbdf01256d28ccd5ba545c26259677c6f28e7934f3405971016330d46d80688e8769a7862469067f8abcf13f1bf48f118f4dbfeb118f5fbb2e13dcf6eaedf9999bfc0fa17026d3dd0607b4c265895ba2d64d9a7488965f2cdceb3bedb5b8096923b7343fbb3a564f9d34f725abdfb970d2b52bf1d0571162ae66ae430a865290026a216b4a7fe904e44e8ba026e152c2e1b0481de664ed51f71304cd0c4a5b1ae841915be90592d0d7838d65675fba4a1e12fa8d9551f949f039c0cc1189872b4419f44bb8e4c213d77ff3c28cb597d4cdb2304707310c5858f6d350b3f1a4ba4b0d2da4b820eb61bf6b503a67854f73b3e719c6a47d665b050fda6da6905450f422e43fd5898b89740dd4b202adabdecf727498c405e83516edfdcf0ca278bb0d4c81818471144e3bf9ddb873c6c9c6a50f9d75dacfa25f1af5a2d1a9a9ae279e999ff59d41fb7ae72c94860507d914e3b7a7e986a7aed6fe3dfaf9ef1c104aa0c05c97f88cb9f6699f84eba478f7a6988ae6e96c3801c906875db0e58a0d34b717bd070a4c16a7a065e4909ca64afc9b03953e442a08e0b997aba61cd49184f91ad54354fcfffe7cb94517d32b464b9f048860013ce5911bc3a94aab69906431f8c76472ea8f8f6b3d1f10cf17891c5c5d2790daa3627b4a0d219296f74fdd3c7d2985e5c467cf40d999491fc5b02845e6e3264f720bd1b0fd6be5bfac5f9c3765b538122f450f46ec6e00f03469e13bb555f0903083f36db94a70607aa05e3ad5513f0eb0d3c16e7915a9e7e731ef9dcf1e32cd4a8fc5850013f036e04e56cfcf751688957a8a4dd340d72e6799fb5b4d093ef4f25e9a325f26f1d9d356d1d005c67fda91ab8023d71d6f4d8c37c667003388532f241b85ad6182ba5f9ea162b33f54389afe6af10bc22ff049f955a63c3b48e9bc41efe4a80d74d8e5f5e44bbab287b30029e44e51ee3c01844efe122e027347b000cbe7b3fadf33e5698948c190292b5a04362e64ca4be9b42569f8a8a3bcfde1992eec058111d76810f15187ad49bdef466e824e71224b448d9b02bf6ab5fb1b9b23d0e8c4da7b851cf95f68e55da16e7378b2f504c8b0043ef6378632cc92811fe88bc714fef107989dde6c8f06e8ee6b27ec61132d44461b5e4f29fbdc9fed7adb4ef854efba7ce7cd8b3d3268094fb1b6757f1d7a33abc3eb4f1646d94f1c6fc75924b02f44a218540d33cc92e929a24495b76c609a0fc9cf3054d6b24d9a1437553e38416f771beb23dd3e63b7acf91aeba18da8554b5f5bccfb9b3b06b33b00246997f3bfa97d841401d8c269e81e1d7e817d6082287cb042bae931eb29e5e97ed289f010de3dc7b1eae8cc4efd5dc729fa3f90083d7daad79674a0c9341392af565678da11f7b241a7c2bc5389287910140f46bd7f655dda74ea34242f44f1be2cd28ea68bf1a8a364dcd05da422865b001734515ff14ae00076ae6c0f726e3494fc24210cf98c256e0551b6e2c4c0c1683c23be2c08219f81c1e7dfb8481f6d5b5c1492348caee795292c0a02615e2782907463aaa1bc816e8f574fd404b5e9c41d860e3b17edbd2c445c5862eda34288398d5e0d53e48ab44b56b80c8f06062f2f5ea617c4a01613bad5477f433464b72649cabdb85ecc22f94f902a91c9596048142af4d8b4da4c6d9f84646b354a5b2a44cb6ae4517c6702fdfceeebf386de7614647ec2bd7b9c6b781c56cb18f771a8db43c687fb1ed0f6959b543d828c0b41ff4e066c31be40d68908bf8d059576b171bd56a0acb89625a2b44afc55685eaf1333dd6d9a93912f6e8dd9cfe8a143a69deea39d599c977e8616809376721f9a7ef5a0b4470da7d161d530c1327a49717cb4ab3223e4230571e8a205a7a641f0b7924c811633fa878477ed02b6d4caa621c79f7274e5daa196af8bbe1ace10c6cf22a053ed4a69fd73de07f5c2b58d5422d708fa37fe67703d38c7708892a850bc1bfd32d1951ec438d9dd8f2f6e43678039b7a79d747677b4351831234ce6af53ad8efe05e183e5bcdf95dcc8037da57f25d62a06a4f5ad1148d2a3cd9479df6a2ad6aff944e7787824fb495d983f04e820b18a07876b69a9f77c5dd039a189c782433f5635dca1f9fcceb0182f15eca71fa7f04ff76ffd47f0d831785ea375884d5b8b9b3184475adf90ad1d0eb9b97ecb9fe3ec51a5638b9e382655fe8b8effce24befe853c855d2afa648464dd758a48fef9f2a1fbeea353b72a4203dfd02a394cfd74b2b0b1e80341135e97af27e1ad179637c35ab83901f604f995b3980325ec300cdb7fa3d0d5e09c39e7fa5bd83a786d92e4ea6c903f91500e4b7d54f68f52ec159f394e36acb182893be909a80eca8a1f4bf3eef86ba0f673b4d575ed51b6112a905e2c6c7f82fa57e58a04ed0885dd0de4e63ed9c980b54c2161f0b01fc396af3d5dd665473300ba869e2e9ccd7649b52afa891b853d2e96ae3a2d17f15b0f786912b88256b4a5dc60924ffcdddfc6ecbf4450a47b2687e29268d7c6b03ca51f2062e6eaa828d09ac97ba7234280126e1378c5e2c8970b245cd55766dbb9fb81a2ed44d90489fe96f8966a9ce4afdad3d73982a0409993aa61a2276d80a2bb51e15379c3347a3538c47f23fbd934df84fea9b2bffeb590e4af68951ed51c5c404676895be5996a3fe6583a659172c80227340e629e098558c1714af73384c41f2e49f871cc314a3a4c62a25c0d120487d09e8a1eabe893ea4182ca16d4ecef4f2d94fa8a2e7fa3c17826ddfb80bce446500eb30a4d25497253c943349bf4060f2ddcc21be3dd41db1b37c5be2bf97b17f6b8350b71e21883b60eb509e489b50e6d3fdb723215f161e148e93399f2fa5c17b4c25f44c1bebec2f36f950fc291caef0bb7b6c838ebd81004757806a58a52d46a8a7dfa319042fd021e8de3b3552e824a4851f41ad4e175043e4e22baec9e21bc4934b74aa247101375ee8d20a174612f24d3863101dd28930327335da3a842b6cc8ff276e4485ea98631cd93d19a2e072ee17c1d1d17940bd30f6d086cec8b1e0ff178e861d1f60ab68506045b47a360dd840ed5f524df1f1fe2fea67050f559bc17f0d18132a74bcaad87a5ea8fee53764eff597a33484d7d4c6f158a27fc303ecea2a75f9fc4c6a6ed636a405b3e46a549625c640e1c7a0e446eb177b91a0430cd5b67f45b34f2cc8117ed93d57ba14ee6acc5f76b6004b3716d65e44fd57a8dfddc9cf8781ddaa036530650d93798ee2e01b3d228bce8d499582c9beb4e10bc4970d442471f05e748f2f0a0c463f9fec036d05e5d9ebeb339e26b29f2c12a38a61418ddfceeb59a803abc33e4b555143276e49d6c30fa6cd393119ad66b998ac589a0cb8b2104a1865af1d2569a4c287843f050d34665451be944dfc4c7ad91195b3d87dcee40ae584e0e508f0c66cac8ebf45e5a1d61a07143e1aed2c5b5d1ffb2b4f7852d0cc677166df403c4d4fcb9be3f910dfe8a7c06d3f0152d203af2b1daf9dfe98af157085b79c9fcfcd1b078f1dd36808d491acf631317742fb0edee895d37d430b220d1489ee704deb8ad30995b55a78105600f64df7836c297246284269c38fa4195e4236b53fe30ab906b9470b4dd196b0d8d059a5ddcc44b5af632717b62e06ff0ef23ded359b91862dfe29fbca9b9f759e54077ede7ce1ab4643c2d905adad3cfb1eca0b931aaa53afacd4a03648328a5eb080255f5e7c0748e566f211d7e32042fc3a0f0ffc690a65306f15a1cc61fcb6ae1f7c228cd0aaac79e8d96a3f538e5cede458ded37a7462227476969a015a012ae919b3c8e10953047aa271431b1bf746547b131c39aa66462422880fe3f8a04b8fc49e041f88506ad43a42bfe20415167c3e6a77a68dbba25900d603687d0a7165e6b261096d4228826e10a5cd0813c311d9fbd2c82410882c53f0312d2ab32cc81bb3e76d4f239307707f018c4c6abeae4009fb39ded9fa0176791a6693f4d32858acbe2720a30f76c418e04e66ba2e2541dcaa3fb562931d7c345208cf61f8eca1e595c236c769b44faaa4c963f352342d61492983a7df543e56781fe3129db731691a8860398745327d9eea3d43bc21c2d2690ff9caacf5c60d10d4cf1aeb8a283f45ae3c1f535e58f90911f693c32742649beb8c583cd4a7b9ea83e9a33df2a17b22a1f20f2c3027c7e1a2f51ebef7096b9672996cb1d88f292aa6cc68cb4938c5bec8844649af241fa2c0049b889e545bbcdfdb8b02da41082821b38646edf664fee257248f76429cbb9231501f248d31a30442268e76fc8c4b2271ba307962be59c0899528e3d4106615c26fac2bfbf6cf522ed00792b442dffc13ff4cb8d8fe5b0a0787d5d79ce604139ac309aa14f067b0cdda337465b604bfe23e4cc43ea0c2fb35f2ac5fb669e0c54275ecddf443c84e93df724a455faa3feeeaa9422757dccff38d43e0acb29d4f60b08bfbd81a846e0c024f151a3beb3d02756483eefabbf790116b68d4d88431992bc523742d30919dbc32847198fa3c2147995c576261e30314f3ffe45209b59f069e8d761add1ccf3abc0ad9028f1c2119730aec1865c359c8ed7da07bb8ec70fd09e5bcb891c4a7f6f625ad4dca16ed4e774c776188b04bf8edb56b89a1a670db4c5eea09edd63672d6b75725989702272205c0959fddb826874911a8b76d25ec610e0a6b432e41457ba90975a9eb2725304e7dd1124f430d5bbb789b12b0807153c53c32dbacb15420254c4f9cee0e316e1db6da4cb63d09e3ff857c70dd80c32a976634104e8cc73e5698191e6fafbd34984331790efa8d309954faec470b89f90d4e198de3dd8320a578a20d27d05d7db3f09c711c315ddd58f88050520718b6a113fc8134d95caf1a53b920cd466069c97c416654baa2763adc7f770a1376843df7f92604ec79e6d556b5291dea5678de672d41fae534b882a055074942b1a84d060fb03269f1bd27ee6bceae63563b1fea4278f0f4099cc45e820af65db69da01f1a59f615b6d25667cfa3d4196e0222890b4d5bddfcec830c5f337f2d8af880adf71c7a7641b5c132100ff3294596e89a6444a01d481eeb0908ec7351d2afbccc7fb6bf08cbab5c03f75516c9fb31b3f50280ffa331e773d4cc7be09b1a00832c170b88a91b837c52dd74e640a211c4cf7d2bcd442c316712ad43eb98c30b7003abcf3c633de13efaa9cea8c71bfffe74cf32655c45391b65659bb60f6bdc2bfc152e117d4f6eac68cd655b29888e9f980f9461a90ff2f30770002daac2f193997fda0c7722446eb10ad8d525e6c88a250423ebb12e2bf05a5900e4d93b0755698a583685f0a5a3201b058ba4ed09d4f2bb92f87c9046478bd40da44d1bff6ae0816157702ecaaff996b8fd3803024719563ab313a7a002035479273444a07ca14d04abb31bb695258ba28fb3ad2f1f8af0451ba1eab6b7def08988eb405a9f739e198194ac8ad5bc8082e479a62c59c7f250ea98b2895ee93ddd967cfb3adb00a6be98bb17005f53c73383a55460dfcf37e0f1603f020a4202323429092c9d287c932515b3f7c6d1e91752606cf97006044f97defdfceb5bb77a68dbd259a7385806c27df3e7bd824a79638ff6406fa4f9721c56521c6e996d905c2c53d3c90a48d893063b24835fb605747fcf81ba5c1069e26498500accb301ea74ee3444f2b7f988f757145e4f10cb53a600bafb4d205a3a4c6e3e3f062ae2541d93bed1b48c716fa114e5d8597b7d2701a7e3810deb6194c768a7ddd4c16658478aaf5890a0a2564153318e37aab0db8cf9bc3312bde8b76c1ff1aa8ae84e7e6f93e1178dc46e3ecec5b198c137aa33acdd80384164470e0017730e5d229713fdf2ebdb4799bacdaeb1a438bd221f006b8dcde96c6357708c70fb816e85a4b745c27affa3581a1caaf28f1be2181937e094cb1632292e6b83f71d906b570759010e6de216ed12187d365565a439f7eab44317993519dc5965c3465214266fdb3c21e5080a45c05cf3cf0b5cb054ba6ea656c48b1a258e91d2eed9ec05ad38588159fe5b12cd0c20</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-flip"> <input class="hbe hbe-input-field hbe-input-field-flip" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-flip" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-flip" data-content="您好, 这里需要密码。">您好, 这里需要密码。</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<summary type="html">没啥好看的</summary>
<category term="生活日常" scheme="https://blog.cancin.cn/categories/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/"/>
<category term="日记" scheme="https://blog.cancin.cn/tags/%E6%97%A5%E8%AE%B0/"/>
</entry>
<entry>
<title>数字电子技术基础(7)——脉冲波形的产生和整形</title>
<link href="https://blog.cancin.cn/post/bb918626.html"/>
<id>https://blog.cancin.cn/post/bb918626.html</id>
<published>2024-01-07T01:48:20.000Z</published>
<updated>2024-09-22T04:39:39.364Z</updated>
<content type="html"><![CDATA[<h2 id="施密特触发器"><a href="#施密特触发器" class="headerlink" title="施密特触发器"></a>施密特触发器</h2><p>施密特触发器具有2个稳态,主要应用有:<strong>波形变换</strong>、<strong>脉冲整形</strong>、<strong>鉴幅</strong>。</p><p>门电路构成的施密特触发器如图所示,电路中2个CMOS反相器串接,从$v_o$输出即为同相输出,从$v_o'$输出即为反相输出。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071016184.webp" alt="门电路构成的施密特触发器"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071020215.webp" alt="同相(左)反相(右)逻辑符号"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071023002.webp" alt="同相(左)反相(右)电压传输特性"></p><p>假设COMS反相器的阈值电压<script type="math/tex">V_{TH}≈\frac{1}{2}V_{DD}</script>,<script type="math/tex">R_1<R_2</script>,则正向阈值电压为:</p><script type="math/tex; mode=display">V_{T+}=(1+\frac{R_1}{R_2})V_{TH}</script><p>负向阈值电压为:</p><script type="math/tex; mode=display">V_{T-}=(1-\frac{R_1}{R_2})V_{TH}</script><p>回差电压为:</p><script type="math/tex; mode=display">△V_T=V_{T+}-V_{T-}≈2\frac{R_1}{R_2}V_{TH}</script><p>施密特触发器的应用:</p><ol><li><p>波形变换</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071025743.webp" alt="波形变换"></p></li><li><p>脉冲整形</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071026955.webp" alt="脉冲整形"></p></li><li><p>鉴幅</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071027926.webp" alt="鉴幅"></p></li></ol><h2 id="单稳态触发器"><a href="#单稳态触发器" class="headerlink" title="单稳态触发器"></a>单稳态触发器</h2><p>单稳态触发器有1个稳态、1个暂稳态,主要应用有:<strong>脉冲整形</strong>、<strong>延时</strong>、<strong>定时</strong>。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071038028.webp" alt="门电路构成的微分型单稳态触发器"></p><p>单稳态触发器的暂稳态持续时间(脉宽)与R、C有关:</p><script type="math/tex; mode=display">t_W=RCln2≈0.69RC</script><h2 id="多谐振荡器"><a href="#多谐振荡器" class="headerlink" title="多谐振荡器"></a>多谐振荡器</h2><p>多谐振荡器没有稳态。多谐振荡器在接通电源后无需外加触发信号,即可自动产生富含高次谐波的矩形脉冲(自激)。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071046039.webp" alt="施密特触发器构成多谐振荡器"></p><h2 id="555定时器"><a href="#555定时器" class="headerlink" title="555定时器"></a>555定时器</h2><p>555定时器外接少量电阻电容可以构成施密特触发器、单稳态触发器、多谐振荡器。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071051393.webp" alt="555定时器电路结构"></p><h3 id="555定时器构成施密特触发器"><a href="#555定时器构成施密特触发器" class="headerlink" title="555定时器构成施密特触发器"></a>555定时器构成施密特触发器</h3><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071146246.webp" alt="555定时器构成施密特触发器"></p><p>如果参考电压由外接$V_{CO}$提供:</p><script type="math/tex; mode=display">V_{T+}=V_{CO}</script><script type="math/tex; mode=display">V_{T-}=\frac{1}{2}V_{CO}</script><script type="math/tex; mode=display">△V_T=\frac{1}{2}V_{CO}</script><p>如果没有外接$V_{CO}$:</p><script type="math/tex; mode=display">V_{T+}=\frac{2}{3}V_{CC}</script><script type="math/tex; mode=display">V_{T-}=\frac{1}{3}V_{CC}</script><script type="math/tex; mode=display">△V_T=\frac{1}{3}V_{CC}</script><h3 id="555定时器构成单稳态触发器"><a href="#555定时器构成单稳态触发器" class="headerlink" title="555定时器构成单稳态触发器"></a>555定时器构成单稳态触发器</h3><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071153479.webp" alt="555定时器构成单稳态触发器"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401072036622.webp" alt="工作波形"></p><script type="math/tex; mode=display">t_W=RCln\frac{V_{CC}}{V_{CC}-\frac{2}{3}V_{CC}}</script><script type="math/tex; mode=display">=RCln3≈1.1RC</script><h3 id="555定时器构成多谐振荡器"><a href="#555定时器构成多谐振荡器" class="headerlink" title="555定时器构成多谐振荡器"></a>555定时器构成多谐振荡器</h3><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071148704.webp" alt="555定时器构成多谐振荡器"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401072035321.webp" alt="工作波形"></p><p>C充电时:</p><script type="math/tex; mode=display">t_{W_1}=0.7(R_1+R_2)C</script><p>C放电时:</p><script type="math/tex; mode=display">t_{W_2}=0.7R_2C</script><p>振荡周期:</p><script type="math/tex; mode=display">T=t_{W_1}+t_{W_2}=0.7(R_1+2R_2)C</script><p>占空比:</p><script type="math/tex; mode=display">q=\frac{t_{W_1}}{T}=\frac{R_1+R_2}{R_1+2R_2}</script>]]></content>
<summary type="html"><h2 id="施密特触发器"><a href="#施密特触发器" class="headerlink"</summary>
<category term="硬件知识" scheme="https://blog.cancin.cn/categories/%E7%A1%AC%E4%BB%B6%E7%9F%A5%E8%AF%86/"/>
<category term="数电" scheme="https://blog.cancin.cn/tags/%E6%95%B0%E7%94%B5/"/>
</entry>
<entry>
<title>数字电子技术基础(6)——门电路、存储器</title>
<link href="https://blog.cancin.cn/post/f9e8bc9c.html"/>
<id>https://blog.cancin.cn/post/f9e8bc9c.html</id>
<published>2024-01-07T01:03:10.000Z</published>
<updated>2024-09-22T04:39:39.364Z</updated>
<content type="html"><![CDATA[<h2 id="MOS晶体管"><a href="#MOS晶体管" class="headerlink" title="MOS晶体管"></a>MOS晶体管</h2><p>MOS管是金属-氧化物-半导体场效应晶体管的简称,它有3个电极——源极S(Source)、栅极G(Gate)、漏极D(Drain),衬底一般与源极相连 。它是电压控制器件,以栅极电压控制漏极电流。</p><p>MOS管根据导电沟道的不同可以分为PMOS和NMOS,按形成沟道的工作方式不同可以分为增强型和耗尽型。故共有4种构型:增强型NMOS、增强型PMOS、耗尽型NMOS、耗尽型PMOS。数字电路中多采用增强型MOS管作为开关管。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071355633.webp" alt="增强型NOS、增强型PMOS、耗尽型NMOS、耗尽型PMOS"></p><p>符号助记:增强型-三个短横;耗尽型-一个长横。N-箭头朝内;P-箭头朝外。</p><p>MOS管有3个工作区:截止区、恒流区(饱和区)、可变电阻区(非饱和区)。MOS管的开关时间,取决于负载电容的充放电时间。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071604286.webp" alt="增强型NMOS管输出特性曲线"></p><h2 id="CMOS逻辑门电路"><a href="#CMOS逻辑门电路" class="headerlink" title="CMOS逻辑门电路"></a>CMOS逻辑门电路</h2><p><strong>CMOS反相器</strong>、<strong>CMOS传输门</strong>,是CMOS逻辑电路的2种基本模块。</p><ol><li><p>CMOS反相器</p><p>CMOS<strong>反相器</strong>构成:增强型PMOS(负载管,上)、增强型NMOS(驱动管,下)串联。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071609909.webp" alt="CMOS反相器"></p></li><li><p>CMOS与非门</p><p>CMOS<strong>与非门</strong>是由2个并联的PMOS管和2个串联的NMOS管构成。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071706132.webp" alt="CMOS与非门"></p></li><li><p>CMOS或非门</p><p>CMOS<strong>或非门</strong>是由2个并联的NMOS管和2个串联的PMOS管构成。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071707343.webp" alt="CMOS或非门"></p></li><li><p>CMOS传输门</p><p>CMOS传输门由一个增强型PMOS和一个增强型NMOS并联互补组成。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071718904.webp" alt="CMOS传输门"></p><p>传输门的信号可以双向传输。用CMOS传输门和CMOS反相器可以组成双向<strong>模拟开关</strong>,还可以构成各种复杂的逻辑模块,比如<strong>同或门</strong>等。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071723744.webp" alt="CMOS双向模拟开关"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071722819.webp" alt="CMOS同或门"></p></li><li><p>OD门、OC门</p><p>CMOS集成电路有3种输出结构:推挽输出、三态输出、漏极开路输出。</p><p>普通推挽输出的CMOS门电路输出端<strong>不能并联</strong>使用。</p><p>三态输出:高电平、低电平、高阻态。三态门可以实现数据双向传输,所以它可以实现<strong>总线</strong>结构。三态门的结构有2种,一种是低电平控制,一种是高电平控制。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071755760.webp" alt="低电平控制CMOS三态门"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071756867.webp" alt="高电平控制CMOS三态门"></p><p>漏极开路输出可以实现<strong>线与</strong>,例如CMOS的<strong>OD门</strong>、TTL的<strong>OC门</strong>。其中TTL的OC门使用时必须外接负载电阻到VCC(1-2.5K)。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071759277.webp" alt="开漏输出的与非门"></p></li></ol><h2 id="双极型晶体管"><a href="#双极型晶体管" class="headerlink" title="双极型晶体管"></a>双极型晶体管</h2><ol><li><p>二极管与门</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071735652.webp" alt="二极管与门"></p></li><li><p>二极管或门</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071737975.webp" alt="二极管或门"></p></li><li><p>三极管非门(反相器)</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401071739585.webp" alt="三极管非门"></p></li></ol><h2 id="CMOS、TTL总结"><a href="#CMOS、TTL总结" class="headerlink" title="CMOS、TTL总结"></a>CMOS、TTL总结</h2><p>CMOS集成电路的优点是<strong>静态功耗</strong>很低,同时存在动态功耗,与工作频率成正比。</p><p>TTL速度高、抗干扰能力强,逻辑电平摆幅大。CMOS速度较TTL低,功耗低,抗干扰能力、带负载能力强,电源利用率高。</p><p>TTL与门:多余闲置端接1、和使用端并联、悬空;TTL或门:多余闲置端接0、和使用端并联;</p><p>CMOS:不能悬空!TTL悬空是接1。CMOS或非门接小电阻(510)到地,相当于接低电平0。</p><p>TTL与非门的灌电流负载发生在输出 <strong>低电平(0)</strong> 情况下,拉电流负载发生在输出 <strong>高电平(1)</strong> 情况下。</p><h2 id="存储器的分类"><a href="#存储器的分类" class="headerlink" title="存储器的分类"></a>存储器的分类</h2><p>按制造工艺可以分为双极型和MOS型存储器。双极型速度快,功耗大,价格高,工艺复杂;MOS型速度相对慢一点,但功耗低,集成度高,成本低。</p><p>按照应用角度分为随机存储器(RAM)和只读存储器(ROM)。RAM是可读可写存储器,但断电后数据会丢失。RAM又分静态存储器(SRAM)和动态存储器(DRAM),DRAM结构简单、集成度高、速度慢,SRAM相反。ROM只能读取不能写入,断电后信息不会丢失。</p><p>除此之外还有多种存储器:</p><ul><li>掩模ROM,不可修改;</li><li>PROM,可修改1次;</li><li>EPROM,可通过光擦写(紫外线)多次修改(耗时长);</li><li>E²PROM,可通过电擦写多次修改。</li></ul><h2 id="存储器的应用"><a href="#存储器的应用" class="headerlink" title="存储器的应用"></a>存储器的应用</h2><p>固定ROM的基本结构如图所示,其中A为n条地址输入线,W为$2^n$条字线,D为m条位线,存储容量就是$2^n×m$bit。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401062319659.webp" alt="固定ROM的基本结构"></p><p>ROM的地址译码器是与逻辑阵列,位线和字线的逻辑关系是或逻辑关系,所以使用ROM可以实现逻辑函数:</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401070924105.webp" alt="ROM实现逻辑函数"></p><h2 id="存储器的扩展"><a href="#存储器的扩展" class="headerlink" title="存储器的扩展"></a>存储器的扩展</h2><ol><li><p>位扩展</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401070940334.webp" alt="1K×1扩展为1K×4"></p></li><li><p>字扩展</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401070941966.webp" alt="8K×8扩展为32K×8"></p></li><li><p>位和字扩展</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401070942775.webp" alt="1K×4扩展为2K×8"></p></li></ol>]]></content>
<summary type="html"><h2 id="MOS晶体管"><a href="#MOS晶体管" class="headerlink"</summary>
<category term="硬件知识" scheme="https://blog.cancin.cn/categories/%E7%A1%AC%E4%BB%B6%E7%9F%A5%E8%AF%86/"/>
<category term="数电" scheme="https://blog.cancin.cn/tags/%E6%95%B0%E7%94%B5/"/>
</entry>
<entry>
<title>数字电子技术基础(5)——时序逻辑电路</title>
<link href="https://blog.cancin.cn/post/93e8f639.html"/>
<id>https://blog.cancin.cn/post/93e8f639.html</id>
<published>2024-01-06T11:51:07.000Z</published>
<updated>2024-09-22T04:39:39.364Z</updated>
<content type="html"><![CDATA[<h2 id="概念"><a href="#概念" class="headerlink" title="概念"></a>概念</h2><ol><li><p>特点</p><p>时序电路任意时刻的输出信号不仅取决于当时的输入信号,还与初始状态及以前的输入有关。时序电路通常包括组合电路和存储电路两部分,另外包含输出到输入的反馈回路。</p></li><li><p>分类</p><p>时序电路根据时钟不同,可以分为同步时序电路和异步时序电路,根据输出信号的特点,可以分为米利型(Meely)和摩尔型(Moore)。</p><ul><li>米利型:F(X,Q),输出信号取决于状态和输入;</li><li>摩尔型:F(Q),输出信号仅取决于状态。</li></ul></li><li><p>表示方法</p><p>逻辑方程(驱动方程、状态转移方程、输出方程)、状态转移表、状态转移图、时序图等。</p></li></ol><h2 id="一般时序逻辑电路的分析与设计"><a href="#一般时序逻辑电路的分析与设计" class="headerlink" title="一般时序逻辑电路的分析与设计"></a>一般时序逻辑电路的分析与设计</h2><h3 id="同步与异步"><a href="#同步与异步" class="headerlink" title="同步与异步"></a>同步与异步</h3><p>同步和异步的概念是指电路的变化与时钟脉冲是否同步。</p><h3 id="时序逻辑电路的分析"><a href="#时序逻辑电路的分析" class="headerlink" title="时序逻辑电路的分析"></a>时序逻辑电路的分析</h3><p>同步时序逻辑电路的分析步骤如下:</p><ol><li>列出各级触发器的驱动方程;</li><li>将驱动方程代入触发器特性方程,得到转移方程;</li><li>列出输出方程;</li><li>由输出方程和状态转移方程,列出状态转移表,画出状态转移图和波形图;</li><li>总结概括电路的逻辑功能。</li></ol><p>异步时序逻辑电路的分析需要注意各级触发器的CP时钟源。</p><h3 id="自启动"><a href="#自启动" class="headerlink" title="自启动"></a>自启动</h3><p>若偏离态能在脉冲信号作用下自动转入到有效序列,则电路可以自启动,否则不能自启动。</p><h3 id="时序逻辑电路的设计"><a href="#时序逻辑电路的设计" class="headerlink" title="时序逻辑电路的设计"></a>时序逻辑电路的设计</h3><p>同步时序逻辑电路的设计步骤如下:</p><ol><li>根据实际需要建立状态转移图和状态转移表;</li><li>原始状态化简;</li><li>状态编码;</li><li>选择触发器类型;</li><li>检查电路自启动,绘制电路图。</li></ol><p>异步时序逻辑电路的设计需要注意触发器时钟信号的选择,选取原则:</p><ol><li>触发器状态需要翻转的时候,必须要有时钟信号输入;</li><li>触发器状态不需要翻转的时候,多余的时钟信号越少越好。</li></ol><h2 id="常用时序逻辑电路"><a href="#常用时序逻辑电路" class="headerlink" title="常用时序逻辑电路"></a>常用时序逻辑电路</h2><h3 id="计数器"><a href="#计数器" class="headerlink" title="计数器"></a>计数器</h3><p>计数器有多种实用功能,如计数、分频、定时、产生节拍脉冲、脉冲序列和数字运算等,故又称分频器。最大计数称为计数器的<strong>模</strong>,符号N。</p><p>计数器的分类:</p><ul><li>根据脉冲方式分为:同步计数器、异步计数器;</li><li>根据逻辑功能分为:加法计数器、减法计数器、可逆计数器;</li><li>根据模值划分。</li></ul><p>生活中常用集成计数器,主要有可逆计数、预置、清零、进位等功能。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401052324341.webp" alt="常见集成计数器"></p><h4 id="74LS161"><a href="#74LS161" class="headerlink" title="74LS161"></a>74LS161</h4><p>74LS161是4位同步二进制计数器,模为16。<script type="math/tex">\overline{LD}</script>为同步预置数控制端,<script type="math/tex">\overline{R_D}</script>为异步清零端,CO为进位输出端。EP和ET为工作状态控制端,当EP为0,ET为任意态,CO保持;当ET为0,EP为任意态,CO为0。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401060945407.webp" alt="逻辑符号图"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401060947197.webp" alt="功能表"></p><h4 id="计数器的扩展"><a href="#计数器的扩展" class="headerlink" title="计数器的扩展"></a>计数器的扩展</h4><p>设需要设计的模值为M,已有计数器模值为N。</p><p>当N>M时,可利用同步预置取M个状态(N-M到N-1),或者利用异步清零,取M+1(0到M,其中M是瞬间出现而后消失)。需要注意的是,对于异步清零法的设计,为了提高清零信号的可靠性,通常需要在清零信号前加一个基本RS触发器,如下所示:</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401060948315.webp" alt="改进电路"></p><p>在改进后的电路中,由基本RS触发器的R'端接计数器的清零端,R端作为进位输出端。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401060955821.webp" alt="置数法实现模8计数的2种思路"></p><p>当N<M时,需要多片计数器级联。在设计任意模值计数器前,不妨试着分析已有的计数器级联电路。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061019003.webp" alt="清零法构成29进制计数器"></p><p>由图可知,当片1输出为1001(9)且片2输出为0010(2)时,2片计数器同时异步清零,74LS160为模10计数,故整体电路模值为10×2+(9-1+1)=29。加1是因为0到n,计数n+1次;减1是因为异步清零,末态瞬间消失,所以这里最好也加上一个基本RS触发器,或者改用置数法实现。如下图所示(10×2+(8+1)=29)。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061028799.webp" alt="置数法法构成29进制计数器"></p><h3 id="寄存器和移位寄存器"><a href="#寄存器和移位寄存器" class="headerlink" title="寄存器和移位寄存器"></a>寄存器和移位寄存器</h3><p>寄存器分为基本寄存器和移位寄存器,基本寄存器只能并入并出,移位寄存器可以在移位脉冲作用下依次逐位右移或左移,数据可以并入并出、并入串出、串入串出、串入并出。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061612101.webp" alt="串入并出"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061613174.webp" alt="串入串出"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061614731.webp" alt="模4环形计数器"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061615855.webp" alt="模8扭环形计数器"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061616584.webp" alt="并入串出"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061617704.webp" alt="并入并出"></p><p>一般来说,规定左为低位、右为高位,即<script type="math/tex">D_0D_1D_2D_3</script>,此时左移右移直观可见。</p><h4 id="74LS194"><a href="#74LS194" class="headerlink" title="74LS194"></a>74LS194</h4><p>74LS194是一款常见的集成式4位双向移位寄存器。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061621005.webp" alt="74LS194逻辑符号图"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061622567.webp" alt="74LS194功能表"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061655769.webp" alt="2片74LS194级联实现8位移位寄存器"></p><h4 id="74LS195"><a href="#74LS195" class="headerlink" title="74LS195"></a>74LS195</h4><p>74LS195具有JK输入,只能进行右移操作,<script type="math/tex">Q_0</script>端补位值遵循<script type="math/tex">Q^*=J\overline{Q}+\overline{K}Q</script>。</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061653962.webp" alt="74LS195逻辑符号图"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061654483.webp" alt="74LS195功能表"></p><p>一般n位移位寄存器可以实现模值n的环形计数器及模值2n的扭环形计数器。</p><h3 id="序列信号发生器"><a href="#序列信号发生器" class="headerlink" title="序列信号发生器"></a>序列信号发生器</h3><p>一般分为移存型序列信号发生器和计数型序列信号发生器。</p><h4 id="移存型序列信号发生器"><a href="#移存型序列信号发生器" class="headerlink" title="移存型序列信号发生器"></a>移存型序列信号发生器</h4><p>移存型序列信号发生器一般由移位寄存器和组合反馈电路构成,设计方法:</p><ol><li>首先根据序列信号长度,确定最少触发器数目n,对于计数型序列信号发生器,须满足:<script type="math/tex">2^{n-1}<M≤2^n</script></li><li>通过分组,验证n是否满足需要(若分组中有重复的,则需要验证n+1个触发器)</li><li>按编码编写状态转移表,状态转移表最后一列即为反馈信号D</li><li>求反馈函数D并化简</li><li>检查电路自启动,画出逻辑图。</li></ol><h4 id="计数型序列信号发生器"><a href="#计数型序列信号发生器" class="headerlink" title="计数型序列信号发生器"></a>计数型序列信号发生器</h4><p>计数型序列信号发生器的输出位于组合输出电路,另外不用验证自启动,其最大的优点是可以同时产生多个序列。</p><p>例如下图,可以产生10101、11011两种序列:</p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202401061949824.webp" alt="image-20240106194940608"></p>]]></content>
<summary type="html"><h2 id="概念"><a href="#概念" class="headerlink"</summary>
<category term="硬件知识" scheme="https://blog.cancin.cn/categories/%E7%A1%AC%E4%BB%B6%E7%9F%A5%E8%AF%86/"/>
<category term="数电" scheme="https://blog.cancin.cn/tags/%E6%95%B0%E7%94%B5/"/>
</entry>
<entry>
<title>应用中心 & 加密工具</title>
<link href="https://blog.cancin.cn/post/d20035a.html"/>
<id>https://blog.cancin.cn/post/d20035a.html</id>
<published>2023-10-26T01:50:21.000Z</published>
<updated>2024-09-22T04:39:39.370Z</updated>
<content type="html"><![CDATA[<h2 id="预览"><a href="#预览" class="headerlink" title="预览"></a>预览</h2><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202310261140351.webp" alt="应用中心"></p><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202310261139002.webp" alt="加密工具"></p><h2 id="应用中心"><a href="#应用中心" class="headerlink" title="应用中心"></a>应用中心</h2><p>新建<code>themes\butterfly\layout\includes\apps.pug</code></p><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line">#apps</span><br><span class="line"> .apps-head</span><br><span class="line"> span 应用中心</span><br><span class="line"> .close-btn(onclick="ctrl.hideAPPs()" href="javascript:void(0);")</span><br><span class="line"> i.fas.fa-circle-xmark</span><br><span class="line"> .apps-content</span><br><span class="line"> .app-box</span><br><span class="line"> .app-icon(style="background:url(https://xxx.webp) no-repeat 100% / cover;")</span><br><span class="line"> a.app-link(href='https://gavin-chen.top', title='主线路', target='_blank', one-link-mark='yes')</span><br><span class="line"> span.app-name 主线路</span><br><span class="line"> .app-box</span><br><span class="line"> .app-icon(style="background:url(https://xxx.webp) no-repeat 100% / cover;")</span><br><span class="line"> a.app-link(href='https://blog.cansin.top', title='Vercel线路', target='_blank', one-link-mark='yes')</span><br><span class="line"> span.app-name Vercel线路</span><br><span class="line"> .app-box</span><br><span class="line"> .app-icon(style="background:url(https://xxx.webp) no-repeat 100% / cover;")</span><br><span class="line"> a.app-link(href='https://netlify.gavin-chen.top', title='Netlify线路', target='_blank', one-link-mark='yes')</span><br><span class="line"> span.app-name Netlify线路</span><br><span class="line"> .app-box</span><br><span class="line"> .app-icon(style="background:url(https://xxx.png) no-repeat 100% / cover;")</span><br><span class="line"> a.app-link(href='https://zeabur.cansin.top', title='Zeabur线路', target='_blank', one-link-mark='yes')</span><br><span class="line"> span.app-name Zeabur线路</span><br><span class="line"> .app-box</span><br><span class="line"> .app-icon(style="background:url(https://xxx.webp) no-repeat 100% / cover;")</span><br><span class="line"> a.app-link(href='https://blogdrive.gavin-chen.top', title='藏兵谷', target='_blank', rel='noopener nofollow', one-link-mark='yes')</span><br><span class="line"> span.app-name 藏兵谷</span><br><span class="line"> .app-box</span><br><span class="line"> .app-icon(style="background:url(https://xxx.webp) no-repeat 100% / cover;")</span><br><span class="line"> a.app-link(href='https://music.cansin.top', title='司音堂', target='_blank', rel='noopener nofollow', one-link-mark='yes')</span><br><span class="line"> span.app-name 司音堂</span><br><span class="line"> .app-box</span><br><span class="line"> .app-icon(style="background:url(https://xxx.webp) no-repeat 100% / cover;")</span><br><span class="line"> a.app-link(href='https://music.gavin-chen.top', title='幻音坊', target='_blank', rel='noopener nofollow', one-link-mark='yes')</span><br><span class="line"> span.app-name 幻音坊</span><br><span class="line"> .app-box</span><br><span class="line"> .app-icon(style="background:url(https://xxx.webp) no-repeat 100% / cover;")</span><br><span class="line"> a.app-link(onclick='ctrl.toggleWinbox("encryption")', title='加密工具', target='_blank', rel='noopener nofollow', one-link-mark='yes')</span><br><span class="line"> span.app-name 加密工具</span><br><span class="line"> .apps-mask(onclick="ctrl.hideAPPs()" href="javascript:void(0);" rel="external nofollow")</span><br></pre></td></tr></table></figure><p>在<code>themes\butterfly\layout\includes\layout.pug</code>末尾引入</p><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"> include ./console.pug</span><br><span class="line"><span class="addition">+ include ./apps.pug</span></span><br></pre></td></tr></table></figure><p>js部分通过合适的按钮点击打开应用中心,这里通过左上角田字形图标打开,手机端入口在侧滑菜单的右上角。CSS 通过 F12 自取。</p><h2 id="加密工具"><a href="#加密工具" class="headerlink" title="加密工具"></a>加密工具</h2><p>“加密工具”是应用中心第一款应用,窗口部分采用开源框架winbox实现,加密算法采用 Crypto-JS 库实现。</p><p>首先在主题配置文件<code>_config.butterfly.yml</code>中引入<code>winbox</code></p><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">inject:</span><br><span class="line"> bottom:</span><br><span class="line"><span class="addition">+ - <script src="https://unpkg.com/[email protected]/dist/winbox.bundle.min.js"></script> # 窗口</span></span><br></pre></td></tr></table></figure><p>自定义<code>xxx.js</code></p><figure class="highlight javascript"><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> ctrl = {</span><br><span class="line"> <span class="title function_">toggleWinbox</span>(<span class="params">app</span>) {</span><br><span class="line"> <span class="keyword">if</span> (<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">'winboxForApps'</span>)) winbox.<span class="title function_">toggleClass</span>(<span class="string">'hide'</span>);</span><br><span class="line"> <span class="keyword">else</span> ctrl.<span class="title function_">createWinboxForApps</span>(app);</span><br><span class="line"> },</span><br><span class="line"> <span class="title function_">resizeWinbox</span>(<span class="params"></span>) {</span><br><span class="line"> <span class="keyword">let</span> box = <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">'winboxForApps'</span>);</span><br><span class="line"> <span class="keyword">if</span> (!box || box.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'min'</span>) || box.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'max'</span>)) <span class="keyword">return</span> <span class="comment">// 2023-02-10更新</span></span><br><span class="line"> <span class="keyword">var</span> offsetWid = <span class="variable language_">document</span>.<span class="property">documentElement</span>.<span class="property">clientWidth</span>;</span><br><span class="line"> <span class="keyword">if</span> (offsetWid <= <span class="number">768</span>) {</span><br><span class="line"> winbox.<span class="title function_">resize</span>(offsetWid * <span class="number">0.95</span> + <span class="string">"px"</span>, <span class="string">"80%"</span>).<span class="title function_">move</span>(<span class="string">"center"</span>, <span class="string">"center"</span>);</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> winbox.<span class="title function_">resize</span>(offsetWid * <span class="number">0.6</span> + <span class="string">"px"</span>, <span class="string">"70%"</span>).<span class="title function_">move</span>(<span class="string">"center"</span>, <span class="string">"center"</span>);</span><br><span class="line"> }</span><br><span class="line"> },</span><br><span class="line"> <span class="title function_">createWinboxForApps</span>(<span class="params">app</span>) {</span><br><span class="line"> <span class="keyword">var</span> title = <span class="string">''</span>,</span><br><span class="line"> className = <span class="string">''</span>,</span><br><span class="line"> html = <span class="string">''</span>;</span><br><span class="line"> <span class="keyword">switch</span> (app) {</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"encryption"</span>: </span><br><span class="line"> title = <span class="string">'参星阁 - 加密工具'</span>;</span><br><span class="line"> className = <span class="string">'encryption'</span>;</span><br><span class="line"> html=<span class="string">`</span></span><br><span class="line"><span class="string"> <div class="select-items"></span></span><br><span class="line"><span class="string"> <select class="select-item type"></span></span><br><span class="line"><span class="string"> <option class="opt" value="MD5">MD5</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="SHA1">SHA1</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="SHA3">SHA3</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="SHA224">SHA224</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="SHA256">SHA256</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="SHA384">SHA384</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="SHA512">SHA512</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="RIPEMD160">RIPEMD160</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="AESEncode">AES加密</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="AESDecode">AES解密</option></span></span><br><span class="line"><span class="string"> </select></span></span><br><span class="line"><span class="string"> <select class="select-item code"></span></span><br><span class="line"><span class="string"> <option class="opt" value="Hex">Hex</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="Base64">Base64</option></span></span><br><span class="line"><span class="string"> </select></span></span><br><span class="line"><span class="string"> <select class="select-item case"></span></span><br><span class="line"><span class="string"> <option class="opt" value="Lower">小写</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="Upper">大写</option></span></span><br><span class="line"><span class="string"> </select></span></span><br><span class="line"><span class="string"> <select class="select-item mode hide"></span></span><br><span class="line"><span class="string"> <option class="opt" value="CBC">CBC</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="CFB">CFB</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="CTR">CTR</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="OFB">OFB</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="ECB">ECB</option></span></span><br><span class="line"><span class="string"> </select></span></span><br><span class="line"><span class="string"> <select class="select-item pad hide"></span></span><br><span class="line"><span class="string"> <option class="opt" value="Pkcs7">Pkcs7</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="Iso97971">Iso97971</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="Iso10126">Iso10126</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="AnsiX923">AnsiX923</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="ZeroPadding">ZeroPadding</option></span></span><br><span class="line"><span class="string"> <option class="opt" value="NoPadding">NoPadding</option></span></span><br><span class="line"><span class="string"> </select></span></span><br><span class="line"><span class="string"> <input type="text" class="select-item key hide" placeholder="密钥"></span></span><br><span class="line"><span class="string"> <input type="text" class="select-item iv hide" placeholder="偏移量"></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> <textarea autocomplete="off" rows="6" placeholder="请输入或者粘贴需要处理的文本" class="inner" style="min-height: 32.6px;"></textarea></span></span><br><span class="line"><span class="string"> <textarea autocomplete="off" rows="6" placeholder="处理结果" class="outer lock" style="min-height: 32.6px;" disabled="disabled"></textarea></span></span><br><span class="line"><span class="string"> <div class="btns"></span></span><br><span class="line"><span class="string"> <button class="btn blue" type="button" onclick="transcode()">转码</button></span></span><br><span class="line"><span class="string"> <button class="btn green" type="button" onclick="copyTranscode()">复制</button></span></span><br><span class="line"><span class="string"> <button class="btn red" type="button" onclick="clearTranscode()">清空</button></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> `</span>;</span><br><span class="line"> <span class="variable language_">document</span>.<span class="property">head</span>.<span class="title function_">appendChild</span>(<span class="title class_">Object</span>.<span class="title function_">assign</span>(<span class="variable language_">document</span>.<span class="title function_">createElement</span>(<span class="string">"script"</span>), { <span class="attr">src</span>: <span class="string">"https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/crypto-js/4.1.1/crypto-js.min.js"</span>, <span class="attr">id</span>: <span class="string">"crypto-js"</span> }));</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="attr">default</span>:</span><br><span class="line"> title = <span class="string">'参星阁 - App'</span>;</span><br><span class="line"> className = <span class="string">''</span>;</span><br><span class="line"> html = <span class="string">'暂无应用程序'</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">let</span> div = <span class="variable language_">document</span>.<span class="title function_">createElement</span>(<span class="string">'div'</span>);</span><br><span class="line"> <span class="variable language_">document</span>.<span class="property">body</span>.<span class="title function_">appendChild</span>(div);</span><br><span class="line"> winbox = <span class="title class_">WinBox</span>({</span><br><span class="line"> <span class="attr">id</span>: <span class="string">'winboxForApps'</span>,</span><br><span class="line"> <span class="attr">class</span>: className,</span><br><span class="line"> <span class="attr">index</span>: <span class="number">989</span>,</span><br><span class="line"> <span class="attr">title</span>: title,</span><br><span class="line"> <span class="attr">x</span>: <span class="string">"center"</span>,</span><br><span class="line"> <span class="attr">y</span>: <span class="string">"center"</span>,</span><br><span class="line"> <span class="attr">minwidth</span>: <span class="string">'300px'</span>,</span><br><span class="line"> <span class="attr">height</span>: <span class="string">"60%"</span>,</span><br><span class="line"> <span class="attr">background</span>: <span class="string">'#29516C'</span>,</span><br><span class="line"> <span class="attr">onmaximize</span>: <span class="function">() =></span> { div.<span class="property">innerHTML</span> = <span class="string">`<style>body::-webkit-scrollbar {display: none;}div#winboxForApps {width: 100% !important;}</style>`</span> },</span><br><span class="line"> <span class="attr">onrestore</span>: <span class="function">() =></span> { div.<span class="property">innerHTML</span> = <span class="string">''</span> }</span><br><span class="line"> });</span><br><span class="line"> ctrl.<span class="title function_">resizeWinbox</span>();</span><br><span class="line"> <span class="variable language_">window</span>.<span class="title function_">addEventListener</span>(<span class="string">'resize'</span>, ctrl.<span class="property">resizeWinbox</span>);</span><br><span class="line"> winbox.<span class="property">body</span>.<span class="property">innerHTML</span> = html;</span><br><span class="line"> <span class="variable language_">document</span>.<span class="property">head</span>.<span class="title function_">appendChild</span>(<span class="title class_">Object</span>.<span class="title function_">assign</span>(<span class="variable language_">document</span>.<span class="title function_">createElement</span>(<span class="string">"script"</span>), { <span class="attr">src</span>: <span class="string">"/js/"</span> + className + <span class="string">".js"</span>, <span class="attr">id</span>: <span class="string">"appScript"</span> }));</span><br><span class="line"> <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">'.wb-header .wb-close'</span>).<span class="title function_">addEventListener</span>(<span class="string">'click'</span>, <span class="function">()=></span>{</span><br><span class="line"> <span class="keyword">var</span> script = <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">'appScript'</span>);</span><br><span class="line"> <span class="keyword">if</span> (script) <span class="variable language_">document</span>.<span class="property">head</span>.<span class="title function_">removeChild</span>(script);</span><br><span class="line"> <span class="keyword">var</span> script1 = <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">'crypto-js'</span>);</span><br><span class="line"> <span class="keyword">if</span> (script1) <span class="variable language_">document</span>.<span class="property">head</span>.<span class="title function_">removeChild</span>(script1);</span><br><span class="line"> })</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>自定义<code>encryption.js</code></p><figure class="highlight javascript"><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> _type = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".encryption .select-item.type"</span>),</span><br><span class="line"> _code = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".encryption .select-item.code"</span>),</span><br><span class="line"> _case = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".encryption .select-item.case"</span>),</span><br><span class="line"> _mode = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".encryption .select-item.mode"</span>),</span><br><span class="line"> _pad = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".encryption .select-item.pad"</span>),</span><br><span class="line"> _key = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".encryption .select-item.key"</span>),</span><br><span class="line"> _iv = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".encryption .select-item.iv"</span>),</span><br><span class="line"> textIn = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">'.encryption .inner'</span>),</span><br><span class="line"> textOut = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">'.encryption .outer'</span>);</span><br><span class="line">textOut.<span class="title function_">addEventListener</span>(<span class="string">"input"</span>, <span class="function">()=></span>{</span><br><span class="line"> <span class="keyword">if</span> (textOut.<span class="property">value</span> == <span class="string">''</span>) {</span><br><span class="line"> textOut.<span class="property">disabled</span> = <span class="literal">true</span>;</span><br><span class="line"> textOut.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'lock'</span>);</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> textOut.<span class="property">disabled</span> = <span class="literal">false</span>;</span><br><span class="line"> textOut.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'lock'</span>);</span><br><span class="line"> }</span><br><span class="line">})</span><br><span class="line">_type.<span class="title function_">addEventListener</span>(<span class="string">'change'</span>, <span class="function">()=></span>{</span><br><span class="line"> <span class="keyword">if</span> (_type.<span class="property">value</span> == <span class="string">'AESEncode'</span>) {</span><br><span class="line"> _case.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? <span class="literal">null</span> : _case.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'hide'</span>); <span class="comment">// 隐藏 大小写</span></span><br><span class="line"> _code.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _code.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>; <span class="comment">// 显示</span></span><br><span class="line"> _mode.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _mode.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>;</span><br><span class="line"> _pad.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _pad.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>;</span><br><span class="line"> _key.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _key.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>;</span><br><span class="line"> _iv.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _iv.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>;</span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span> (_type.<span class="property">value</span> == <span class="string">'AESDecode'</span>) {</span><br><span class="line"> _code.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? <span class="literal">null</span> : _code.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'hide'</span>); <span class="comment">// 隐藏 编码、大小写</span></span><br><span class="line"> _case.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? <span class="literal">null</span> : _case.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'hide'</span>);</span><br><span class="line"> _mode.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _mode.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>; <span class="comment">// 显示</span></span><br><span class="line"> _pad.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _pad.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>;</span><br><span class="line"> _key.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _key.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>;</span><br><span class="line"> _iv.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _iv.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>;</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> _code.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _code.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>; <span class="comment">// 显示</span></span><br><span class="line"> _case.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? _case.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'hide'</span>) : <span class="literal">null</span>;</span><br><span class="line"> _mode.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? <span class="literal">null</span> : _mode.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'hide'</span>); <span class="comment">// 隐藏</span></span><br><span class="line"> _pad.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? <span class="literal">null</span> : _pad.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'hide'</span>);</span><br><span class="line"> _key.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? <span class="literal">null</span> : _key.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'hide'</span>);</span><br><span class="line"> _iv.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'hide'</span>) ? <span class="literal">null</span> : _iv.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'hide'</span>);</span><br><span class="line"> }</span><br><span class="line">})</span><br><span class="line">_mode.<span class="title function_">addEventListener</span>(<span class="string">'change'</span>, <span class="function">()=></span>{</span><br><span class="line"> <span class="keyword">if</span> (_mode.<span class="property">value</span> != <span class="string">'ECB'</span>) {</span><br><span class="line"> <span class="keyword">if</span> (_iv.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'lock'</span>)) {</span><br><span class="line"> _iv.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'lock'</span>);</span><br><span class="line"> _iv.<span class="property">disabled</span> = <span class="literal">false</span>;</span><br><span class="line"> };</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="keyword">if</span> (!_iv.<span class="property">classList</span>.<span class="title function_">contains</span>(<span class="string">'lock'</span>)) {</span><br><span class="line"> _iv.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'lock'</span>);</span><br><span class="line"> _iv.<span class="property">disabled</span> = <span class="literal">true</span>;</span><br><span class="line"> };</span><br><span class="line"> }</span><br><span class="line">})</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">copyTranscode</span>(<span class="params"></span>) {</span><br><span class="line"> textOut.<span class="title function_">select</span>();</span><br><span class="line"> <span class="variable language_">document</span>.<span class="title function_">execCommand</span>(<span class="string">'copy'</span>);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">clearTranscode</span>(<span class="params"></span>) {</span><br><span class="line"> <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">'.encryption .inner'</span>).<span class="property">value</span> = <span class="string">''</span>;</span><br><span class="line"> textOut.<span class="property">value</span> = <span class="string">''</span>;</span><br><span class="line"> textOut.<span class="property">disabled</span> = <span class="literal">true</span>;</span><br><span class="line"> textOut.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">'lock'</span>);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">transcode</span>(<span class="params"></span>) {</span><br><span class="line"> <span class="keyword">var</span> a = <span class="string">''</span>,</span><br><span class="line"> b = <span class="string">''</span>,</span><br><span class="line"> __mode = <span class="string">''</span>,</span><br><span class="line"> __pad = <span class="string">''</span>,</span><br><span class="line"> __text = <span class="string">''</span>,</span><br><span class="line"> __key = <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Utf8</span>.<span class="title function_">parse</span>(_key.<span class="property">value</span>),</span><br><span class="line"> __iv = <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Utf8</span>.<span class="title function_">parse</span>(_iv.<span class="property">value</span>);</span><br><span class="line"> <span class="keyword">switch</span> (_mode.<span class="property">value</span>) {</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"CBC"</span>: __mode = <span class="title class_">CryptoJS</span>.<span class="property">mode</span>.<span class="property">CBC</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"CFB"</span>: __mode = <span class="title class_">CryptoJS</span>.<span class="property">mode</span>.<span class="property">CFB</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"CTR"</span>: __mode = <span class="title class_">CryptoJS</span>.<span class="property">mode</span>.<span class="property">CTR</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"OFB"</span>: __mode = <span class="title class_">CryptoJS</span>.<span class="property">mode</span>.<span class="property">OFB</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"ECB"</span>: __mode = <span class="title class_">CryptoJS</span>.<span class="property">mode</span>.<span class="property">ECB</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="attr">default</span>: __mode = <span class="title class_">CryptoJS</span>.<span class="property">mode</span>.<span class="property">CBC</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">switch</span> (_pad.<span class="property">value</span>) {</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"Pkcs7"</span>: __pad = <span class="title class_">CryptoJS</span>.<span class="property">pad</span>.<span class="property">Pkcs7</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"Iso97971"</span>: __pad = <span class="title class_">CryptoJS</span>.<span class="property">pad</span>.<span class="property">Iso97971</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"Iso10126"</span>: __pad = <span class="title class_">CryptoJS</span>.<span class="property">pad</span>.<span class="property">Iso10126</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"AnsiX923"</span>: __pad = <span class="title class_">CryptoJS</span>.<span class="property">pad</span>.<span class="property">AnsiX923</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"ZeroPadding"</span>: __pad = <span class="title class_">CryptoJS</span>.<span class="property">pad</span>.<span class="property">ZeroPadding</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"NoPadding"</span>: __pad = <span class="title class_">CryptoJS</span>.<span class="property">pad</span>.<span class="property">NoPadding</span>; <span class="keyword">break</span>;</span><br><span class="line"> <span class="attr">default</span>: __pad = <span class="title class_">CryptoJS</span>.<span class="property">pad</span>.<span class="property">Pkcs7</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">switch</span> (_type.<span class="property">value</span>) {</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"MD5"</span>: </span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="title class_">MD5</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? a.<span class="title function_">toString</span>() : <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(a);</span><br><span class="line"> textOut.<span class="property">value</span> = _case.<span class="property">value</span> == <span class="string">'Lower'</span> ? b : b.<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"SHA1"</span>: </span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="title class_">SHA1</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? a.<span class="title function_">toString</span>() : <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(a);</span><br><span class="line"> textOut.<span class="property">value</span> = _case.<span class="property">value</span> == <span class="string">'Lower'</span> ? b : b.<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"SHA3"</span>: </span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="title class_">SHA3</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? a.<span class="title function_">toString</span>() : <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(a);</span><br><span class="line"> textOut.<span class="property">value</span> = _case.<span class="property">value</span> == <span class="string">'Lower'</span> ? b : b.<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"SHA224"</span>: </span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="title class_">SHA224</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? a.<span class="title function_">toString</span>() : <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(a);</span><br><span class="line"> textOut.<span class="property">value</span> = _case.<span class="property">value</span> == <span class="string">'Lower'</span> ? b : b.<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"SHA256"</span>: </span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="title class_">SHA256</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? a.<span class="title function_">toString</span>() : <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(a);</span><br><span class="line"> textOut.<span class="property">value</span> = _case.<span class="property">value</span> == <span class="string">'Lower'</span> ? b : b.<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"SHA384"</span>: </span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="title class_">SHA384</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? a.<span class="title function_">toString</span>() : <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(a);</span><br><span class="line"> textOut.<span class="property">value</span> = _case.<span class="property">value</span> == <span class="string">'Lower'</span> ? b : b.<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"SHA512"</span>: </span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="title class_">SHA512</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? a.<span class="title function_">toString</span>() : <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(a);</span><br><span class="line"> textOut.<span class="property">value</span> = _case.<span class="property">value</span> == <span class="string">'Lower'</span> ? b : b.<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"RIPEMD160"</span>: </span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="title class_">RIPEMD160</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? a.<span class="title function_">toString</span>() : <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(a);</span><br><span class="line"> textOut.<span class="property">value</span> = _case.<span class="property">value</span> == <span class="string">'Lower'</span> ? b : b.<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"AESEncode"</span>: </span><br><span class="line"> __text = <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Utf8</span>.<span class="title function_">parse</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> a = <span class="title class_">CryptoJS</span>.<span class="property">AES</span>.<span class="title function_">encrypt</span>(__text, __key, { <span class="attr">iv</span>: __iv, <span class="attr">mode</span>: __mode, <span class="attr">padding</span>: __pad });</span><br><span class="line"> b = _code.<span class="property">value</span> == <span class="string">'Hex'</span> ? <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Hex</span>.<span class="title function_">stringify</span>(a.<span class="property">ciphertext</span>) : a.<span class="title function_">toString</span>();</span><br><span class="line"> textOut.<span class="property">value</span> = b;</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> <span class="keyword">case</span> <span class="string">"AESDecode"</span>: </span><br><span class="line"> <span class="comment">// /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/</span></span><br><span class="line"> <span class="keyword">var</span> base64Regex = <span class="regexp">/^[A-Za-z0-9+/]*={1,2}$/</span>,</span><br><span class="line"> hexRegex = <span class="regexp">/^(?:[0-9a-fA-F]{4})*$/</span>;</span><br><span class="line"> <span class="keyword">if</span> (base64Regex.<span class="title function_">test</span>(textIn.<span class="property">value</span>)) {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">'base64'</span>);</span><br><span class="line"> __text = <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">stringify</span>(<span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Base64</span>.<span class="title function_">parse</span>(textIn.<span class="property">value</span>));</span><br><span class="line"> textOut.<span class="property">value</span> = <span class="title class_">CryptoJS</span>.<span class="property">AES</span>.<span class="title function_">decrypt</span>(__text, __key, { <span class="attr">iv</span>: __iv, <span class="attr">mode</span>: __mode, <span class="attr">padding</span>: __pad }).<span class="title function_">toString</span>(<span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Utf8</span>);</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span> (hexRegex.<span class="title function_">test</span>(textIn.<span class="property">value</span>)) {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">'hex'</span>);</span><br><span class="line"> __text = <span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Hex</span>.<span class="title function_">parse</span>(textIn.<span class="property">value</span>);</span><br><span class="line"> textOut.<span class="property">value</span> = <span class="title class_">CryptoJS</span>.<span class="property">AES</span>.<span class="title function_">decrypt</span>({ <span class="attr">ciphertext</span>: __text }, __key, { <span class="attr">iv</span>: __iv, <span class="attr">mode</span>: __mode, <span class="attr">padding</span>: __pad }).<span class="title function_">toString</span>(<span class="title class_">CryptoJS</span>.<span class="property">enc</span>.<span class="property">Utf8</span>);</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">'数据错误'</span>);</span><br><span class="line"> <span class="title function_">alert</span>(<span class="string">'数据错误'</span>);<span class="keyword">break</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="attr">default</span>: ;</span><br><span class="line"> }</span><br><span class="line"> textOut.<span class="property">disabled</span> = <span class="literal">false</span>;</span><br><span class="line"> textOut.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">'lock'</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><p>winbox 部分代码参考 Leonus 的文章:</p><div class="tag link"><a class="link-card" title="博客背景切换-弹窗版" href="https://blog.leonus.cn/2022/bg2.html"><div class="main"><div class="left"><img src="https://q1.qlogo.cn/g?b=qq&nk=553344777&s=5"/></div><div class="right"><p class="text">博客背景切换-弹窗版</p><p class="url">https://blog.leonus.cn/2022/bg2.html</p></div><i class="fa fa-chevron-right"></i></div><div class="end"><p>From —— Leonus</p><p>引自外站地址,不确保可用性和安全性</p></div></a></div><p>winbox 开源仓库:</p><div class="tag link"><a class="link-card" title="winbox仓库" href="https://github.com/nextapps-de/winbox"><div class="main"><div class="left"><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/Github.webp"/></div><div class="right"><p class="text">winbox仓库</p><p class="url">https://github.com/nextapps-de/winbox</p></div><i class="fa fa-chevron-right"></i></div><div class="end"><p>From —— nextapps-de</p><p>引自外站地址,不确保可用性和安全性</p></div></a></div><p>CryptoJS 参考文档:</p><div class="tag link"><a class="link-card" title="CryptoJS-中文文档" href="https://www.cnblogs.com/huiguo/p/16601076.html"><div class="main"><div class="left"><img src="/img/android-attach.png"/></div><div class="right"><p class="text">CryptoJS-中文文档</p><p class="url">https://www.cnblogs.com/huiguo/p/16601076.html</p></div><i class="fa fa-chevron-right"></i></div><div class="end"><p>From —— 博客园@灰锅</p><p>引自外站地址,不确保可用性和安全性</p></div></a></div><div class="tag link"><a class="link-card" title="crypto-js aes 加解密" href="https://blog.csdn.net/qq_34402069/article/details/126503916"><div class="main"><div class="left"><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/CSDN.webp"/></div><div class="right"><p class="text">crypto-js aes 加解密</p><p class="url">https://blog.csdn.net/qq_34402069/article/details/126503916</p></div><i class="fa fa-chevron-right"></i></div><div class="end"><p>From —— CSDN@王新焱</p><p>引自外站地址,不确保可用性和安全性</p></div></a></div>]]></content>
<summary type="html"><h2 id="预览"><a href="#预览" class="headerlink" title="预览"></a>预览</h2><p><img</summary>
<category term="博客魔改" scheme="https://blog.cancin.cn/categories/%E5%8D%9A%E5%AE%A2%E9%AD%94%E6%94%B9/"/>
<category term="Butterfly" scheme="https://blog.cancin.cn/tags/Butterfly/"/>
</entry>
<entry>
<title>点赞组件:让你的博客获得更多赞赏!</title>
<link href="https://blog.cancin.cn/post/1c75834d.html"/>
<id>https://blog.cancin.cn/post/1c75834d.html</id>
<published>2023-09-19T09:18:25.000Z</published>
<updated>2024-09-22T04:39:39.362Z</updated>
<content type="html"><![CDATA[<h2 id="预览"><a href="#预览" class="headerlink" title="预览"></a>预览</h2><p><img src="https://blog-hexo-img.oss-cn-shanghai.aliyuncs.com/202309191713278.webp" alt="点赞组件预览图"></p><h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>点赞组件主要包括两个功能,一个是加载文章时,显示出最新点赞数,另一个是当用户点击点赞按钮时,点赞数自动加一,同时数据同步到云端数据库。</p><p>对于第一个功能,我设计成每次进入文章时都自动从云端拉取点赞数,主要请求参数为文章的 abbrlink 代码,采用 crc32 算法,一文一码,具有唯一性,也可以作为数据库的主键使用。文章的 abbrlink 可通过<code>window.location.pathname</code>得到。</p><p>对于第二个功能,为了避免同一用户重复点赞,我增加了一项 IP 参数,一篇文章一个 IP 只能点赞一次,当然,对于代理 IP 是无法识别的。由于 IP 的固定性,所以在网站首次加载时便将 IP 地址存入全局变量中,无需每次请求都获取一次 IP。</p><h2 id="后端代码"><a href="#后端代码" class="headerlink" title="后端代码"></a>后端代码</h2><p>数据库依旧采用 Supabase,新建一个 LikeCount 表,设三个键:index、count、ips,其中 index 为主键,保存文章 abbrlink 码,count 为点赞数,ips 为用户 IP 地址。表内无需插值,遇到新文章的请求,后端会自动在表中新建一行数据。</p><p>仿照 <a href="/post/602922a7.html">上篇文章</a> 的后端部分内容,补充以下代码即可。</p><figure class="highlight javascript"><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 文章点赞计数</span></span><br><span class="line">app.<span class="title function_">get</span>(<span class="string">'/likecount'</span>, <span class="keyword">async</span> (req, res) => {</span><br><span class="line"> <span class="keyword">try</span> {</span><br><span class="line"> <span class="keyword">const</span> mode = req.<span class="property">query</span>.<span class="property">mode</span>.<span class="title function_">toString</span>();</span><br><span class="line"> <span class="keyword">const</span> id = req.<span class="property">query</span>.<span class="property">id</span>.<span class="title function_">toString</span>();</span><br><span class="line"> <span class="keyword">if</span> (mode == <span class="string">'get'</span>) {</span><br><span class="line"> <span class="keyword">const</span> { <span class="attr">data</span>: filterData, <span class="attr">error</span>: error1 } = <span class="keyword">await</span> supabase</span><br><span class="line"> .<span class="title function_">from</span>(<span class="string">'LikeCount'</span>)</span><br><span class="line"> .<span class="title function_">select</span>()</span><br><span class="line"> .<span class="title function_">eq</span>(<span class="string">'index'</span>, id)</span><br><span class="line"> <span class="keyword">if</span> (error1) {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">'Error:'</span>, error1);</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">404</span>).<span class="title function_">json</span>({ <span class="attr">code</span>: <span class="string">'404'</span>, <span class="attr">message</span>: <span class="string">'查询失败'</span>, <span class="attr">content</span>: <span class="string">''</span> });</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="keyword">if</span> (!filterData.<span class="property">length</span>) {</span><br><span class="line"> <span class="keyword">const</span> { <span class="attr">data</span>: insertData, <span class="attr">error</span>: error2 } = <span class="keyword">await</span> supabase</span><br><span class="line"> .<span class="title function_">from</span>(<span class="string">'LikeCount'</span>)</span><br><span class="line"> .<span class="title function_">insert</span>([</span><br><span class="line"> { <span class="attr">index</span>: id, <span class="attr">count</span>: <span class="number">0</span> }</span><br><span class="line"> ])</span><br><span class="line"> .<span class="title function_">select</span>()</span><br><span class="line"> <span class="keyword">if</span> (error2) {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">'Error:'</span>, error2);</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">500</span>).<span class="title function_">json</span>({ <span class="attr">code</span>: <span class="string">'500'</span>, <span class="attr">message</span>: <span class="string">'新文章录入失败'</span>, <span class="attr">content</span>: insertData });</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">201</span>).<span class="title function_">json</span>({ <span class="attr">code</span>: <span class="string">'201'</span>, <span class="attr">message</span>: <span class="string">'新文章录入成功'</span>, <span class="attr">content</span>: insertData });</span><br><span class="line"> }</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">'Data Search completely'</span>);</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">200</span>).<span class="title function_">json</span>({ <span class="attr">code</span>: <span class="string">'200'</span>, <span class="attr">message</span>: <span class="string">'查询成功'</span>, <span class="attr">content</span>: filterData });</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span> (mode == <span class="string">'add'</span>) {</span><br><span class="line"> <span class="keyword">const</span> ip = req.<span class="property">query</span>.<span class="property">ip</span>.<span class="title function_">toString</span>();</span><br><span class="line"> <span class="keyword">const</span> { <span class="attr">data</span>: oldData, <span class="attr">error</span>: error3 } = <span class="keyword">await</span> supabase</span><br><span class="line"> .<span class="title function_">from</span>(<span class="string">'LikeCount'</span>)</span><br><span class="line"> .<span class="title function_">select</span>()</span><br><span class="line"> .<span class="title function_">eq</span>(<span class="string">'index'</span>, id)</span><br><span class="line"> <span class="keyword">if</span> (error3) {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">'Error:'</span>, error3);</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">404</span>).<span class="title function_">json</span>({ <span class="attr">code</span>: <span class="string">'404'</span>, <span class="attr">message</span>: <span class="string">'查询失败'</span>, <span class="attr">content</span>: oldData });</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="keyword">var</span> ips = oldData[<span class="number">0</span>].<span class="property">ips</span></span><br><span class="line"> <span class="keyword">if</span> (ips.<span class="title function_">includes</span>(ip)) {</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">200</span>).<span class="title function_">json</span>({ <span class="attr">code</span>: <span class="string">'205'</span>, <span class="attr">message</span>: <span class="string">'您已经点过赞啦'</span>, <span class="attr">content</span>: oldData }); </span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="keyword">var</span> ipsArray = <span class="title class_">JSON</span>.<span class="title function_">parse</span>(ips)</span><br><span class="line"> ipsArray.<span class="title function_">push</span>(ip)</span><br><span class="line"> <span class="keyword">var</span> newIps = <span class="title class_">JSON</span>.<span class="title function_">stringify</span>(ipsArray)</span><br><span class="line"> <span class="keyword">var</span> newNum = oldData[<span class="number">0</span>].<span class="property">count</span> + <span class="number">1</span></span><br><span class="line"> <span class="keyword">const</span> { <span class="attr">data</span>: updateData, <span class="attr">error</span>: error4 } = <span class="keyword">await</span> supabase</span><br><span class="line"> .<span class="title function_">from</span>(<span class="string">'LikeCount'</span>)</span><br><span class="line"> .<span class="title function_">update</span>({ <span class="attr">count</span>: newNum, <span class="attr">ips</span>: newIps })</span><br><span class="line"> .<span class="title function_">eq</span>(<span class="string">'index'</span>, id)</span><br><span class="line"> .<span class="title function_">select</span>()</span><br><span class="line"> <span class="keyword">if</span> (error4) {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">'Error:'</span>, error4);</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">501</span>).<span class="title function_">json</span>({ <span class="attr">code</span>: <span class="string">'501'</span>, <span class="attr">message</span>: <span class="string">'更新失败'</span>, <span class="attr">content</span>: oldData });</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">'Data update completely'</span>);</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">200</span>).<span class="title function_">json</span>({ <span class="attr">code</span>: <span class="string">'200'</span>, <span class="attr">message</span>: <span class="string">'更新成功'</span>, <span class="attr">content</span>: updateData });</span><br><span class="line"> } </span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> } <span class="keyword">catch</span> (error) {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">error</span>(error);</span><br><span class="line"> res.<span class="title function_">status</span>(<span class="number">500</span>).<span class="title function_">json</span>({ <span class="attr">error</span>: <span class="string">'Internal Server Error'</span> });</span><br><span class="line"> }</span><br><span class="line">});</span><br></pre></td></tr></table></figure><h2 id="前端代码"><a href="#前端代码" class="headerlink" title="前端代码"></a>前端代码</h2><p>前端设计按个人喜好,我是将点赞按钮和打赏按钮组合在一起,毕竟赞赏嘛,先赞再赏嘛哈哈哈哈。</p><p>修改<code>themes/butterfly/layout/includes/post/reward.pug</code>路径文件:</p><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><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">.post-reward</span><br><span class="line"> .like-button(onclick='ctrl.sendArticleLike()')</span><br><span class="line"> i.fas.fa-thumbs-up</span><br><span class="line"> = ' 赞 '</span><br><span class="line"> span.like-count= '0'</span><br><span class="line"> span.load</span><br><span class="line"> i.fas.fa-spinner.fa-spin</span><br><span class="line"> .reward-button</span><br><span class="line"> i.fas.fa-qrcode</span><br><span class="line"> = ' ' + _p('donate')</span><br><span class="line"> .reward-main</span><br><span class="line"> ul.reward-all</span><br><span class="line"> each item in theme.reward.QR_code</span><br><span class="line"> - var clickTo = item.link ? item.link : item.img</span><br><span class="line"> li.reward-item</span><br><span class="line"> a(href=url_for(clickTo) data-fancybox='gallery' target='_blank')</span><br><span class="line"> img.post-qr-code-img(src=url_for(item.img) alt=item.text)</span><br><span class="line"> .post-qr-code-desc=item.text</span><br></pre></td></tr></table></figure><p>修改<code>themes\butterfly\source\css\_layout\reward.styl</code>路径文件:</p><figure class="highlight stylus"><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.post-reward</span></span><br><span class="line"> <span class="attribute">position</span>: relative</span><br><span class="line"> <span class="attribute">margin-top</span>: <span class="number">80px</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">text-align</span>: center</span><br><span class="line"> <span class="attribute">pointer-events</span>: none</span><br><span class="line"> <span class="attribute">display</span>: flex</span><br><span class="line"> <span class="attribute">justify-content</span>: center</span><br><span class="line"> <span class="attribute">gap</span>: <span class="number">10px</span></span><br><span class="line"></span><br><span class="line"> & > *</span><br><span class="line"> <span class="attribute">pointer-events</span>: auto</span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.like-button</span></span><br><span class="line"> <span class="attribute">display</span>: inline-block</span><br><span class="line"> <span class="attribute">padding</span>: <span class="number">4px</span> <span class="number">12px</span></span><br><span class="line"> <span class="attribute">background</span>: red</span><br><span class="line"> <span class="attribute">color</span>: <span class="built_in">rgba</span>(<span class="number">255</span>,<span class="number">255</span>,<span class="number">255</span>,.<span class="number">8</span>)</span><br><span class="line"> <span class="attribute">cursor</span>: pointer</span><br><span class="line"> <span class="attribute">border-radius</span>: <span class="number">0.5rem</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100px</span></span><br><span class="line"> <span class="attribute">pointer-events</span>: all</span><br><span class="line"> <span class="selector-pseudo">&:not</span>(.loading)<span class="selector-pseudo">:hover</span></span><br><span class="line"> <span class="attribute">background</span>: <span class="built_in">rgb</span>(<span class="number">255</span>, <span class="number">90</span>, <span class="number">90</span>)</span><br><span class="line"></span><br><span class="line"> &<span class="selector-class">.loading</span></span><br><span class="line"> <span class="attribute">cursor</span>: default</span><br><span class="line"> <span class="attribute">pointer-events</span>: none</span><br><span class="line"> <span class="selector-class">.like-count</span></span><br><span class="line"> <span class="attribute">display</span>: none</span><br><span class="line"> <span class="selector-class">.load</span></span><br><span class="line"> <span class="attribute">display</span>: inline-block</span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.like-count</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">20px</span></span><br><span class="line"> <span class="attribute">display</span>: inline-block</span><br><span class="line"> <span class="selector-class">.load</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">20px</span></span><br><span class="line"> <span class="attribute">display</span>: none</span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.reward-button</span></span><br><span class="line"> <span class="attribute">display</span>: inline-block</span><br><span class="line"> <span class="attribute">padding</span>: <span class="number">4px</span> <span class="number">12px</span></span><br><span class="line"> <span class="attribute">background</span>: <span class="built_in">var</span>(--gavin-blue3)</span><br><span class="line"> <span class="attribute">color</span>: <span class="built_in">rgba</span>(<span class="number">255</span>,<span class="number">255</span>,<span class="number">255</span>,.<span class="number">8</span>)</span><br><span class="line"> <span class="attribute">cursor</span>: pointer</span><br><span class="line"> <span class="attribute">border-radius</span>: <span class="number">0.5rem</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100px</span></span><br><span class="line"> <span class="selector-pseudo">&:hover</span></span><br><span class="line"> <span class="attribute">background</span>: <span class="built_in">var</span>(--gavin-blue1)</span><br><span class="line"></span><br><span class="line"> & > <span class="selector-class">.reward-main</span></span><br><span class="line"> <span class="attribute">display</span>: block</span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.reward-main</span></span><br><span class="line"> <span class="attribute">position</span>: absolute</span><br><span class="line"> <span class="attribute">bottom</span>: <span class="number">40px</span></span><br><span class="line"> <span class="attribute">left</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">z-index</span>: <span class="number">100</span></span><br><span class="line"> <span class="attribute">display</span>: none</span><br><span class="line"> <span class="attribute">padding</span>: <span class="number">0</span> <span class="number">0</span> <span class="number">10px</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.reward-all</span></span><br><span class="line"> <span class="attribute">display</span>: inline-block</span><br><span class="line"> <span class="attribute">margin</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">padding</span>: <span class="number">20px</span> <span class="number">10px</span></span><br><span class="line"> <span class="attribute">border-radius</span>: <span class="number">4px</span></span><br><span class="line"> <span class="attribute">background</span>: <span class="built_in">var</span>(--reward-pop)</span><br><span class="line"></span><br><span class="line"> <span class="selector-pseudo">&:before</span></span><br><span class="line"> <span class="attribute">position</span>: absolute</span><br><span class="line"> <span class="attribute">bottom</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">left</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">100%</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">10px</span></span><br><span class="line"> <span class="attribute">content</span>: <span class="string">''</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-pseudo">&:after</span></span><br><span class="line"> <span class="attribute">position</span>: absolute</span><br><span class="line"> <span class="attribute">right</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">bottom</span>: <span class="number">2px</span></span><br><span class="line"> <span class="attribute">left</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">margin</span>: <span class="number">0</span> auto</span><br><span class="line"> <span class="attribute">width</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">0</span></span><br><span class="line"> <span class="attribute">border-top</span>: <span class="number">13px</span> solid <span class="built_in">var</span>(--reward-pop)</span><br><span class="line"> <span class="attribute">border-right</span>: <span class="number">13px</span> solid transparent</span><br><span class="line"> <span class="attribute">border-left</span>: <span class="number">13px</span> solid transparent</span><br><span class="line"> <span class="attribute">content</span>: <span class="string">''</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.reward-item</span></span><br><span class="line"> <span class="attribute">display</span>: inline-block</span><br><span class="line"> <span class="attribute">padding</span>: <span class="number">0</span> <span class="number">8px</span></span><br><span class="line"> <span class="attribute">list-style-type</span>: none</span><br><span class="line"> <span class="attribute">vertical-align</span>: top</span><br><span class="line"></span><br><span class="line"> <span class="selector-tag">img</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">110px</span></span><br><span class="line"> <span class="attribute">height</span>: <span class="number">110px</span></span><br><span class="line"></span><br><span class="line"> <span class="selector-class">.post-qr-code-desc</span></span><br><span class="line"> <span class="attribute">width</span>: <span class="number">110px</span></span><br><span class="line"> <span class="attribute">line-height</span>: <span class="number">1</span></span><br><span class="line"> <span class="attribute">font-size</span>: <span class="number">90%</span></span><br><span class="line"> <span class="attribute">color</span>: <span class="variable">$reward</span>-pop-up-color</span><br></pre></td></tr></table></figure><p>添加自定义 js 文件。</p><figure class="highlight javascript"><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><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// pjax适配</span></span><br><span class="line"><span class="variable language_">document</span>.<span class="title function_">addEventListener</span>(<span class="string">"DOMContentLoaded"</span>, <span class="function">() =></span> {</span><br><span class="line"> ctrl.<span class="title function_">getIp</span>();</span><br><span class="line"> ctrl.<span class="title function_">refreshLikeCount</span>();</span><br><span class="line">}); <span class="comment">//第一次加载</span></span><br><span class="line"></span><br><span class="line"><span class="variable language_">document</span>.<span class="title function_">addEventListener</span>(<span class="string">"pjax:complete"</span>, <span class="function">() =></span> {</span><br><span class="line"> ctrl.<span class="title function_">refreshLikeCount</span>();</span><br><span class="line">}) <span class="comment">// pjax加载完成(切换页面)后再执行一次</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> ipAddress = <span class="string">''</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> ctrl = {</span><br><span class="line"> <span class="title function_">getIp</span>(<span class="params"></span>) {</span><br><span class="line"> <span class="title function_">fetch</span>(<span class="string">'https://api.ipify.org?format=json'</span>)</span><br><span class="line"> .<span class="title function_">then</span>(<span class="function"><span class="params">response</span> =></span> response.<span class="title function_">json</span>())</span><br><span class="line"> .<span class="title function_">then</span>(<span class="function"><span class="params">data</span> =></span> {</span><br><span class="line"> ipAddress = data.<span class="property">ip</span>;</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">'您的 IP 地址:'</span> + ipAddress);</span><br><span class="line"> })</span><br><span class="line"> .<span class="title function_">catch</span>(<span class="function"><span class="params">error</span> =></span> {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">'获取 IP 地址失败:'</span>, error);</span><br><span class="line"> });</span><br><span class="line"> },</span><br><span class="line"></span><br><span class="line"> <span class="title function_">refreshLikeCount</span>(<span class="params"></span>) {</span><br><span class="line"> <span class="keyword">var</span> p = <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">pathname</span></span><br><span class="line"> <span class="keyword">var</span> q = p.<span class="title function_">substring</span>(<span class="number">1</span>,<span class="number">5</span>)</span><br><span class="line"> <span class="keyword">if</span> (q == <span class="string">'post'</span>) {</span><br><span class="line"> <span class="keyword">var</span> i = p.<span class="title function_">substring</span>(<span class="number">6</span>,<span class="number">14</span>)</span><br><span class="line"> <span class="title function_">fetch</span>(<span class="string">`https://xxx.xxxx.xxx/likecount?mode=get&id=<span class="subst">${i}</span>`</span>)</span><br><span class="line"> .<span class="title function_">then</span>(<span class="function"><span class="params">response</span> =></span> response.<span class="title function_">json</span>())</span><br><span class="line"> .<span class="title function_">then</span>(<span class="function"><span class="params">data</span> =></span> {</span><br><span class="line"> <span class="keyword">if</span> (data.<span class="property">code</span> == <span class="number">200</span>) {</span><br><span class="line"> <span class="keyword">var</span> likeCount = data.<span class="property">content</span>[<span class="number">0</span>].<span class="property">count</span></span><br><span class="line"> <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".post-reward .like-button .like-count"</span>).<span class="property">innerText</span> = likeCount</span><br><span class="line"> } <span class="keyword">else</span> <span class="variable language_">console</span>.<span class="title function_">log</span>(data.<span class="property">message</span>)</span><br><span class="line"> })</span><br><span class="line"> .<span class="title function_">catch</span>(<span class="function"><span class="params">error</span> =></span> {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">'获取点赞信息失败:'</span>, error)</span><br><span class="line"> })</span><br><span class="line"> }</span><br><span class="line"> },</span><br><span class="line"></span><br><span class="line"> <span class="title function_">sendArticleLike</span>(<span class="params"></span>) {</span><br><span class="line"> <span class="keyword">var</span> a = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">".post-reward .like-button"</span>)</span><br><span class="line"> <span class="keyword">var</span> i = <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">pathname</span>.<span class="title function_">substring</span>(<span class="number">6</span>,<span class="number">14</span>)</span><br><span class="line"> a.<span class="property">classList</span>.<span class="title function_">add</span>(<span class="string">"loading"</span>)</span><br><span class="line"> <span class="title function_">fetch</span>(<span class="string">`https://xxx.xxxx.xxx/likecount?mode=add&id=<span class="subst">${i}</span>&ip=<span class="subst">${ipAddress}</span>`</span>)</span><br><span class="line"> .<span class="title function_">then</span>(<span class="function"><span class="params">response</span> =></span> response.<span class="title function_">json</span>())</span><br><span class="line"> .<span class="title function_">then</span>(<span class="function"><span class="params">data</span> =></span> {</span><br><span class="line"> <span class="keyword">if</span> (data.<span class="property">code</span> == <span class="number">200</span>) {</span><br><span class="line"> <span class="keyword">var</span> likeCount = data.<span class="property">content</span>[<span class="number">0</span>].<span class="property">count</span></span><br><span class="line"> a.<span class="title function_">querySelector</span>(<span class="string">".like-count"</span>).<span class="property">innerText</span> = likeCount</span><br><span class="line"> a.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">"loading"</span>)</span><br><span class="line"> tools.<span class="title function_">showMessage</span>(<span class="string">"感谢您的认可!"</span>, <span class="string">"success"</span>, <span class="number">2</span>)</span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span>(data.<span class="property">code</span> == <span class="number">205</span>) {</span><br><span class="line"> a.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">"loading"</span>)</span><br><span class="line"> tools.<span class="title function_">showMessage</span>(data.<span class="property">message</span>, <span class="string">"warning"</span>, <span class="number">2</span>)</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> a.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">"loading"</span>)</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(data.<span class="property">message</span>)</span><br><span class="line"> tools.<span class="title function_">showMessage</span>(data.<span class="property">message</span>, <span class="string">"error"</span>, <span class="number">2</span>)</span><br><span class="line"> }</span><br><span class="line"> })</span><br><span class="line"> .<span class="title function_">catch</span>(<span class="function"><span class="params">error</span> =></span> {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">'获取点赞信息失败:'</span>, error)</span><br><span class="line"> a.<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">"loading"</span>)</span><br><span class="line"> })</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><blockquote class="orange"><p>注意,上面用到的<code>tools.showMessage</code>方法依赖于 ElementUI 库,如果你有自己的弹窗通知系统,可以将它替换掉。<br>如果你也要用 ElementUI 的弹窗,可以看上一篇文章 <a href="/post/602922a7.html#index-md">给友链朋友圈加上收藏栏</a> </p></blockquote>]]></content>
<summary type="html"><h2 id="预览"><a href="#预览" class="headerlink" title="预览"></a>预览</h2><p><img</summary>
<category term="博客魔改" scheme="https://blog.cancin.cn/categories/%E5%8D%9A%E5%AE%A2%E9%AD%94%E6%94%B9/"/>
<category term="Butterfly" scheme="https://blog.cancin.cn/tags/Butterfly/"/>
<category term="node.js" scheme="https://blog.cancin.cn/tags/node-js/"/>
<category term="数据库" scheme="https://blog.cancin.cn/tags/%E6%95%B0%E6%8D%AE%E5%BA%93/"/>
</entry>
</feed>