GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2023-07-08T10:00:21Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/817rtph264depay: Corrupted frames, possibly due to parsing issue2023-07-08T10:00:21ZPieter Jordaanrtph264depay: Corrupted frames, possibly due to parsing issueHi
We have an RTSP camera that always shows corrupted when viewed through gstreamer. ffmpeg shows it correctly, and when using ffmpeg to relay it via rtsp-simple-server, then Gstreamer works flawlessly.
It seems to be related to the rt...Hi
We have an RTSP camera that always shows corrupted when viewed through gstreamer. ffmpeg shows it correctly, and when using ffmpeg to relay it via rtsp-simple-server, then Gstreamer works flawlessly.
It seems to be related to the rtsp stream. I've noticed in the logs that the `codec_data` field is interpreted correctly once or twice, then it becomes massive as seen in this log:
```
gst-launch-1.0 -v filesrc location="weirdness.gdp" ! gdpdepay ! rtph264depay ! decodebin ! videoconvert ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstGDPDepay:gdpdepay0.GstPad:src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, sprop-parameter-sets=(string)"Z2QAM6zoC0ChEA\=\=\,aO48sA\=\=", a-ptime=(string)40, a-videoinfo=(string)"720\*1280\*25\*4096", npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1, onvif-mode=(boolean)false, ssrc=(uint)41158
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high, width=(int)720, height=(int)1280, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0/GstQueue:vaapi-queue: max-size-time = 0
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0/GstQueue:vaapi-queue: max-size-buffers = 1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0/GstQueue:vaapi-queue: max-size-bytes = 0
Got context from element 'vaapipostproc0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
Got context from element 'vaapipostproc0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayDRM\)\ vaapidisplaydrm1";
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0.GstGhostPad:sink.GstProxyPad:proxypad3: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high, width=(int)720, height=(int)1280, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0/GstVaapiDecode:vaapidecode0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high, width=(int)720, height=(int)1280, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0.GstGhostPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high, width=(int)720, height=(int)1280, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high, width=(int)720, height=(int)1280, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high, width=(int)720, height=(int)1280, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1000a67640033ace80b40a11001000468ee3cb0, level=(string)5.1, profile=(string)high
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, sprop-parameter-sets=(string)"Z2QAM6zoC0ChEA\=\=\,aO48sA\=\=", a-ptime=(string)40, a-videoinfo=(string)"720\*1280\*25\*4096", npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1, onvif-mode=(boolean)false, ssrc=(uint)41158
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1612467640033ace80b40a1100000000168ee3cb000000001658884027fd3095140c66dff84425c9509aad37e9d5c3cf262e52918209c44324375183b209cbeb981a17b9a98bd7d2baa5c35a97d101bbf0d738ec1664a14e7158a37b94392c6a617b4ab4f87dfe1e4076993a8987b3e80b91bbcdb798bf8aa35385422156438322e1bfc2a1bd529ae6abbbcf524a213fb334f9f0f96be9b499c51add4cf55609f9e7cb80107e08d0dccb510af90960f2364bf2e43d20f4b1e9fe8baf0b7683518761bb7d5a646ffbd40f24f02cf3e017d5c746f10fc96a352c339e46491886c987f3eb2fea0b744f0ba865dca6eebfb551f9dc5f0e5ee5b8522e1dc7ea6eb11f5ba77b357db12059600a16fab678e5a739f2a5118eba378e443cedb310656f8bd24b6af76ce3428882e987e6f4e056e006b2f3b72a6dd21fcce1ced6c1c2d01459beded7f54869803dd035c266eb757ff744715dbe4fb86dfa723efa6c17efbdbf7bdea51add2b1a12017246804dbed6685a9bc55cdbec47acac7a9cd39e5f9cf6f65de530f43ca947c800660c2c58dc3f54ed09ebc4ea625e6402e92485abc82b08be6b2ae82564c8568c9aa7a7487411e805306147b5d4f2c1874ef3e8641b1ba3db5378ae22a460a7ef6efd68bf7f17c2c5246d7b6b5a2b5d6f4fa7b30b2183fe8f085fdee35dc86b0f4441011324322727447d95ee06f61d0c3dafef9366441f8584dbf0aa4f0ebbc9dbb718f0d80f5f103426ee9fbd81de2d18301faac311df1b7ce9873c68474f801b312f218ab8be2e30abc4b35ddb5f94bc7f4ced09c023354d90b86f1947bd8cf2bb776e507752bdada84e49f0ffa352c8d7b264cc1ed063eb995104efc639c538ca143358893e6e3e8f6993d66300ba8c648b6962bdd50ed57d47ef2f374cccb6c209fddfaf37286f0b3ee7abee5b7be26b1fe40d26bdf7fd1a2e03eb4daa3e18772126f843a9f53dafdd0c20eb4d6a8a966efb251a5f406c46d409192b0cf6d21cbaedd34446dcd0ae8c2866efa6abb81b4df7bacdbd8b5998450d0758a45cb2ca7deb0cb8a223de6b4166a58a2539e18208ea5a69b54a046c6be43de62bcb1f61cb43d41c1a7b31cccf29e7228279b5b6b1c32ed2b887a4532b6c01bf6c3fcaa0620c5f25a3e8802d7788a1084c2704a451b3d65954b3b104a5ac22f138388dec5e32bc97c8930e1a34e226bf7905e0eb5bf17fed4eeb35eb2af73839e2e2b9c9c24e21a7f3e700233aa51a3cf96c905833ed5ffe83605d36a836d4aa546bcfebf6501f7ab6bbce274ea370db83937792322bf146d01465d0dda95228c125187eba82c036411ab59229dc6a5b410417bddceb4a357b8ecc6c501f96079afc6b1bde12d1f6fc5748cf37c6afabb3505ab0ed3847376478038a82b49be4540ab07e758973ecd1d4aa7e7e23398d98df18f61eca88bcd9e7ee6c562f762d1f52664b6bf0d6d5221371359bcff475229b06489f1c08e9b57af211640911099dbc12262069c95138516355c0c2eaae44e7bd0f732c1de0521b084c1ea8f16e5d0624ebab63820cbbeaae1116957f58787a6813743eb48dbb9c80bc3a02ef396c9ab316cccc31bb09d5d0a4c9d94bc179d19cb0c8a51066755e6ba6bc52d0c66bca7f23984ac41b24c742e4bb7076bb10378249387c69f4fa3936bd2dcb7276ecd94919a0d9716d353f25c6fadf4fcc4f6d257427abf637306f622a1f8d69511acfd72c37c716b0c7a390f28571b474dd1133b547ad30dc66b3dc9ac949732b8fe47e7bcba1b79c4b51fbc700c2bdef9e146e2e9ac9e6bdbb17dfeff18b7a7c1b565fcda9a7c267782af1f8c75cc43f5a8a1b09762698069fbc49dc6ec14032814556ffcadf3ad28de3708d67c270ae956aaea5429ba5d3d4462b76e4628d010d4505566e6805e19635cb620510ce0cfb370f11ac563a237ad6d0904757b92c21d9c23dbdb74052743239ab70a7fd992bc92bc082f3579ef5fd545db75d78f1d259d1fc6758326e8a6092982885daf9fac42b9e35214e557bfcee298244e04257e4450234dac9163e1bf9577cc68b09d99a9245967a3395602779c3c9b4459123a41e68f3d08fb6ae7de736c84a00b73302518d2fd177138e0aae766fd6f28a1272afd3ca9d79028d6c48de628c883a51b021488e59711f01b0b33309cfc2716ec1e491afb702f9853c09d0620721bee8c30ef6aa45ccf3a1d0c306d583ee527d75ace7909fa796e34358f45e28a8642f913f76a5c7b63fc98477aeb3668db6d4703dbfb43008419b7c2871120ade5ad23995deed0d49f170ffa9a74bae18002bef858e0a9fb6ae4fd22d3ef25b30e2811cbb1d18cc71e4b17b62f04be84fb3345550e5852fdd901c52076545bf3d30b1ec29601d2810b6940dc08ae4500a78644d99d770f3e9defacfbaf010f0a49e8ba767538c1fbc8f7a7e1000bf585e0646c4011130321b4b335b74bfbed34d8b46a021e1ab1d0762754b2830e5ad330edbefb2c0a97d5425945350f31344e46a32a0e0171bc456faef1fcdb9a74f9a169370c6c16af6061f19b40d70ead3ec6164e99c66425803f84f5aba968a53ee3ec01bffc51bc9f26571aff221eba3ed376da435f7acccd1f9aee01dd36cd73cdf2c74d8297388ba45b0c4168666f32e182cb44139b6d313e843d97c26b21e5db3512fe17ab2cd5b3cbd1dbaeb0c1674ef25a4a1ee99e4941bcb1677ebb17d754bec1c784a8de50ad48033e2856112188a1237739d1d9b729f1fd9cff5eac2d0b61a2279eddb3772635ab31965bfe80982fb2df5507f5620d05f6bce764c3093fd0edfd7be04d972016a9518ee2c7fac2e8024ab52ed65efce4f3eb0144c3a63d6327cb65d14d4a739747cf72ebeeaf7c371aba794137e33bcdc99a9f8c203075237cf313182fe2267f4a3c16d17b3bd341d5adb048dcf506327a52e2436c95bfe741e14782ff91fb4b7b50a309342606383e4a647d66e55cb57ff61049cf91dc263a3ebcb9408aeeddd91fcd7a4532f88d0bab396887e2a818bf411cf5f6801f31193bbe0b012f45f340fade9625e05ec39d69208677f46de37a3177cf68dac7a818e6e41ad8445330a989f77aa4892a6145d59acf71d9452bd37c49a7258cfa70d3eb6c0193d940adf0809864a610ac148d9f6b2d37e0f42c54f5cda4f5ee11e197ada3f75c8595f34697d9d6f925d39eddf0ec0eabe1ac46094c440b9a9d075123440ec6cee450ea39279b48c95fe50de204bc5cdd170f645f6d69de6fef7df0feb09b03a8a9e0787a6b5a4a6883af0351ee7e882e9b56ca90188284803d50114bfadbece1e8537e87fa17d574df611cb5c1a1e0923bbf0bc56dc8c0e51b9d8aa18e27cc7e6daaf7f2238ef8e5dcce6e7066a4f0ce027aa237f9cf2f48ecc9f966975541c3e51bcdc253030b23e1e004150b7cad631320ed6cc2526c864e6da2c101d6762d9c90c8118bf6580c016c7fe536eff63903068b6a724fcf8d6839858011091d1644c6407ab07f3d7983d0f2386146e1a2f3a24ec02d6e533c7ddec072e70fe650fda1db677868dbafb2c627ad26d2d7582d4ea82e7529b6004f14c2382c35a66b29ac6fc8ae8b7f4f1f1892fb140934a6b48268b4e4472e725ac2d394a89aea4872a45ccf66b1d572e8796bf9de51f027c7bc23d5f7d9a845a6c82282e4cae547e87f0ee594be1507f1f86efa46f9c32eb2ca16b0c47ce5e1101548712e2530b46cd8cd2402d34baac37142e2c80548be14e9f7aa1a67a67d6a86cfc013c601ee2453865f6addee2c2c6e4835ddc3768d7f78204ad939301aca0e77172f43e829251a84edfa83f0f9fa775cb05f6f9de8ac468b5188a3bab572d7244fc098abe659239417ca27bccb47088fc804e430773ff752474183a8306bdaedf8e92828d72834ea54ae3d5725e9ef02c01e80d1253f1b1adb019e8f3fef6ef4aa545f2872eb8afd87c3872143b8e0160fab4a97a2461afc86ceaf8d3516666a7ce69ae0ebcf31e3e4af6e8bc599c7606a154d874d142719590f2b2df02822409d61f082f07744803f9d086e6c9f8fe8362bf546741beda2d22e1094a1e8c713b4f98356b4079735f9221dd52c55913a3d8f1e7b0a9e6ce09f8f4b49c705562fd16b1eaca4718d487a4edd7e73c56dea724ebf23cc4f6ee0d6c53b2dcd87f430ede1afc6c3394369848b81dbdc1de6386e05135eef23c1ee158e77aebf3acd4c3df62c8e854c097fee76a038971cd4dfbe015001ac81c6205e20cbf7db3df7713d817b24e8955c12ae3c68e2ddb7c308c601b58a0549ad11b781579d326d0de08f9057c36e7843cd014a00d17250b726f59736ee0783708c42ca7313466829cc6da6880c40c1fac1e11a0ba01510f3037755b4fa0345a8d39d67e0fb21d894cd6916515993f5f15671deaf3e6504a621861a2b078cb3672e74cb82a97cf57bbfba81d8836a4baa8a5b0e360470ad3abd4c4907edafd47385d08227ccc65689339403b25027d365db0b548d6ec1c4e8cb45e351780b32fae40f89d04431a8132cded2697adfe64882764b32fd023a3edbd2a91262f6eb2a48abc5ce824f7416121a7c473f76c27a8956978eaa7cbe63c979844c519249a94a78d4d3b980931db42d9347929e491acf65b4295123899a1b2eebb23ec5d68b600f8c4216a6fbcd7fbd8a51fc749e345cd8f11772d50199efe8d9d9fd68919317c0b6465bee685709e285cfa889a0e42334861c588b20f0205343dfbf0871f7c1bdc36fe482d29bfb81b2422d8073c75ceffce1d2616acdf8806b1a4a687c76b86b9452fceffb78fcc5fd9318ad5fb5cbf0612017d00ef0258868ed2064e2b59bd474c9d21a5d96cb2a5f191e117898aa38f22568a378674840b6d0f6670dc1668ba7e0f2581502a1915a535ec035fb44b3bfa41abcb491d7f66421d4db92a3efa61aef243dcf6de47488e7decc3401cbc2102ac99bfe1684c576167f4ace4d7abe43fac2e722fcc7ca3ff428d391526b148079f68e2b227901bd6ccecbdb8eb4d0c588734bb9dd9a41b0e47b81849e9ca5172d37b5c0100c514f97fef3b4f4e68431105ccce54edcba4fa1cbbc331156369944597774509c706b97bbd025300ffae48f6b8abea662bf36394b6c6bdafe777fa4b56a481c765c6a286c4a48472357c79e94d8fa04b6a1438f060a7407528412da47176e7db38f1f679f8bae6e01fba023ef5986d8eead8e1b16d6faa17b6a50258a30bbcf5782ded1f2cf861d8ca5d4b42905464eded1059753b499e2fde2d269b33b56aa903ab01f820e4793789430e82db23da158b84817c5a7d1b1ef12c813beafd106c68b44342542e5296ed5a6e5b7ac3f66c17b26356b3eb28867e00eaf505986fd7d1830fa3936a0cbfa0c44c3e0b392228556044acaa4a2104e07317c432889e93dee7ecac690e5f49938d0689a6b05f867f8153a2d75eaef2c368bdffdc1df2a6b718d83b20fdb1572315cb5fce357a9d10e2ae7df6959b30a5919500e9bad42de88498f140b47a5972ceb048c6906b705396fc6672e2a1777a082ce6c49bec2c1f5fc27028d4fce4e7a05963a1969c8c82b70b1ca6ba8d30401e36b36a2a5813ed88107bc2bbd2f89dd450fd9d95b4b6e58b52c542b4a1b55c401e6eea8fd9e6aa5f4d93451e7f600f0e4cd3eb5332aeeceedc3e75209f90e94f5ea1af820996d2c05bf806b5249a91596c5a1db2525f92eb8a9c41e71164ff424716b10a9b50d5cd9a74eaa69378e35b85c71901378b18fcf0e0c5fbd3a6faa778dbfb4318d65262b8ac8f523d2bf7842783b480ebd46d7b137baed7c9f3a30383c9454e7aa39166d13bdfd7399c89cc67ceba066de535c3f605a91583738ed96f01e8b7cf38a8a0fec03158852c11d8e03d6e00ef7b52a694a9ffbee3d87cef229adb2d0f6f3a7bad79f2e442dedb9bbebed9d70f631482de829bfc66fa01aec0d32282e1b514537d823a71d31adf5fa076a5c0a7ec27ceb9b3f55fd2cef18f51fc95ea90be7abd436a8952fe5436009f40f6c842d613cb95c6bce122bd5117dd272e1b8eeed1d3a9e4e30d6f143b2f59769d42c6ecbf26b55d07024c816ac1035c2def3ce6bdfbe5325d1927587afc6ee8d353cc4b6575926be6c32688a6829095318f270b47182525ba7046b189dadb71d6669b76d54a170b385fcb6412000e7574062ca93a321b3f7fff41d0d54fef625ead00930ebf492c732c5a406b58512af888b3cf2c4e7c2ac6ea89739736b91c385cd294eaf3d0ce3581463c89d47d02257ac7918d20be12b54b5c53fd66751af867d8824704131b15647f56176f023dd4f5cfc883ace202c54bca988390e36699ff6b77d5797403fe3cae44eb371d754d45f06fe603cf21f1f081c8deff7e4e71b61be23362977eb4c7d11ef3f0092d54afed3834268e6d5c05bee70b8387fb30411446a4c09246bc824468f987bef8673e1298a89771cecee48ece9a10b39d63d196f8b5382e516f6c73e34c3ce717702e445dd641711ccd1f2af24c1ca9e78543cd4b04a2aa9f5a52a12f0dd2c1bf696029dd8b18fea0fc6afc6452ae8a70db5da1daae2dffcb98d290213cb249a0d5acfe1c913c52a540d5a101647686f637b3635ef03b457f72bcd71f50b11bb3d4515a8cb05186df67b22a1458dedb6359f5fe93a551f493348f971d25132237c79d0445f169a037a3f9c3245c15e8eea2721c059743eb0104fc05bc2b949178587f821fc7c98108cc70a50ed5541387b05fc1e7ac028bcb81e43529fc17781e84a7a4fb7618ab67ad1306a9f1514cfed114ee05aad202592d03160300f11c21356e7e37b930d42355f1f675dd9477e7fbd64e82c55e994f6af49b690c40e43923fcaa71ccf4dc0c9a74a33741d3f2444aa9e402e07bf37347a00e45fe2f84875db1e266b9662eccd05a9b41cd6e7943c80471a042202b00149606989a7bb0e297fabf9fd080671922ce4f12b8e7137280b6d651dc2a0e90268f720fd4ec75656509e4bd00af74147219db0dfe4ba0ca231224eefdb754e00f9cda87295cf033314ebc0383d4e0ee40415db245323f8d93a45c6f8c31c38461524fe89c8e7962efc8fdf0ce948dcc8592205de9a395df27df6290a84765213c1c9b7a7758d671c25996fa6351835b77f61564e54ff6d27644bb09081c810a87a9f829e20c4994c9319799be0d1466d1c2b889ceb7cb4014b6cee7a6f7e7826976c376e29e260db164779de3912aa6826346a685c7882984929fb12edcbf80f8ea819035c4d002bc023c1b01155448a584d86c93eca95a77425b035aaea8efb46249168b3c2c9de4acc8b835337f3fb5146ba6b9b324e9508dd949ff26e9d1c61620c14c46e58017cc7e0d8ee17631d72cfd065dcc23267cd86cfeb674dc0b979503c22db5c8fa558323b5ac07cf91a40068c4a898a681a85cf1b97325bdc92c249d5d1de3cdcf2b654f5a232f30b1d88bce954ef9d8fa1da5de0d100a94fa3f1351eb42f1d2fa8475e220ab051af76907eebdbe735173bcccec087553b0d883bc62c7efe62fd773956902fcfdfb2f59744d760d7359b67241c911aadcee5d8c0409349c6af0bd25e58e2c9791426733019f109101499dd1e1aa02802312aaf80725ec64616504d014dbf71654cf4875050d7040f62128cdd991bf8488456bb1011af3a1b71252d2473930250fe2ac66fcbf1bb5803d5074905b9b4c199e51b05ed606151a9f53e457fddfbdb4a066f4aad7cc879c5f63a30fd5d2d3263644c7e8258755555876be87236508034100e37de973756401fc3da5f7fd7b704bf7bfa540e70a53dca6f5a5fddb2653929ffee8e2850d94957895aa832f8bfd63e9a9e2e270c2fc393387c42f4710e110563fd4d9ae0da005fe2a413328d163250eee11083add0149c0449cd0e29dbd4302fa04aeca44e6688c09781fd69616b220093576ccfd1ef0f0879ea5062fe13de3320e428c3b624ee72c1db95f7dc097b3aa58941bcb3a68239a67294d73a1914158bea59a789e75ec4a6aa56a4adeefcaab6fa10933616923caa0d91333dbbe045dcafc6b848894c0c22930704d81edcc05c11d86afb6b5a445cd2bf7852041857a0c580ebf6ce42569a50ee4698928c05cbadd5682b6834c0810b475657f2437574e9e638741bf084f34b2af70b4015d5167e5deedecbf799650b9cf4dc1fecf629836cafa521b35c393761bebbba7c8f6dcf0a169b195780a2762e015082e84f4ca4410912e4d196d9f637dec16916f93d27fb654115811b5bb1a2eec9fa38559967657b30ac792ca2d487a056752a7b40abb35b96d64aa53763e6aa801be4c04ee1bb1dc3069d94c9656da7f0a54f6752dd1cfaf31f1da4344e015f602c21edb95d8914ad343a2ebcedc42e3cc44ccdc2a9152552532e1cf3a3164d1b7442e786fdaee2295da572467aec61e3164630772be5268965300477181e1d00f3c869780e6f395614d70d0225120622b6c8320e33278601c09ce3578a70d84e2a0f2df9c6e0c90e34cfd452fc0f9f8a1d3129d96dfbe27b8c3a0d1ebaeef4498751ad080168cc4cb7fde5b1074abb4e38fe89279d63c90c7423af62dfd14868c9892b573a3cc3563a75a0d939cf6d014b12fce763f3c57360bf089e94ef4c1cce014917c810ad2fe401e1ab5845eb92a0ac8706048124e972c3f4e0c9f4f9af17cbcf4dcd831951c86358f58896d4a9779f9cbcdc1df940d363a74f14c730bfe42efc6ab09028f4d6fd10c630566787d317f244f168da954b3be808a631f4c3560438061624bcc31b50dfa12130dbcde48ec57a4e2766752bf88d744a45344a8b9ad0e1c9cdb5edd7c6dcd2b6a7b5023b89689650fe4f28897ea99be536d9d9e001f85f976f0dbdb4882b6741284b9cf17813f13434798e3b93f82893feecf03ebfac32cf6ce101e702d321dac75f84216301ed13335875472d1d9bcb8701c419b1a7806ea42822cbc2b50789f05131ad0555c988a0b85c0629128834b7f479f496fd71a11299e404e5c51b833426e86bf9fc83194755da0b07be913bd2ffb8dea4fa9c6f565d064438f43635b5185636971d6bc7c064366278325b6a839926fdf0925ad2d4b3ab27ea24f36f94254a8979ac1f97ec5048ab811b61b72d4b368f88cead9aa95ff998f459933feb03790978553de6c266c51d046c12c0bdad3428ece630deac32ca3652a6df26aeacadb3b65d8b3b3c3eb559eafad5863bc5d73fe61e3fdb742ea0b5bef2f7f3e98dc23f12ad9255b6b9d279b7613359f1d3e82cc6baaaba8d4845b91f7f98f75a07d2d20474729124799b4cc055f75b1ca4584d253cfe9ee99bff17082576d150ad5e818657ea16e2c0283763dcb9acef4cca3480f7f1aa8a29ed6a29ec7f1eb7ad7061aae0ef5724bede6655f321cf02ca220dcacaf2fbc5af0b1426b41f896f4a5a9b0de78aca6f6434b5b441591dd7d3fd3c798fe599eeeba6320311e2f4df7a18f2e17943dc4c34492eda3e1fe5b30e9bba6c035b72d6e483d185d1b3af29732194ba8fe68a68ae0be8735546fe94e66de79312b0f700ed5d19910b4ffd51b74be0f1bdbfc44aacf2341791d15edef963d668349a1cfb5513a81efbf4451098c94d23037c84a06b7f253e15899c99c100b186a20694fe00d185cd16159db78d073b9d060fd1108523dfa4b553603b800a05001ffad4cd47daeaac224dd765f0de845cd7fea5d073f787a91b899721b82685efee9bab1234c9a4884af32f0195908de668f7e080e554dee5d1627860db2148a23a4d8766c0949a3a479c482b4ffcc33f325f3f3a4f1f23db8f0585872e059badbc5d7610c42d76e00d5a83232d3882dd0d7d1fa39861267a62bca955493803b5fedb422c04d83ea1f1f731d8b37db896c2fb568e97667b841cb94151381ee5096b75f929f661115f369134a3eba0c771733820f7ff92aab912acd89a134f3914b04687b3ae75a82cb8ffa628a5b10858a4bb67915ba8b95da2b140a86fa59bf92cfb2f58ebe8874810aa6aaabe548422a57d2e62a7650c062939e5011be734bdb822b7e353fe239852916aa42a983c92ac8e9ac5b7a328ccd8d59a006701976f9377954497a06c40670a5598055e3f18ca051fde440f6ba62832da2e925b1f2f870c7bf5cae7ea9f3db5bff18ed30609a7653edc57c2dcb8848e84546d3f80d9931ea926936e75233010098daece0026ac60f3dc4d9929c46c5534f60837f533680cb0b55ba52c72d1337e706a1505b2508b22310035928212b234d4f95acbcd76b2aebeeb9232eb9aaf45c0a35bb85afc3ce2c4e503f89ccd23216c922f691111a746ad2190899ee90d4a5c3b970171e89f9bb764183f35ffe9ab5a3aeb84d4dcc093f613b94b01ac355b1983f0def905e7f97beb009d01d25632909a360a7116ebe1ea61b8d2c093b72425a644c86da269ab7ebdad6671510b2edcace4d7c517880c0aac039255f7e1be63b2946d0f5786bff2e4a56698cd7ccd2b1ecf2b955e5d792c199668e694d40f00942712f144cfa33a0e29125dabb47ed7173fe368b7b2ffb73e1f795a13e1b127476ba1dcaf688e094fae0936d2058dc251c9e71ca75b0474c7e2294535c9d10267cbd6be995214be14b048ab2847b90c51b68c35acd2f49cdb2c0c2b1b79d1a4acd8c4335bdcb1f855e86f659a2d55b509c4002a86af40811a031c86f6b2e55338a5dedb93cf43595c5dda4fc47698c5a7246274a85d717873314df8c26768c3e58cde659b9bd8cf22d4dfbc66cfe165e1d40c36378692188910a747cbd981181f6a34025b872bd8a8db638ca915162f7f22e4961830f53d85d9dca8cf6c47bf0963015ab012a672ba1c7bf700dd0457922d68f97d6db5a58788f20241ec65ff0342521e45f861d6e05bd5c7395231645ce64004dc630b2b5e5775e7176d5056c3aca10ffee21c567a34e1bd0bb87ee5d96a6ff8461438aa905411bf2d611499be53cd7150faa4f6765b1ab9ca6186fde7157648e8d46f4de4a931c7a88ddbdf8dcf67fb61f9cc2578887a6a2696940a93cb2b50dc986a7c3bef5a6f86e8835a284eb847a3505b296e6dfdf7ab9160e76b3abdda44b4f88be777c98f15df18de222008cf87323955b1fe8025ee7f26c90e7dcec17bd6453e97e2a6113b9f768c35a19255b70f10643dd3e10921444fdc42fd0405d59c7eea5919ac21e821d0b1f982bf60b377bf66d41b21e5c6f41d319416cdd1317a854ad0917e7fc561c8b5ee3120e255f9966a410914ac697597eda6ec0e6bed453a1ffd600a0162fddc33f486b54992952392beee159231cb39f5df0e39c244b678760a2710b76776ebcd64d1bce222d8d2903f1ac34ab9ce9f5a0337c2c72579411c8283a296e4a735c4d97d8aafa9aa603d96ca56ed210c95e0620afb3ca573fba612d7950a28f2b0900b3dd086d89ea907c0fd907f89d24cb5abb191bf7538874e6d2658f0d2d51fbe9b3bde5ed0b6111b34c4c9bc59960db532b129d4ac0237f9c0f8c59e3adfca8249069da9fa9a5540be79331bc47cd7f15f65e3b661d8b58032afd84aa9b0bf3d61fc489f88ce694647fe6d17612c69a3937611bb6cc3f5efe508891e8d6393663e8bdfff6c4527c2c15a72bfcb965d505dd14527c7bd9a0040e151a5882b8b81d76e9c4bcbd34196b9bd362c68f6771c4e00de08fa2cf3e3c94dd41470be5f273425efcd55d08c607da6d0ec2637090fac75c15a18322f9a6314d53506b3ca4d86a5a5f5919fa3967943c3bee3a0c5b2bc362009075d5a06347c57ce67ebb6680157caae74a364165bf8a0293d3e41722090eecb8f4ea01421175fdae68d9bb8c56ffcc967a17e64812849fd61ee1bbf92b4ce814f65503f94b8d4a609cd8043f9ace6628a5781a55ba69d886027fc08951a9838c933fe28538e2e0cc5c0f9d9d48b9448b57daf92a9ebe8f1b15b4e247b2f7bb9cc176a2c68ccfb16091e5113d9afdcd235f3d05070fc738a57591f66d12d60597e5da1ecbc8d5f81b9ed6bf7af84ceb1ade07abf69769c0b5b42881b2b5444ea59ab848a40ca505cab38a284ba5614e3a80150913a883ca06e2e3985bb7f0b088b1edf9db8afff626a1bccd100e0d0b54d62211ce146ceb9fb8f634c343953c0d172a973a2c90effe9dccd508ddfc8bc3059a99796dd8883b40681734c58a89618b448fd67429cf0ad62df514299f2a25e759a359b082d4a9ca26763d7e142353a8ff3720127935208896cf1a9ea449c63d752b35ecc7f64db190b73097c2a19c631bb92a1b8fa250f5ab1e3fcba9fa224144573a5eea1c868bbaf96e3261cb7379bb541fe9755745a08817c383523c28b979c6b8b7baea12dfc721e69f14a6895cb55c4e1a0fb534c14a86bdcd3891f605fd033a9d1a5c772dad67ea000e3e317e9e2e8f028fdc3d6f912c14f4e3e9fa1691637262be7493b274b273008037172a50ebc9a0d3b230132e6991c5b5ee5e623c303c38d370549a20ea4d090f71c3220efa55fcee58f1317c4e7e6ae64cb6443ef7558f757b19584684b6b3775ceb0d5bcae0b7503c54e89297ad275b1cc913055be8191dc6b01dff7938b7fb738f7853f436a785e15f02af532ebaeb46136b51cc944896adaa2bb20f42804a68cbe2b187dd1f7830691fb9e5c1508ea51f438179ac4313d45da72169485c9fc7aa1eb8fb6ea72c2a766fec4be537b00c7d8241f2d12c603fb98fdce309c999177017bf657367535555fe53fef2ab15c152bd742bffe7f7214759485507a95e02816983b4d4e7d642b871f373160e7557f8bb0a1a8da1a069a745122ac8d2b44b5f8b7dbbbd1a4225d3fe0eb0ae3b055f4c1376c04ef5814c2001db4ae3832968b28562527beb438bc2557b67df162d147cc9476eb2eb6e92ecd5aca1930fa944ef2b69ec53d2353ef6c4a7fba0b17465151623f6686cc3109756b9b2a6ca6bd13680f92117fe5df1e0138f653b2d9a4697ab902a560c68cc95b2a8cbc1b65ca1cf8b3dc6821fa3e82fab10ed38b49e1fb73ab53971649616a6ec405183a409da0dd264620b21c9eb36e8dfb547556d531f45e3b5b9d67cec5aa2f2453378668a46c7118815ee4de25c576411f57dd00e9cb88b4a91d55c56588a4d6c89335451621a2d0d1049112ed9ffe541f14258a572f192134002e14c558df7aa9f2ae653ae4063b83029b65876d69c9d8bd1fad0a11879567b93ddbcf733c07bf308e63d6c136e68053bf1c492cfd7261f6c25f74c04c99c6096048c93e8f2ba82db121d9a3cf463c36df09fa84c146eac4990619afe34b2027f6eb14354888fe8521d4d23ffac40bf81aa6e2c2c2348a4678a8a2b99ac593e68cda01a7ed75abdf2818aa90bbfa04cfdecd6bd5203f09bc7dc488c7a7be1ff4147a03c46312f7011d7038b23478875ff8866b211d67a0e509d5631a1b0ceae563cedd492b29c7d50b66d3c162856069171e7e9487bd592bb8976785ce82d6d6e436b006d0d2acafdd52057fab1ea733676a8693bce93f36b0b747e542d7bcb79389f7f2fec627839eea1bad7fc90aa2e9122cd8cdb399c6a2732eac8bd6362ebab210dbfeeb281c51f6d431e41e9c15313161411eb8c444311f68245b1c3e107bb9d721c6721b9412a120bbe2ea3bcdb646520efec281b34ebe2ad8002615faf742e9ae50e3f65a1d747e274f6a2499291567c0806190ebc087e8ef193863a990291fac120b401da2b0a6465083d076760e1d56935bcc07dab2e46d39e7dbb4b0dd5a31f499e8e72ae249951f442259e5f715a2fd5b9b768b368225d63f9a6e5c5aabde66e4f058ddbb5f48e966e6bc6d5898d87ea6ef4945ce0085307cd77133f98b6f73db4fe95523bd41aaf42aca5ef8378e6c347d6a62557b7da452397f556ee5f3eeaa65feca60f3590a4df4c8ff54085d86ff0338e2208925f3261c210c9deecd1ed1d2b20c6eadbe9c8d8b2d615adc2fd2a06f422c34737d857f42154d2e6565c0ca6974f29c79bd45153ee2da86e6f8fd7f9448651eb61c335a1db8ee0f616b774631c6230aeb42de2f47f3eaa92d50fdda7fbddd0a68002363ccf7d094aa422c0f4f61c3a71737f60988e1495e32617d2168f44ae3b53ce5a209930701012671ebfbe9467f6f9d2cb7754033284667bb79690a38367acd8a6691dd2675fa32099322338ff9632fa96a846e7996b9f37598029605d8936f16c03fe80f508cedac4b8c5352247e7bea1d62f2d31e0f4275ad9448fe9bf2adaecab75558ea0d43565e181aa9f476e7688a83b4ca67a269b047e8dc29a12b5b97b607ef625f51f06c96ff6f69f96c13f0ea5ac96051608ef0633f22f66366d4d002aadc16122f8c111a61772476f382d6967cc6db3e4ad6a855293b6c7b409e2b28725405d1c6bdbc72eb310a62549c38049641717172db87319fde4fdf7fca3137cf2e83be6340ecccfff2938861bf91f6c14e1c21008d4ba7bc67f73d7fd817d51c562c32f00c10ecafe6ad351463b2e02856b6ee0960e30ca678de7fbd21040e404a584b1d516a52db2e9d080dc03856a96ade64b7a89010f51dc856f802ebceecc97e0832eee3e46eb113b8657dfc1ad393419a9c67c17d76db2893edef0c68ef11bb11846aeb37fc346e7068cd1fe99415b8d4807704319f48301843115c4b4ce7295780d204174fa2b7c4728e1222c9ae30cfc8bcd6faf80dbdf18b9101f1bacbd40b88b2126d41622605d22f77486660d5709d664e93b3316a70fb570a06ca89284da587c6613b85053d5204633dd266b7b6f2c526edaf9fbe1cf019f425c5378872c3197f34166d1a34f1f689fe69efc1b5749cf0cc190e3a6fc2825ed630d257eb8f2fbf46d899a9387a27b1a1c3dc02f05130d57b16f829e3bc3cf50fd403e2ffa0a496bd8d3b9b8fdfacfbacba44ef42363e118bc5d37612dbbee74a264267dab95f191e37d58a9c9205fd51961d97165cf47c735fb1e6564671b21edc3e906be9d5a4a852b0ba5e837bdd4d85483e7beebbc17d40001cedc1996a21891cc98078cd405d48c266da9af163b9a0cca3b0f59169cf7242e8ba57db5cdcebe4e858b3889a0c7854d0d3be2aa307eef669e1cb991ca66d2c16ab335c9184cce53d34fededa48cdc377f5e19355aec91d5a2892c65ca6b2c9a7b4c1da629b980806a0276513956feb71caaba096e77b0ac323e116245b6c5c76b3f61901986a69d62ddf17a1e95f3cf9ada5a71eefc7ccc1fe1a139d62adf83ec4e92a8c78a1cfeee9cca43ae1594df2ab3f13657c5b453171c4f3c099a457ff7263e5a253031e8cc41c2ee3dab56d950a8e5e39ff7c5671b221302f8ff1018dedf487ea3e8b725f5acdc0afe5f451216b1bd5f4acc7be185471b408c7121b999550ac4d4f6f01df3b1c6c391b5ed274dabc8a141c3ae62ae8b57e74d5a2d22ddc5e630b7c03554479232a6a8024c77fa257454ee9269a16e2efd36ccebbdebddbf72d2ea90d5b39bc41bd872c85b1f46919a6d1b111602b7c841644201e25fcfd538e288c909cecfb1e39cb8a340fcb2ee8bbb68b1f3e88631ad0b511afe841459ab822eddee15c858444e37a1ec85a2dfbe6192f869a064b997cf92970bcc02601fec0434f1babdc7c5bf5ceab6bfa3883e863ca42961c8456234e63bb9f50d3b83918d495828cb3689054053f8dd23a315ebb922a748f815cd1e5be1daee369117c8782af0c6a79ce0eddd27aaa146c22d9e6ef1a4f6a6812f0d7fb7a36d452efa7784053243abde31f399c3c6b8f173e52e0be01f79ee6aa902fc77a81483d4185888a723a9b0175621d70ec5c49bdbf2693e6e770683acab0e42da50523ec7b0f5864767e7729ebcdd5c9315acda86130b1894e7626d80e0eb90594a01a64e2fbd8b2aa67e4d5f2cfbb479da07b4794bbb50ece233e63e159d1cd3a4f35d13069859b40d65d6697b1a8699ec66c4a722ed5738ff11e28ca2c42f37fc1ded509e8835f3e9f173718fbe63db50293727ec444658421aaea8d7b19adc113f95faba1fb2135a755ecf1549c320eb74d94664627ccd12310fa6cdaecb54c952619010ddc33eee3bf0dd2d769ba73a06dc6e68e87754a089f24f0dbc966573e1883b55f3ec989ff3cb2dad76360c7e354d710241630da2ee0d94596564000d741a7825631d386a6c8ccfb31dda3e64ce63078c315523fed3d13c0164b8ecd4e3b3e7ddeac56c4982af3ab729cfb9f4d5a983022a85ef07509bb0a43c8d86a4111b70ca9358070f134aacabd59ee60f8cabd6efa616626379037307a4d543768b02b8fe640179d10b549584b6333ddd17540cfa3402d481a2872aa5b85d852e7e80ba190f8fd5bfd2101d4bb441311d01a32db3d14fc5e0859039e40951ca370fddac16cc489c5cd9dfe70631c6d4135735e4d1fc8788a0c03bb7f3b2aeddc0af123df037941237b776a5eeb8bba326b378010510c5ccdc8a23a1ab7aa161862e6a34f6a28e019b09f71024fce594d14624ab919a06ecdb3ea3fac5786e1dee6b66a39e33c2fbaf1f0ac6208c3b5ef41bd2bf232072d5f721f9ed3fb192e81081f20925131cea33df342adcc5cbd09c425051b70c7b0bbba5c261189b82f28bc74f80e3289481e5962864f8ce17873d506b553790554ce52ea07cf4a673fe491b3acc52524f957a09c437a14a8edc3fdcf212844d602c3bfc016501bfafe70d33ded21e37010c3e25ffe67d21dcc282d1837c82c601db32067f51d3d4b3d6e6db757ab7f2452c57dc8411e3c205bd4ee6835d7adf55aa84fd2238474e35ca5983d390399ce7627cb48ca37759dc8ee084ed3cc75231168287133925fa85fab904f79a1cd473b3a8b5eaab76670a77b8979114e9131e23092b504c68bc47eb459cd9e5de5ed420a3f99589ec0979914025c8a15845299db8e678458b243c623a05910e2a1dfb34de583ec0617a5b786f41cefd0f2a88b64e6c0ff37128178621f4f38b46d768dde76beca1c29c905aaf8af9657582a7745d1c96147a82d1db2e614b11b947358936dc111433b4f06f1b8ed73a26c40b4ebe36b616eb752b5a995ae0c3d7de6974c1bc20aa7086ed3cc389f68517ab9566ac4cd1430b87a195f54ff4f2774107228ce9843850ed8111e1d22b05950158192a7fcea14df77812da9ee9a40058dae52893fe839b83698f341e039e78a8a792fb3c39c3677fd9d931c69ab55ed78ff65d13f30e46e147530124b9f5b0b00ed73a6cd46f03cdfb4a1626dc5ec807ead4412b8167470529a2e882aea94b42210e0aab656fb3fa0d5a70208b51292c6fd02f505b5fd2681ba01eaebd2f9ffbfade945a0d77cea9b472e75e7e98ca8125b0d90832d8c5905f739b129922669097687c9d102ba0ee9137d2fec26ab91785fabaf7de34fdff30306ddd2df32a517069b28fc3bb6800aa6c81e32cd72909c1be761ed9ae0137a572f5db3cc88b35ed18488ad6e105e1540c615c9c8836c967298cb86d943f3654b2f65c6a3c0ca0fbc0a7e8aea377f3f3ab285c3d0920f81098abd8d28ee4df9b109ed02c91e4eebb08e2c6cd79717353ea0a626131b5af32bcc689a66c674f2720dc870bb5aff6374652901371d6fd7931913c85b2f0ecfde4f273522aa2649b81d6f2e269275ceb2d8c7f8edc1e590eb454c5cc655f68883d5a175d8aea0d688d265b078c97f13b566ae1e9cae551542c9c513188873dcfc549715925ce869861654f67c1a1bc36b5ff728ea2d2ce83411e90fccf1881e7296e5da3ac0bb812c4b285cfc112d5d61ef85abcbc8d9c3b3d6628cc6131c1024fb4739e095dc155049f40d1c393403d01ff8cbfbf8dd8572f5ca606591ae26f78e985302ac0699b98f315db0d144c637f176097e1bd1538c60d819d1b8da508fef190b6ece911949e535024e0ee1cd139eaf3ea4c1be6e2f7389d393ac54fd8fdecf5ac7a712def491ab28401a1e01e8d1bbbc0067f2481b314ef11a142e765ee68164b722db988a4d51daef69179954336a5722754bde5a0426340a68f51a35edcd39b747a873409e3ddf925719873687bdcf00f0259a0994582a4ec91b16bb431b2cf990ac2d3b7746c99bfbbffa15423bd461b2d81e8c01839fd105e260b0bc90508edf2c5bd38ba4290390e730df5d76843706edbc1c26e320334e9a935f55dc603d389520333c92ac5e683f1458970408442ff2dbe01888dd49463a2ed189be039bc791589136c6e158d2b86b8fa6492463aa13a2e390052488a32662f9c6d28e0461b3e86547134a431c44e100ae1c18aa4f1838bad92ea8c1ad163ef312861b7d77a9a3d5ca5b45ac0955ff983a657c92d8098ebb82260cac18b58be349bd44f825f1b46a46485fe5645cdffb27e31ac1f9517b7cc7443b797a7835a137ba94f0cdd4b7c9fe3c7bd51310d47e3c46339a7252a1a200c7cc9aa59ebe1f631d269e003b845488508a0805b1127dbe4d8702c203a18d20e8cd28425ae9f6d5fc0a9c7caa739d3f75144cc768893297affdda2b16b088ac0249ef544b98d7baef02fd18b4e93f1abb7b1df7de2551c7005af58fbeb671379a2103764ef4c0cc08c53485a15e95195247011d97a832c30f87d4dabf3094f817e6cd437fab5d83f384dae879f9bedffc74bb24fe3d4b39aa5e7cd80f8d42e7efaec776bcdbbb31385a3a18f899f603ba34b723edde90265ae717d6b4b25b5d04f9ed896e0a489ac21d37d9a80da43f5c040c5537d419f176c3163e69b6f93a9cb7445fe9e974de83ccc4905da1f94a4dfcef54752ada0df6fcd41a756419a685ad7c4f9c77a78bf00091c51cf73002284d2ae575ad7199f342a98fe1c501295e78d83606d70a73a79b1202847ef410fec0d3c009693c2e270b87c3d9efee0dce14d04ea28861cda7e407c9559ba89f6923dfdb8d38010075a5bbe0a7148e1c3cf652f55e3dfdf7c3a7cd5d0c9821848312bb99442edd0ead3218a1b6a294dda20f6e22cde2f5ca48e2890b3ddaef61bf755cdd59755e8889de45a809bfec85f83de0daa08c3a63f15f4ab5024a216f6765ff98e554df377aef14d61035dae309bfe4799e2bda53c23e2c0f285804aa76acc954d70e304dbbe43cfa0ee41607bb82ce7cb062cbd41d5c3b0b98e9dfd7a91d66fe13dea8cb65b19c70bfbf5e22a92a65400a5b8b48d70dbf416864531d6b109c3daf4cb96e2e5c6826c9babb8786844916a09eda413d4b5ef5bf6d3e063395bb75fd0b5b85baf9c271586f2c8c1aad945e1a5e48f96f1163ce998ff4c2453d32710e7cb6b18374d57a7628a2618a1a6d37542dfe7cfb42723b3dc6a1cfef9dd85c2b02cfc02eafafe46e06d7a69eb6399462e91ee49308d77b55169cb88e7055ae9f19d84834d206c63afaf4c26e0f4e8c154cc61efe98a810c99866d80d28fdb4c4314b85c7b03e934ff551c5afbc8d0902f3169ba5e7651359c8ac4798351ab8155e1de641c88c52e40f3d66676b0215b00f9ab1aea3c9e3511d34d0df9a7d135d227adcb92880822939f4df011b40a8c6bfe052ddc1c43fc523ad4589a4fe9069139f454ab6b4d62d50b33cd8a345bf2c8f132303733bee4275cbd9a65faaee9331231d240cb32939651291db1037f710e4ce3639f352a672dac641eb70303f2a349e4f90b9406fea8afedd7a9a594ba2238150707420b3f8dfc38767bf901a8f6313c97adcf8fbbb3f8d3c8044c1647dc1c3f1fbaa6dd8998a7819e7cf63bccbcb750669035fb968c83409aafecb5dd653447fc96716f29a747110d6524b428081975d4c8df147a8140287ab6974f8e3418ab8cdede56458abed8d1a5277aba79e62ed3538d552f07cc66f7b7dd3d5c269bc51261ce567f5675119445cbb27f73016afb002ae919bb95e97838b54c5eeb1dec8c9d921d4e48e2f5d9302129a8f9a152f11b1a791024502cba2879eb1ac0d3947ede75816cfccfea3e30bed26587e59215651ca39478ae3b8cebe971ba71169855de8f25c63fcd4d647aaf55e22136d0f8c6912bc7f40236231002cc0f769abfcb898c9c4faceef897f4ba2bfa1c5e9711c10d92cb124fe712c856ba9bfe5e8b14c8fab636c58cdcb0635584bbca59f573e8087121ee771c3ca8e8285f1a2d0b203b1f138735b782365424b845b9b3a7c3a0b8645f0b36766a20210bb374dcfc36e50eec66ba5767891162f3b4eb2bea85eebda5a1b51acee98c5a4fdea1ab8963d2dd1aacc331cb83b2cdae480723437b543e3e4449834ee341bb8c55505c9958c9a79a202f50cb5752d76817baa2ba1bfe6f2a28858b86bad162bdadb65257b8b65365cebc3e87a02f8f0ed0399a5143d1c3a243969d83a8f2ab2b26bfda39a8add157af4aa0d65e80fd836a8812ffcb7c5367e463cdb53ad9450cbc13eb707f23eaa0af9e8ee97b29377696239089600cbf666b8f741f0d6d1acbec38d00a51cf7b6bb164875e0e209a7acc2e8cbe33c80cfb5696f7ba04d8462d063239d31f1f388aebbd608ac330118aaefa5663fcea543ddbd36fb132c89301c148c375b749e5b4efcbc582c6397d6662e13224eaf6fc42adc59b6f9f6c28a28c4249a2fb57a50ce52e12cd799164a9f0bf8346db0e2e348223f96e7b49d19844dadc075fe45f7cb6042e6e99f9437d03edc1c06067918964f288a726527d66940e845f439e8a72504bbf619eb269f610a61c66b44bf95fd3fa2178539e716c3cd88f4d8e28854c90469655250d2334de3e03a4fa31b561f62202681929618bd76b175bc5c3fd5e552f18a9df078bf918aa30435fa6dfec96c3d748c701c997e61dde008fc713d6cdd5e4fe6c7aa5b3ad0c440bb45a6f55d10a9dd8535f3ceca203f9f9ecd2258688123b248335992f1767422d80993dc246c843099d98cc386fd95e216bf0338925ecb1213e523ea49775fbdfecb8563347e698352dbfe2d4cbbcf444aa8541a67c70c471000ead7ada64e1eb8733d4035c8b32d2f66758eb2b1757473543046741e8151990039c12951341cac949bb05d15acad8bd3feb78ed15b4b46c88fa6188c79a68f5d6b68fb76b7d2ef43175fd04d46df24d00b6995fd97f72e5f824a13dd19cabac80d7290b15d98394ec567abdb5f623366520b21554cbdcc670a7c02ea7846a62e759aac06659f85b100cef8e840b16a197a882023685dcdcebdfa7fa7a163f39917e07387f32100f4e8fcb5d288597984af060b519b28938812bf05f6986008cb327bb7dc2b5688e9977ab05b6bc99212400e9ccda69ae2a171455710f4f1b4912a6b0ad15f6f88e3072df4a7e45b5043a72dcab1828346ab74d4e6d54876650db7157417cbf9460fbd9574305165a28f75d88a5122408669a5e62bc6040b83637daa8f2989bad301171c335790ef734ba80453afbd8a2759c731718bd22b13c7aafe09b37b8d7581618ef98584c434794c278f86480bc335d90deb1dda6e3d9a0ff2edcb46899585b585f0a27f7cb7f18d2703d74ae227af3b21cf0912ed331f5d27cc0d7ea52aff58ee8de34eca4f25bdb1168fea25a072fb8cc81448b89b18e4a14683614716fe34e096e288ae7b197541d18544bf300257b57964ed1339fda2b1416e4408afd8ba0910dd03c34d23b068317188ece67e3f2acb24240663e191edb92488d3f4688fabb66b385cafe25a37f51a9571be72ad4d4621d3a07bb92dec30e1b15721ba6820d989f15929fd0ce531fccb0179c48b0312eacfdecbfb3329ff14e6eb95d45a78e0132ffc6d8e5b28f4543c8c062e3d107b9467c7518b796067423b7dabdfa567f01bdfbb12ed8e30224659940846944c05f9b44c83d496c334267592d43445458dd57645706cc7917c22ac2b32fe135ba3af071d2a0540f5d4276732b17785b0dbf997daa07f24f5cfefc031a6eefcc16a2b0e23f6488636a019d0343bc7df297ff22c740cfd8a5a7e9f411112921c690662424f4a386938883641b9e9e6b03f47d255250a1d0a9b9f5599243a7d8a1597b0a491a94c40c6d560df094cad68865bb4ff338e6e44b8e9ec4f8bb6dea52256785edccff606f98c7e7a1e298891592575c28dcdbbe84a7549ed8a65759706bdea2f0b151d73c76175c397d281c7645e5b479a856729ea61559174d78d4c868859fc7c65525cc1d0e7e0f440d63f35b1bc529189296a30e1858035ad2c97d33e8fbb9c586a46f2410478f6367f1829ec1c553cea57b9225d9bbb766f52b7075c01a9cf2eb9e35a0e08cbe2f138eea76a24cafbf7ca4d10cb3d269c45e5e63a40d055000622586931e71690ea0b2cbf60d6931e90f46eea40f403945fb6890b3eda80784a16e34675e36530953fe07e8fb311d86bd324307cd501063ee4ee4934d0309612cb6e65415a5e2545c4c9959c5bcfeb72da6e28c42ee1d081d38deafe3d1ee1952cc5ca9b5a33a603f3da32802ab508134e8e5ee10266ec3970c85f13f08f4189dfa0997a602016b6b6b08d3ce9b8bbb5c8d6dbb346bedc1dc27af8138860f5194c55a3e12cc91bbcfe0e1e094c7fbbce1b4f45f6cef24141373b553bcfd0c14b37ba41c5ba634adfaf0d301704116785ea6247e7b92646b1a45e9cb06cf26bee197575fc7be87ac0a66e5594cef3f2fc2efb2878c56c94f42c46213afbdd033d5bd8c38ba5ca32bcef3c74719135e2151751f32ec12c0942b9aacb0ea91813d5e7606dd3d4f0c73989d61382bca7b74a4f8004c1aef6c0ab5a2236b21dfa6fe965faa1521e704ef023d44eb3f894be6fd747dd088d6e27d951d867a16f4fe2d9e994cb90345b7059860a7c13e9dcd1882b61b195b75752538611086b78d89b2b60a5cee9c8e2a5eedfb64d4ae8e440b1afaeee56604e6e0100c3bd9c1136ff2d733970b8235b9271292ef206b034c9cdadedf9a417965d1ec14fd407ea655f61f69c4ade87d2146839a504accadef6a7efea8eb6783c9fde55bceac7b469d25c851536682dc90d5be3e4fab812b6e98e384f9e19110fd8c1361dcc705f104b922fc2f731128b0753062c36b7440f987117da24d966e45373f3962b6bb843871c40942d0dffc8a9a7516f3bd44f30b83dd8432fe0aac0f3650ab700290dfa22c385798c88edbbcbfbe667cafdf2b6dfa0b46ca8724e5440c66dd1c088768a83bbeb2be545e83545201dbb7e67853297fcde98a7254bf881f6c634f76aaffdb40082baf14bbf8784efc5307057a03033ed307e381bf361bae7ae8c5ff359dfe1ede6762d4ff5e1a9888c6b780887ce120841cc5fb794ea165949b996e989ed3ea358cc385699ffc8e72ed0d0c7cdc1440d6770a3880e616ec3a42b4bd15bf7ad4b59b4f6dda285132404f76bbcd9631147611860f23efa656efc6041a5130451d268d0fd98e5606e1b0ea3b252a16093fd5d87042beca905b3d2afdd4bdfa63762afd61cfc92d3ab73aabc55acbf7a6cec5b19d376d0dbcf28a8aa2e27f0483370a4d62681a56ac247d4e3a320c4ecc4095287226e6de6e1ebb9c9ed4f9f3c6919ef1bbf70415ed94b44a4ebf211c30241c5bd53fa41981bc508c8f2201d98b2049cfb7a3cfed25f828a3bf5f56fb9f397b7425f8991e64bd7fe0cc00cac9ec6770407306358e93e224c467d70abb5014bd69d515dbd70c5cc2e6aa46f53b333272f54d0cf6a59ad78de34fc4dc01c2757015c4c2c22f506a2ad96082eb3fe2d669d92396b6c30ab7662b8b6ff09f10d5282b6534c5e4163158d68f5b9172d0f52852c11795277dd8853cb2e98d9b7c65f5e00a5aee7613ed665b0d3453f3ad3f6914d6c73e5bf829480898cef64d8025d91267665d710dd719c65856acb1900d848f315bf68cf637fa36c9390330889d8edf4718cdd5e5fdea3e577dcc68e3087ee2fa350874624a693c12d2a08cc1d609c75f435b6f30b4faf5ace9eb109363fb9b0ce8b5f6ba8c9b29d42cfa14842eb36a47a5c3e4fa0c136f57e1a66e59dda1ef70a8f0fecb907f5806e57be6290e99e19e171b3d99fcfd90f1e0a374657a3304b88eab031d6c4840af1ab30cadb5fb44e62d1890e63bd29983b97822ebed1aa83391ebff3d512799d38aac010d534dff8507b6ebbd19e9c737eb3924cdbb4589091cd01ecf878d40f46a38cd4ed6841c6e4fc39b1404383d6e6bb73fde54c9d10fadffac61a22114c697fa03f0098864981878576b53b01b9e8d1927adfd12800ff3c00d896fed55525ce57f100f350d26d1cd0e21ca7117fd4c2cb2c4446b864cf6e43d227e66be0234fc46dd9deaa7211a603e64de9221c3644d0b4f31ce5c9a3e088f4cecc1520e420849aa442b4561e8af87860d921468b42a16ca93a3a8c32db78057d07de903c6dc3fb5b74570daa92c8f5729f43d39b5ac79d5441e59569ba1a2d916ad32437bbb1ba638f9e5d99c197511194c5aea931b41855cc8cc299ff645a1766fbaa786528df931abba681977fda197c4282e15f4e1e6f74eca2146a343b26298165a20e6befdbeceb00f7350d3940ebff9fa79fc6ba7622a388a4d0d6a51db799ebda350fad18fc7de60edc9429e5dd01a230eaf32b457e2467d60588c3bbbd9f99aa9593acd19c1ae0ee3f3259333414504bc9187d66ceadcd1a4a90b7d5a6db1bc2b8a9489522d6ba8e6a594e4fbb872dee6e7a7dbc936c0c069d948b2b3a9e8c33527375f4db0efc2b94a07229b256ef601751b3ad85161fb96dbf768c731a724f941c5b66ff09167ddd5ed32b47acdc667ad815e237576f56a3e338189e746364a305a1fcb7c483e0d51a46a6856f148337434fbbaa7cff6f6b5a6e57b31970a4a8f0d9f9f13d728ff0c0e8f7ba88b0e302c374c7e18470d8e78333271b5902dba70e49eb1c7c2cf2208301e0bb2be1887ac76f98d74587969f3f4f8e432127cf8fe37375f7afebd40d31915fee2ac154e4ab7c4cbc91c597c53fb71bb54422ce312e276fae720d2f726805c8df0994f354e6de38fc971f3ac17ac6c2dd81433507fb0d1916f3f1962eef939e5d00f008345a2dcc50babaafa56f5f6da765a870e8c90aa36f620053f534dc70bb31cb65852a5c32c9bda0c3576ba4d038887992437843e14680cd5cb5fa0f9aeace46dd6da4144522c30fa7065eb5bf1edd5b192a5df870e194f042e0f69ba949351dfe2e5672591f7504aba8534b4cf0bc3ff3fb92c5ab8108b3db4112e0c4b5feea4d60e5232210b2541834bff2a67a104f7f7779c5e04d1b6b8b58edbcfd3dba8b97cf6c1889f8f3bbd4fd1a1c664c478463c8ac72e659d89cdf5e70bb42bca6be3e05fcc8bad7e9f3be2c1c226cab755ce1567ebf8939f36fb785224c00b15e6efbf64e03031ea55c7f14de5f0208c5a35365989d6488e5982692d2341b79c9b656aa02e178ff92cbd3fd3fb5dc81866b5a36ec40150af9087d645a63d92670273ae032babee5cc6892043883e7fe3b7c38573b9b037b3607cc9bf925091ffab1c53b0d95440ca8a4d47e4a82a5bf8a4bec6c57494bb7b14c80057099261d02361ffc65ee7455e238d887ec71b1a947270bd595f5b5793b8ca6cd3c13378ce25fae6aeec5b0529cf7fa07946ecb967df6f79b7fca7b744950a65bdaba8604e308e27a0b4ee6dbc2d0fb69f0592e92004332cb905ca83b60e484f96f5393ddaf1ea4dc140cd99e969a875401437e588339192329712d726b00d1bc90030e6600708d0055b844e55c0aee98dc95fb98d75e8eeee283b0037f518552e8cffcf7717f3cdea12dadb63720bd2aee26ba9adafc3c92e4ee2bc791a83b2f06a9fc42be99c50fe4ebca80da8951115da561b278a1aab51addba3dcb59cb56bc43e655b1704a1c1c49f750b8dcfff98070520b91b61e630a1792506d3877befdbfe6aa60b6d3cc38960dd928fd2cb7b347927ad5057f566ae88208a9159b81e3461fca025037b49fb420d510f4e66224d19bd630a7b570b58f7f5a5fb202b1b246d466f01d3d383f2b9183005f96e1ef8b8f2a1cc8489201a7a022c87ef3767cd48eb3f072d8116dd45dbea9435768d9d7c3d530f0bffe1ec0f4d350f6ab46b88aafc259eb3f8cf90ff0674ce82a25a73122af6f933a91153afe53c1793f43331740673543cdc72ca57167b30b24de43772fed8505403f92dd75bce90b2f0a007df8dbfdc7f8fc9dca1e465a54ac83489f3a5f88a30489ef1d082650b76461615757d7b0734ebe41cd8aa6f29ca6b05a241899b62dd55c7c89c891684f4de192b0ba24b139e3ba1725127d43fe1d97cf15f46afe1d5c5abeb20a0dc14257590a957d1ab793395520838b897c0bf56f947988741fbb8c36d883dfcdc87d649ea28566ca5c23deea46f81b0a5e506c89661d1d7bcccf1d4f585adc06444a1e4206457d2dd476caae4d0ecec8c66a07b46b89f71e58385db80e6dbd08b4352e091bf4591c9dd5ffef0cb39f86ad5b76e32655397e3cce43b4290f0bd774581ef4f12b2f50dcb108fa0381abbc910486156af19328c3b8fc2941f9382b2d31ba9546f991c1791df875db6076ad9894f95cf6bbea9de1cef015ef9d9ae9ff20d59804b357db0a935764fb5d874de32aa26c2def7165b71ab5ef1c7651e90d257b11e9e260fe1968a8479c27f40230b1e8be5ad662125de860f21a47af532e7edeaad039a4b9b55ea370cbd58cbf11cb2fb6a276cb790aa2b2c0b0af5f18e6715142255f101752a008d7c089316c68a0303905134b0c61ce3b13f19efbb3fd90603b77fae9ce51e034cafa145655cf5b8299409e54241269c3aa4137a276988a2888639d1b4dabff3caa3b7e50bc4343490f33da4c8af6ea8498d676f54cd70f5f4514ff7aef626f333796fbd26d0ecc408c2764800096b6af7548673eec7f4b5df12d285421772b3bbbf6f4a86e91010e780f0873a469b725649d9ec3f1b200077e243d3537e014208b6a79024c1641d6f515742981906971a19640cc6f52a1eafd534fd54a92d18d512feb00a3196e4a8a8228d3c587dae24027299cc919b06a92dee3b3ac87df3246f43612d2274e2eb77fa2ac4c2d809ca24afe4330241fea4949c7bc185e3a15832cf0382aabcb91f4e0d1465516e107a335fd749e45f15c79c192baf7660439c033f28c70e560a6b53a066266eac78d5e8e5ccb45929f9fb66f5c40694c3d8d915334a30daf903f2e1549b2538aafb53f56d9cf37e212537cf362c122448ca69203942af6e0fca8b89bf4984a79255e3b5598d4d73d56772067ca4d667e807554af6a16747e7588c3389b2e492b35805156c79c83378e788d8ac7c92f46a3378e194455095d3dee787f9d7809a53f6d0131ecc0e9a6af7fdd92ac438361347b69329d3ab6c41fedc1fa7186310f23c3dbe8a26eed20a113c8340276aa6eb1313d81a9b1a40b79c6ebbfae864427dae0585189e1a9acda0e74b56f14c07f290a829498e6cffcfc9449427678a046e56941d97bc8db80e57e9dfc6cb99a6417f81edb5c2ab1891aeab37f859d9f10baf5617d84fc2b71bf8e08950474c2dd123b113653e60ec9a224765dada2329d992a2f856e88355c4f92d649e64997e5dceff223bc1f179042557bb05afd7bed346cc8a683f2c884ee2f98c872661d286484781e78539d3e7fa5b097b918ff5bb14ec77740d5675c5f48a3fae18130fb859c5c173402f2d57481687003908c20a2f2f8d19a0d09c4359a7224caa1df663e07d4ee8daa53fc34337084cc3bc92ad199ecb1cce0ad32e71f3257f6d0438b9c5f673e030e4e9356d41ffc48f9a25e9efbc096635cb919bb79fd84e4e4cb6ccaf9cada20cdf4497f6d8a8bd2ba210a741c3dda07cb4f2389ec9724a8749f53002fc686dd1dad162b560e94124c7a0189d0a0460e1aeaa22889a3cbc506f5958e1b382e9f2983bd174cac0d27240d892d7f8b275f649485ba0288bec853ef6644ece98e0eaef7d7be840c5794ad032d3ff2646bc2eeacf5481c2aaf8d6b0e7de4d996a6c078eab29445323d7b9ddd3e4579a95099c7aaff5580c52fe27ce388c9651903a38f757a8c500e7b94c2dc0ed979587ca212c652d4677097443e50703a187451e79ece4e41202a23aa80c589f6469f6d3819f9e38fd45ac0ef057a64251b6ba9dd611598dac363623cababd650513683a97c66bf59f8feb343a390d085897d082c86ace824711f3e0babc6fe8a051aa485f6059feb3d50fb2d6b6503a7a4825b5cf63181266c49e44b3195daaccbac5b7bbc9795b82f6ddb818075d42fe0c387874cdb45f552d163c136653f311470e2218854cef5dccc58270bb4212b7cc5584cb8be50e29ded5890b04a5f902ecdf0cde0321c0de543ec23f4e17e271640c45ca1c54063cccc1f28981e25b00506ac78d78463e7be16d5ed28066134ab596774eba8e2fa8e0bf581c64a5b3d5733c7f7a0c89334d49032aedf1d8f03c5b309bd10a0621e024679a87ed30db1aaa40a5dd39d37461a6f5809190a67c92f36e1d1e4d4de086633c430d5726f95e04c2197b0ceee82c1d4c4c061e74d6141d629e105a0b42b281790cb2d85c113129a9b484587d2c6d005012f25c9409f355bd7d2a569f0bae0a106148ee7ad1f73abfc102f76b9e2708e2be647f41a2e7017fd6deff9665d2e9d5c9ac0fb960ad3fc9206aedf4bcb52be714de632360726eb5e404ed282e411073888c6f10be683b8e45360866ab1c9347caf8aa7c8640cd82aac87ffd81a218427d038d36aeeda9b570041ff6ee78e0312def27cbe81ad0f6a6707dc0a91cedf1b3f880c7df7a38aede9651a1fe19f97881f7d849de80ad681ab5fa8fd62fa4908cb1dccfca8da7021ce8567556aa1f68637ee649401758476a5cc968d381f1b4d29a49ee4e74d233bacca10d810c50b6681cca15322ff24c15339cd0746e3f44d6bc3d349cda5eeb5b72f95f8afb31254219244d53d0c44d520fb9557851b4fda898ea52127d675ab25832b3acb6b8fc874c66f5a988f98145a2ac6f559e35758ddeeba537e2e0b9b9314ce2d9a7b7086953147e7e3f60dd24f288cd78219623c72f3bbebee26ca28f4a2e1a7f80f992a5e023866d22d961ad76637dcb1ca623cc3e9fb6ee094ffcbd05b2ff61fbbf41f2b732f6f9037a95c16bd24aca5d7217416f551eb3ffffd23a9b203d6eab0f1a27a22861f7b27d6d02f6cf2b1ac6837124fd128979d375d554abc02aa5a807cc40f9115eb87a8c28aa43702a54e1212d5dee7ad2a75a3ea083720d8d712e4a5a540bdb5c50b2b2540bfc6896d1b8cde8974aabcb344dee0129b6d8e138329516e2d2e19e0185b1b3d4c6d7acb6868d6a6fec2a953d54470c96d097c348f6e37d07c443d7e86fe61db70476547277cf8e3d04d7f03c4859679a07018bc0c253f73d29475280aa046eeee7225308668428f7a5b21a35fee8479ab5fc69209c15c8d7665701afcc9d843e669a619e66d5d2d5ae2a2497006eb7edc7423cd0bc8ebce71d6ebd2e8aac015bcb26eb9aa7e8e23d8b24857802aa786c431f34e137113c533ff3f9c28e12b1fc9849f2370074d413e5e1f3c5eaa0af98491d14108859e1dd2ef2b2ba2450b78dd3788505c0dc25418569d432cb61e8d333446fa9d166e4f750667748fc22dfabbfd48fca11520d462aa56d4fa9f3ce8eb36cf6d637fd7e002e91149fa7f8a2e426061b0adf1c84da08c8786cc274b3f1e86543887df9291e879fadae07eef8e7fbe55758438e90e959722497b27aae6caa3b6c8a8f5e8d43e044ed638bc655411f1a25b54113923ad3347c9b70c33d74cce1078d31e6d4239fef170647d0d9d4485c89e4078703eab3f2d0ab86c83d26091968f24811fb0e0dbfb3146994ecb1bc60baaf5e3aab0fd71923a492d5a566befd8006934ee07a958c0177f3195d80e6074f84a71bf6bf3a1d880d07465832a158b23152a33ffab07b69c44d797fa88f12d26c5681c56d89631d22371d74c5e46f5081dd3cdb85b92de8a6f54a5260d420ae07872ad7a2568d388c31f49d0244e54dc5e42a433d379fb5d87afd4b2ade6f0b0fe203d7b205a05ecf85312d8869659d497ff93425372f0ed937e4cbbfbb0259203bb2cfc48a25a3b6dee14c4a1b04289c3811eb5cf9c67298805a6b2bf8e3e461354c58213773748be826d6c08ed71d3f74076ab10a14236e9ee13d26e715eb781a0f2492d8f675b33b7636aa3b93e566d11d7bb135a8f60eed4ef86fc73f54ae7e430ccd69e8da1027f475fa1e373c011af7cd3cbd92b2e54e514000fa7e02ab99fca12a3606c65751391ca3a270466c498cc7198f2a330ae1fa20bc73f2c92eee496ceb6da9179f930d113d03bab433dceed1a252a55fea164e553c349bf3e469637ca9f1c5e8e69f92197e17518d3979af72be1a26aaa574a3814e1cbf784bee021e0bd4769770c112e55d153d8778b020941ca2bee508edd3cdbf34b7cee9b2888044453d07fff2b484a72c103a6684851e9f61ce69e067db8661fd8cb61216d91836a7d85eee385d2f6947f125955a9489775665be5545a5f5e5674825216c2c3ca88c94284c57ef068662606c6d0bb4a4c93676b27829e5ebf8e7068e1b0e69bd1a8149941c130e61d0470ddd8ea13ecc128d6924551d83b7a71d8fe8d0a845a13834da72a12a2dac2d1869df14d0e2c6a4b41829c2130b21f100d2827c48b7178a649f11a15e08e0bf3edac8bd38af57b3ba9233704bc02caa6cda33565c265337179b18d92fb08f9dd7f0d95c36930a848789d210d1c0ea121edffcb0a7af06ad9dfdc00ee16214c7ba28c49cff7e2fdece638909d44c91d79f5640bb35b270db24bad52c88fd2ddda59abd08cc4f893b98cd44af5a63aa8a29fbffdf8c7ca9cfbbcea8f3a536166898cc7ae7a8a84f27b27e4c26fc28b2917dc4ecc6843565d5b402ec5d8b7f4d0b09adef24186a01c308deca708b5a72dab9c18ea7e682f95b9d2a317bca5d1a2748d50f9331d1a7acfd33b109bf1efb14b2156aa8c2220b9abb8bdc4d97103b51f31b555551260e999458147419ddcf644c3447bff9e6957ba168a87e281d9b0f50261cce8b476d2598a61c6a54b6d7a6f1a38766ba72eb11e95353ad5b60f074fa0512ce0d89b84dbfcea53d1683d1dd8c5450d81c33e630365e9fe05b3ded6cb0eb748401689d7864163316c968e6ddc28ebb1f61dd8ee9a690110f1002d97150c61010d1785c322e2a632bb6b72cba1126e1fb372c9655cc34db111c74f94d7b891c32256efd8dc4fa789f6f978e29e959c958a39bee62ee578bb71f5141e2be4cb70521f24e2bd8070182460ad219e15d25ee2c3d05459d2776b01806b7116d4de0f096be6212b222c10340cb35b53388bb7b60068d5ce16f866f9cfa784d64a9c1710ea123d19452dcb4ea7c62975350e4061e0b4d0a7fc1d25904b1d46d215740cbdf22776c0db8463396be5d4d561b6b37c3a285d74ce5f334668f77e368f704adbc4b5f2d8c4cd34399af3c86bcd5c0f133029e4ee5f2e1c5f6bb842f0be07814656964d2cc0b1d05d4c5cb166dd22b7a9dbb79d05f556c4e6def8f6528deae8490a6cffae17c80725f6fc7d51e6eeb5a4cea53bce63867d64f844a3c8ad6fb70978455f497a222492c5ed5d4c5074b4d827365d7076480649c7cff8e8cf41858d6754d2f5ee487d770b96d7428e74a83eee05d3ce13bda4132c03c3b57d6ee84b4ccae42042a9375f91958a601cf014cfafbf4c47bd062c54e15d9a9b354821c2f4395ffd2f364875fd765860995502c05584e6387da24d486d1ea134a508dfc49afb2204207d929d1af921e3e5d80eb838d69d11301ed328c2b585050c44d7424651a08fed5451fbb5e7dd2b425a8b1afbf7ae8d199b45b9525b10ce70960bdfe0aae2e239b4eb0e37c834994c40c85116f498c3934f185829e088bd09c14b7e7f7455d00f4c550daff26c98982a6b26a9270a3fa2a367758aa5117b1d6cf92652c5ca557fd0f9670d87ebaa534fce47c191b1ccb5e03e85c945cc09842b43d8c511ed0895a8ee3450d6fd2bcd012c5177676962f0fd33b3e637285e313a70af58316d1b1b5d922fb131c7f48967477dfce6918882284983493eef9179e05c545802e3b25418110ce84231d190ef5313b67308864e6ca93312db82e2ffee389d3eeac278bc9f19c91b5419235b0880e19ca27d0962b203f96f5e2cc0f4c22401ec326d3cf352fef7ef0bd78a0a4c112902974d41e0908fa791dfbd152eeb245e71ea4292d80774244bbabc6796d4b2f3bb9836017babba300a5a61bc5a3e032c4bae4a8ebf8260107601d63f5018a88d952cdd4b17e0e40cd05d2a7cb00612f3b09d7afd00fe5811e7fa1fd6a2803ec78fb3cfcad5504ee41e6f4209ac9e96fa53bfee10f64fab7010819ef3e758fbfee8660201ecb8add63aa6fcbc746b1f0039b581c2b1d77e91357dfa0324e6beb979ca7598e85727f098d562081dcfed6888d1536ea7d2058a4371f29ebc83acd33a49de88290a70a016dd4ad1fea6bfd9d982e7b8ff9748d6647af240b0ba41c69b79bc0edbc8c155cbfcb489dcf0428f1dcd7023a3fa4a08f9c40bf5744ec1066050ffa0dd59be46f97f04f244820b9b9f96f5b6fd465aad06de4c6bba6cbfaa5d057e4e4b07b3d17d13d78eda0d4e0bed736e04e0ecc3287b41bc67d422d598dc7fae900696c52ca60d221569fde9e38ba8e944cd04898523c4495b757a21a1f46862d9f8b66f40f70d1c4454759e4e69d574e377383086d3ef40c1426a6b6b03e9e1437c359a3911cf9d12371d43b7c9ff375ea89e0aa62c7ad6342f9474271862a4118d0f7cc9ae0ef36c8aa178bb89d29c81d852578802d1b89f9cd07df114c9bb5d7ee1024b88879a3445519aa12d46fb40c4f7729cdf085644337dd6d5e21b8d4585c404e7253d0f3a364c9e14f4632e634c006a2f8f4a2520c11dc2d646a21e2eb34768a648318e9ee8ef3734cb03046df1672080aaf26071cf4afed506c780b50083cac6242f4239720864d51743d9ceb24c960510afb910a62627d8b852e38618d6fc8af783f97fab2fa813a05fa8039be62d6e1519793389506cc47cdfd5e6de44e5fa914935c0d271a9db4b95b979896495a9443f228db37a40715a2dd20868d5cfdc0edc72762a5c6dceb5a52d1e76e455228a83dc18b265a7fd5e101d7ec9d14b4928bba96784976f3ac699bd8006f01d39f6d5d69f1e9fa9b74a482d3a73cfa87092caa514aa295fdfc13a9441a31b57869ff14d5cccbc5f33df0b57c8246555408447e8a10b955ec2036639716f7e9211d3a560ea64a5590b8920db53c6802e010eeacb56ad41b0e85e6060f5e6d16e354d101299f7f8cffaa726dccb2fb74434d63e9e40a2c056679815f08489244f18bf27d1984dbe8569c66ea30e1e798668160284c33f4a5dde3833cd9992d56da039cb0d3cd67d1b115ac736fdab122be5ce536ea093bdcbbf3d036fa6c54996f04f3538fe936e579a8bb77c913d2e02e3ec2b3c24c4fafea4e2e088fe2e3ca39b3303a7abaef1cc4780b9cb5db7f7d952b39307eacfdc37b7a69f50e4e2bd8573c788b35e81e6e7a6d2a678645e2715eb237d68df5e1224dd62bf8055a2c0ab834b2f55a0242543c7b047697bbc018486d6ea61c25f360231af2752f826efbe8799b8259d20003a4178adac74c308c5928d55e426e09c81aefb77f5c5db3f6a548aba46d36926228f6fdfa6f49f40d3b0a66a9313ff36ebc429088c251c44d493c8131ffd6af0d5de48e7f73bc86f90f0246274651740892be2f77bdcfc28903b281a9f61e075c80a81414bad753e378afce0f63125104b80fb80528f87945dba6a2379037ae01057555d96d5f17d6709c91175a331f5809f82dfdad7fbd0c9d0dfa90a2b0de15e3be44ee613671cf5068f722bcbb466c98fa848d8ba99733de68f5f9a70f795c3cd27d29c66074be881ef287be88b4bd3e4a123f222c8bac163f47b5fd15cbcf17052f47521fe9c4422ddd80de9c4f6f94e632ad2446dc7b7131d17d9f7b0cc886d5701a716fdb11fe8c779cb3b473d53f92cecc0b24917c1576cdb590d113e3ebfa525f94a14e2d3deb36fa9955e29f2ba3275489dbb0f383bd61c4246dc0eaa8074cbfa8a1faf01d3f078ccbda414148e5f1830c52b5918a351d5d5b0cd3e40b3c2d2a1db63bed33c59075f4a7657eb3252688aa099fae4d7c971197db802e2bedd700f460a958bd122b8ec256ba447cab8275ebfe66030ecbbcc50df1088d03f2c307d0d179c1d187ac2666252d62e568a056f1c90b3389340418df94da7f2d1ff6b8f5f97da82cd94a1309953228cf78df3c5fb5605f955d474b503c698501bb9d185c5fa6d9305d5c86ba592419bd00a4d5f4fd3a21a76cd5357445e326e529dff0b6161950f23c0b05bbe333a4a36424e98dd14a60837d5c9ac80c994d4c07e860f283d390c8f83b48447125c82c432b70d1785b99d0f0c3725afa3049a9b52a867a4480466b8d35ad38c36d93fe16f3b9166e6b9cd1c4d199a0d3c11a386f681bbeed1568b0ae6c2ca7011f0f9bb151836324d3dbb2d3542eb27ad909c2d55ce70b9ca41c48395575583526978a6b9cc35ac2e0727f446a12cc36f7bdf4a06202b53d8765ba5d3e053c8731101028418d86e57d0c8c345c466c0b20310258facace02586ac11056e89aa7eb77ef64b7e4362e75ea742e174a09164f7d945efe4f27aa76a02360c3d7d5ff0c4831aa9aa14ec0274319018d9deeb683f40e245d0a3bc9ca7f7c0cadc0ce360a66ef8d8419534e55d3211da2a60dfb7de2f264c8d9bd218e6431e9b6940428cb1b5e8295d229e272752b28c8d7ec2088c849f22959a83d5073e9f43bb796eda4a9f8cd4c902e55cdebaee90408231088c00bae613949e42015df633c688f663f23e2813241ce354267fc2ba08153015ae3fd9c11232f98a670def90abb09a585e8787d8f6e681c9b94b976d50e6a4d20789851aad2c50abe57a452ca717f255c5555401ce908bbda0c2d816ba6ed7d246fe6cba2b3d548455001347118729a0e347b74ca768cb225feced21a04f17a59fb44cad02580445dd65162d8d19b1431927a26dc90287ac984fcbe9a4104eba9bd228b3bbea94fd8e55bb7f5946028a4daef66113598f16b5aed459edac08793c74036cf3e0e9107c3437fe9c692530c30d2d3beb26b136fb54e4212ed85174fc9dde30cf5a98f6621b9f5166e987b5925254a2d02cb9eeccfd92660a9564a09d8d12f2714edd90ed2671d368eada2133776b61dbb404910595ece5c7e5ea9f5762b4b0791f1e556004832f176d7001000468ee3cb0, level=(string)5.1, profile=(string)high
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1612467640033ace80b40a1100000000168ee3cb000000001658884027fd3095140c66dff84425c9509aad37e9d5c3cf262e52918209c44324375183b209cbeb981a17b9a98bd7d2baa5c35a97d101bbf0d738ec1664a14e7158a37b94392c6a617b4ab4f87dfe1e4076993a8987b3e80b91bbcdb798bf8aa35385422156438322e1bfc2a1bd529ae6abbbcf524a213fb334f9f0f96be9b499c51add4cf55609f9e7cb80107e08d0dccb510af90960f2364bf2e43d20f4b1e9fe8baf0b7683518761bb7d5a646ffbd40f24f02cf3e017d5c746f10fc96a352c339e46491886c987f3eb2fea0b744f0ba865dca6eebfb551f9dc5f0e5ee5b8522e1dc7ea6eb11f5ba77b357db12059600a16fab678e5a739f2a5118eba378e443cedb310656f8bd24b6af76ce3428882e987e6f4e056e006b2f3b72a6dd21fcce1ced6c1c2d01459beded7f54869803dd035c266eb757ff744715dbe4fb86dfa723efa6c17efbdbf7bdea51add2b1a12017246804dbed6685a9bc55cdbec47acac7a9cd39e5f9cf6f65de530f43ca947c800660c2c58dc3f54ed09ebc4ea625e6402e92485abc82b08be6b2ae82564c8568c9aa7a7487411e805306147b5d4f2c1874ef3e8641b1ba3db5378ae22a460a7ef6efd68bf7f17c2c5246d7b6b5a2b5d6f4fa7b30b2183fe8f085fdee35dc86b0f4441011324322727447d95ee06f61d0c3dafef9366441f8584dbf0aa4f0ebbc9dbb718f0d80f5f103426ee9fbd81de2d18301faac311df1b7ce9873c68474f801b312f218ab8be2e30abc4b35ddb5f94bc7f4ced09c023354d90b86f1947bd8cf2bb776e507752bdada84e49f0ffa352c8d7b264cc1ed063eb995104efc639c538ca143358893e6e3e8f6993d66300ba8c648b6962bdd50ed57d47ef2f374cccb6c209fddfaf37286f0b3ee7abee5b7be26b1fe40d26bdf7fd1a2e03eb4daa3e18772126f843a9f53dafdd0c20eb4d6a8a966efb251a5f406c46d409192b0cf6d21cbaedd34446dcd0ae8c2866efa6abb81b4df7bacdbd8b5998450d0758a45cb2ca7deb0cb8a223de6b4166a58a2539e18208ea5a69b54a046c6be43de62bcb1f61cb43d41c1a7b31cccf29e7228279b5b6b1c32ed2b887a4532b6c01bf6c3fcaa0620c5f25a3e8802d7788a1084c2704a451b3d65954b3b104a5ac22f138388dec5e32bc97c8930e1a34e226bf7905e0eb5bf17fed4eeb35eb2af73839e2e2b9c9c24e21a7f3e700233aa51a3cf96c905833ed5ffe83605d36a836d4aa546bcfebf6501f7ab6bbce274ea370db83937792322bf146d01465d0dda95228c125187eba82c036411ab59229dc6a5b410417bddceb4a357b8ecc6c501f96079afc6b1bde12d1f6fc5748cf37c6afabb3505ab0ed3847376478038a82b49be4540ab07e758973ecd1d4aa7e7e23398d98df18f61eca88bcd9e7ee6c562f762d1f52664b6bf0d6d5221371359bcff475229b06489f1c08e9b57af211640911099dbc12262069c95138516355c0c2eaae44e7bd0f732c1de0521b084c1ea8f16e5d0624ebab63820cbbeaae1116957f58787a6813743eb48dbb9c80bc3a02ef396c9ab316cccc31bb09d5d0a4c9d94bc179d19cb0c8a51066755e6ba6bc52d0c66bca7f23984ac41b24c742e4bb7076bb10378249387c69f4fa3936bd2dcb7276ecd94919a0d9716d353f25c6fadf4fcc4f6d257427abf637306f622a1f8d69511acfd72c37c716b0c7a390f28571b474dd1133b547ad30dc66b3dc9ac949732b8fe47e7bcba1b79c4b51fbc700c2bdef9e146e2e9ac9e6bdbb17dfeff18b7a7c1b565fcda9a7c267782af1f8c75cc43f5a8a1b09762698069fbc49dc6ec14032814556ffcadf3ad28de3708d67c270ae956aaea5429ba5d3d4462b76e4628d010d4505566e6805e19635cb620510ce0cfb370f11ac563a237ad6d0904757b92c21d9c23dbdb74052743239ab70a7fd992bc92bc082f3579ef5fd545db75d78f1d259d1fc6758326e8a6092982885daf9fac42b9e35214e557bfcee298244e04257e4450234dac9163e1bf9577cc68b09d99a9245967a3395602779c3c9b4459123a41e68f3d08fb6ae7de736c84a00b73302518d2fd177138e0aae766fd6f28a1272afd3ca9d79028d6c48de628c883a51b021488e59711f01b0b33309cfc2716ec1e491afb702f9853c09d0620721bee8c30ef6aa45ccf3a1d0c306d583ee527d75ace7909fa796e34358f45e28a8642f913f76a5c7b63fc98477aeb3668db6d4703dbfb43008419b7c2871120ade5ad23995deed0d49f170ffa9a74bae18002bef858e0a9fb6ae4fd22d3ef25b30e2811cbb1d18cc71e4b17b62f04be84fb3345550e5852fdd901c52076545bf3d30b1ec29601d2810b6940dc08ae4500a78644d99d770f3e9defacfbaf010f0a49e8ba767538c1fbc8f7a7e1000bf585e0646c4011130321b4b335b74bfbed34d8b46a021e1ab1d0762754b2830e5ad330edbefb2c0a97d5425945350f31344e46a32a0e0171bc456faef1fcdb9a74f9a169370c6c16af6061f19b40d70ead3ec6164e99c66425803f84f5aba968a53ee3ec01bffc51bc9f26571aff221eba3ed376da435f7acccd1f9aee01dd36cd73cdf2c74d8297388ba45b0c4168666f32e182cb44139b6d313e843d97c26b21e5db3512fe17ab2cd5b3cbd1dbaeb0c1674ef25a4a1ee99e4941bcb1677ebb17d754bec1c784a8de50ad48033e2856112188a1237739d1d9b729f1fd9cff5eac2d0b61a2279eddb3772635ab31965bfe80982fb2df5507f5620d05f6bce764c3093fd0edfd7be04d972016a9518ee2c7fac2e8024ab52ed65efce4f3eb0144c3a63d6327cb65d14d4a739747cf72ebeeaf7c371aba794137e33bcdc99a9f8c203075237cf313182fe2267f4a3c16d17b3bd341d5adb048dcf506327a52e2436c95bfe741e14782ff91fb4b7b50a309342606383e4a647d66e55cb57ff61049cf91dc263a3ebcb9408aeeddd91fcd7a4532f88d0bab396887e2a818bf411cf5f6801f31193bbe0b012f45f340fade9625e05ec39d69208677f46de37a3177cf68dac7a818e6e41ad8445330a989f77aa4892a6145d59acf71d9452bd37c49a7258cfa70d3eb6c0193d940adf0809864a610ac148d9f6b2d37e0f42c54f5cda4f5ee11e197ada3f75c8595f34697d9d6f925d39eddf0ec0eabe1ac46094c440b9a9d075123440ec6cee450ea39279b48c95fe50de204bc5cdd170f645f6d69de6fef7df0feb09b03a8a9e0787a6b5a4a6883af0351ee7e882e9b56ca90188284803d50114bfadbece1e8537e87fa17d574df611cb5c1a1e0923bbf0bc56dc8c0e51b9d8aa18e27cc7e6daaf7f2238ef8e5dcce6e7066a4f0ce027aa237f9cf2f48ecc9f966975541c3e51bcdc253030b23e1e004150b7cad631320ed6cc2526c864e6da2c101d6762d9c90c8118bf6580c016c7fe536eff63903068b6a724fcf8d6839858011091d1644c6407ab07f3d7983d0f2386146e1a2f3a24ec02d6e533c7ddec072e70fe650fda1db677868dbafb2c627ad26d2d7582d4ea82e7529b6004f14c2382c35a66b29ac6fc8ae8b7f4f1f1892fb140934a6b48268b4e4472e725ac2d394a89aea4872a45ccf66b1d572e8796bf9de51f027c7bc23d5f7d9a845a6c82282e4cae547e87f0ee594be1507f1f86efa46f9c32eb2ca16b0c47ce5e1101548712e2530b46cd8cd2402d34baac37142e2c80548be14e9f7aa1a67a67d6a86cfc013c601ee2453865f6addee2c2c6e4835ddc3768d7f78204ad939301aca0e77172f43e829251a84edfa83f0f9fa775cb05f6f9de8ac468b5188a3bab572d7244fc098abe659239417ca27bccb47088fc804e430773ff752474183a8306bdaedf8e92828d72834ea54ae3d5725e9ef02c01e80d1253f1b1adb019e8f3fef6ef4aa545f2872eb8afd87c3872143b8e0160fab4a97a2461afc86ceaf8d3516666a7ce69ae0ebcf31e3e4af6e8bc599c7606a154d874d142719590f2b2df02822409d61f082f07744803f9d086e6c9f8fe8362bf546741beda2d22e1094a1e8c713b4f98356b4079735f9221dd52c55913a3d8f1e7b0a9e6ce09f8f4b49c705562fd16b1eaca4718d487a4edd7e73c56dea724ebf23cc4f6ee0d6c53b2dcd87f430ede1afc6c3394369848b81dbdc1de6386e05135eef23c1ee158e77aebf3acd4c3df62c8e854c097fee76a038971cd4dfbe015001ac81c6205e20cbf7db3df7713d817b24e8955c12ae3c68e2ddb7c308c601b58a0549ad11b781579d326d0de08f9057c36e7843cd014a00d17250b726f59736ee0783708c42ca7313466829cc6da6880c40c1fac1e11a0ba01510f3037755b4fa0345a8d39d67e0fb21d894cd6916515993f5f15671deaf3e6504a621861a2b078cb3672e74cb82a97cf57bbfba81d8836a4baa8a5b0e360470ad3abd4c4907edafd47385d08227ccc65689339403b25027d365db0b548d6ec1c4e8cb45e351780b32fae40f89d04431a8132cded2697adfe64882764b32fd023a3edbd2a91262f6eb2a48abc5ce824f7416121a7c473f76c27a8956978eaa7cbe63c979844c519249a94a78d4d3b980931db42d9347929e491acf65b4295123899a1b2eebb23ec5d68b600f8c4216a6fbcd7fbd8a51fc749e345cd8f11772d50199efe8d9d9fd68919317c0b6465bee685709e285cfa889a0e42334861c588b20f0205343dfbf0871f7c1bdc36fe482d29bfb81b2422d8073c75ceffce1d2616acdf8806b1a4a687c76b86b9452fceffb78fcc5fd9318ad5fb5cbf0612017d00ef0258868ed2064e2b59bd474c9d21a5d96cb2a5f191e117898aa38f22568a378674840b6d0f6670dc1668ba7e0f2581502a1915a535ec035fb44b3bfa41abcb491d7f66421d4db92a3efa61aef243dcf6de47488e7decc3401cbc2102ac99bfe1684c576167f4ace4d7abe43fac2e722fcc7ca3ff428d391526b148079f68e2b227901bd6ccecbdb8eb4d0c588734bb9dd9a41b0e47b81849e9ca5172d37b5c0100c514f97fef3b4f4e68431105ccce54edcba4fa1cbbc331156369944597774509c706b97bbd025300ffae48f6b8abea662bf36394b6c6bdafe777fa4b56a481c765c6a286c4a48472357c79e94d8fa04b6a1438f060a7407528412da47176e7db38f1f679f8bae6e01fba023ef5986d8eead8e1b16d6faa17b6a50258a30bbcf5782ded1f2cf861d8ca5d4b42905464eded1059753b499e2fde2d269b33b56aa903ab01f820e4793789430e82db23da158b84817c5a7d1b1ef12c813beafd106c68b44342542e5296ed5a6e5b7ac3f66c17b26356b3eb28867e00eaf505986fd7d1830fa3936a0cbfa0c44c3e0b392228556044acaa4a2104e07317c432889e93dee7ecac690e5f49938d0689a6b05f867f8153a2d75eaef2c368bdffdc1df2a6b718d83b20fdb1572315cb5fce357a9d10e2ae7df6959b30a5919500e9bad42de88498f140b47a5972ceb048c6906b705396fc6672e2a1777a082ce6c49bec2c1f5fc27028d4fce4e7a05963a1969c8c82b70b1ca6ba8d30401e36b36a2a5813ed88107bc2bbd2f89dd450fd9d95b4b6e58b52c542b4a1b55c401e6eea8fd9e6aa5f4d93451e7f600f0e4cd3eb5332aeeceedc3e75209f90e94f5ea1af820996d2c05bf806b5249a91596c5a1db2525f92eb8a9c41e71164ff424716b10a9b50d5cd9a74eaa69378e35b85c71901378b18fcf0e0c5fbd3a6faa778dbfb4318d65262b8ac8f523d2bf7842783b480ebd46d7b137baed7c9f3a30383c9454e7aa39166d13bdfd7399c89cc67ceba066de535c3f605a91583738ed96f01e8b7cf38a8a0fec03158852c11d8e03d6e00ef7b52a694a9ffbee3d87cef229adb2d0f6f3a7bad79f2e442dedb9bbebed9d70f631482de829bfc66fa01aec0d32282e1b514537d823a71d31adf5fa076a5c0a7ec27ceb9b3f55fd2cef18f51fc95ea90be7abd436a8952fe5436009f40f6c842d613cb95c6bce122bd5117dd272e1b8eeed1d3a9e4e30d6f143b2f59769d42c6ecbf26b55d07024c816ac1035c2def3ce6bdfbe5325d1927587afc6ee8d353cc4b6575926be6c32688a6829095318f270b47182525ba7046b189dadb71d6669b76d54a170b385fcb6412000e7574062ca93a321b3f7fff41d0d54fef625ead00930ebf492c732c5a406b58512af888b3cf2c4e7c2ac6ea89739736b91c385cd294eaf3d0ce3581463c89d47d02257ac7918d20be12b54b5c53fd66751af867d8824704131b15647f56176f023dd4f5cfc883ace202c54bca988390e36699ff6b77d5797403fe3cae44eb371d754d45f06fe603cf21f1f081c8deff7e4e71b61be23362977eb4c7d11ef3f0092d54afed3834268e6d5c05bee70b8387fb30411446a4c09246bc824468f987bef8673e1298a89771cecee48ece9a10b39d63d196f8b5382e516f6c73e34c3ce717702e445dd641711ccd1f2af24c1ca9e78543cd4b04a2aa9f5a52a12f0dd2c1bf696029dd8b18fea0fc6afc6452ae8a70db5da1daae2dffcb98d290213cb249a0d5acfe1c913c52a540d5a101647686f637b3635ef03b457f72bcd71f50b11bb3d4515a8cb05186df67b22a1458dedb6359f5fe93a551f493348f971d25132237c79d0445f169a037a3f9c3245c15e8eea2721c059743eb0104fc05bc2b949178587f821fc7c98108cc70a50ed5541387b05fc1e7ac028bcb81e43529fc17781e84a7a4fb7618ab67ad1306a9f1514cfed114ee05aad202592d03160300f11c21356e7e37b930d42355f1f675dd9477e7fbd64e82c55e994f6af49b690c40e43923fcaa71ccf4dc0c9a74a33741d3f2444aa9e402e07bf37347a00e45fe2f84875db1e266b9662eccd05a9b41cd6e7943c80471a042202b00149606989a7bb0e297fabf9fd080671922ce4f12b8e7137280b6d651dc2a0e90268f720fd4ec75656509e4bd00af74147219db0dfe4ba0ca231224eefdb754e00f9cda87295cf033314ebc0383d4e0ee40415db245323f8d93a45c6f8c31c38461524fe89c8e7962efc8fdf0ce948dcc8592205de9a395df27df6290a84765213c1c9b7a7758d671c25996fa6351835b77f61564e54ff6d27644bb09081c810a87a9f829e20c4994c9319799be0d1466d1c2b889ceb7cb4014b6cee7a6f7e7826976c376e29e260db164779de3912aa6826346a685c7882984929fb12edcbf80f8ea819035c4d002bc023c1b01155448a584d86c93eca95a77425b035aaea8efb46249168b3c2c9de4acc8b835337f3fb5146ba6b9b324e9508dd949ff26e9d1c61620c14c46e58017cc7e0d8ee17631d72cfd065dcc23267cd86cfeb674dc0b979503c22db5c8fa558323b5ac07cf91a40068c4a898a681a85cf1b97325bdc92c249d5d1de3cdcf2b654f5a232f30b1d88bce954ef9d8fa1da5de0d100a94fa3f1351eb42f1d2fa8475e220ab051af76907eebdbe735173bcccec087553b0d883bc62c7efe62fd773956902fcfdfb2f59744d760d7359b67241c911aadcee5d8c0409349c6af0bd25e58e2c9791426733019f109101499dd1e1aa02802312aaf80725ec64616504d014dbf71654cf4875050d7040f62128cdd991bf8488456bb1011af3a1b71252d2473930250fe2ac66fcbf1bb5803d5074905b9b4c199e51b05ed606151a9f53e457fddfbdb4a066f4aad7cc879c5f63a30fd5d2d3263644c7e8258755555876be87236508034100e37de973756401fc3da5f7fd7b704bf7bfa540e70a53dca6f5a5fddb2653929ffee8e2850d94957895aa832f8bfd63e9a9e2e270c2fc393387c42f4710e110563fd4d9ae0da005fe2a413328d163250eee11083add0149c0449cd0e29dbd4302fa04aeca44e6688c09781fd69616b220093576ccfd1ef0f0879ea5062fe13de3320e428c3b624ee72c1db95f7dc097b3aa58941bcb3a68239a67294d73a1914158bea59a789e75ec4a6aa56a4adeefcaab6fa10933616923caa0d91333dbbe045dcafc6b848894c0c22930704d81edcc05c11d86afb6b5a445cd2bf7852041857a0c580ebf6ce42569a50ee4698928c05cbadd5682b6834c0810b475657f2437574e9e638741bf084f34b2af70b4015d5167e5deedecbf799650b9cf4dc1fecf629836cafa521b35c393761bebbba7c8f6dcf0a169b195780a2762e015082e84f4ca4410912e4d196d9f637dec16916f93d27fb654115811b5bb1a2eec9fa38559967657b30ac792ca2d487a056752a7b40abb35b96d64aa53763e6aa801be4c04ee1bb1dc3069d94c9656da7f0a54f6752dd1cfaf31f1da4344e015f602c21edb95d8914ad343a2ebcedc42e3cc44ccdc2a9152552532e1cf3a3164d1b7442e786fdaee2295da572467aec61e3164630772be5268965300477181e1d00f3c869780e6f395614d70d0225120622b6c8320e33278601c09ce3578a70d84e2a0f2df9c6e0c90e34cfd452fc0f9f8a1d3129d96dfbe27b8c3a0d1ebaeef4498751ad080168cc4cb7fde5b1074abb4e38fe89279d63c90c7423af62dfd14868c9892b573a3cc3563a75a0d939cf6d014b12fce763f3c57360bf089e94ef4c1cce014917c810ad2fe401e1ab5845eb92a0ac8706048124e972c3f4e0c9f4f9af17cbcf4dcd831951c86358f58896d4a9779f9cbcdc1df940d363a74f14c730bfe42efc6ab09028f4d6fd10c630566787d317f244f168da954b3be808a631f4c3560438061624bcc31b50dfa12130dbcde48ec57a4e2766752bf88d744a45344a8b9ad0e1c9cdb5edd7c6dcd2b6a7b5023b89689650fe4f28897ea99be536d9d9e001f85f976f0dbdb4882b6741284b9cf17813f13434798e3b93f82893feecf03ebfac32cf6ce101e702d321dac75f84216301ed13335875472d1d9bcb8701c419b1a7806ea42822cbc2b50789f05131ad0555c988a0b85c0629128834b7f479f496fd71a11299e404e5c51b833426e86bf9fc83194755da0b07be913bd2ffb8dea4fa9c6f565d064438f43635b5185636971d6bc7c064366278325b6a839926fdf0925ad2d4b3ab27ea24f36f94254a8979ac1f97ec5048ab811b61b72d4b368f88cead9aa95ff998f459933feb03790978553de6c266c51d046c12c0bdad3428ece630deac32ca3652a6df26aeacadb3b65d8b3b3c3eb559eafad5863bc5d73fe61e3fdb742ea0b5bef2f7f3e98dc23f12ad9255b6b9d279b7613359f1d3e82cc6baaaba8d4845b91f7f98f75a07d2d20474729124799b4cc055f75b1ca4584d253cfe9ee99bff17082576d150ad5e818657ea16e2c0283763dcb9acef4cca3480f7f1aa8a29ed6a29ec7f1eb7ad7061aae0ef5724bede6655f321cf02ca220dcacaf2fbc5af0b1426b41f896f4a5a9b0de78aca6f6434b5b441591dd7d3fd3c798fe599eeeba6320311e2f4df7a18f2e17943dc4c34492eda3e1fe5b30e9bba6c035b72d6e483d185d1b3af29732194ba8fe68a68ae0be8735546fe94e66de79312b0f700ed5d19910b4ffd51b74be0f1bdbfc44aacf2341791d15edef963d668349a1cfb5513a81efbf4451098c94d23037c84a06b7f253e15899c99c100b186a20694fe00d185cd16159db78d073b9d060fd1108523dfa4b553603b800a05001ffad4cd47daeaac224dd765f0de845cd7fea5d073f787a91b899721b82685efee9bab1234c9a4884af32f0195908de668f7e080e554dee5d1627860db2148a23a4d8766c0949a3a479c482b4ffcc33f325f3f3a4f1f23db8f0585872e059badbc5d7610c42d76e00d5a83232d3882dd0d7d1fa39861267a62bca955493803b5fedb422c04d83ea1f1f731d8b37db896c2fb568e97667b841cb94151381ee5096b75f929f661115f369134a3eba0c771733820f7ff92aab912acd89a134f3914b04687b3ae75a82cb8ffa628a5b10858a4bb67915ba8b95da2b140a86fa59bf92cfb2f58ebe8874810aa6aaabe548422a57d2e62a7650c062939e5011be734bdb822b7e353fe239852916aa42a983c92ac8e9ac5b7a328ccd8d59a006701976f9377954497a06c40670a5598055e3f18ca051fde440f6ba62832da2e925b1f2f870c7bf5cae7ea9f3db5bff18ed30609a7653edc57c2dcb8848e84546d3f80d9931ea926936e75233010098daece0026ac60f3dc4d9929c46c5534f60837f533680cb0b55ba52c72d1337e706a1505b2508b22310035928212b234d4f95acbcd76b2aebeeb9232eb9aaf45c0a35bb85afc3ce2c4e503f89ccd23216c922f691111a746ad2190899ee90d4a5c3b970171e89f9bb764183f35ffe9ab5a3aeb84d4dcc093f613b94b01ac355b1983f0def905e7f97beb009d01d25632909a360a7116ebe1ea61b8d2c093b72425a644c86da269ab7ebdad6671510b2edcace4d7c517880c0aac039255f7e1be63b2946d0f5786bff2e4a56698cd7ccd2b1ecf2b955e5d792c199668e694d40f00942712f144cfa33a0e29125dabb47ed7173fe368b7b2ffb73e1f795a13e1b127476ba1dcaf688e094fae0936d2058dc251c9e71ca75b0474c7e2294535c9d10267cbd6be995214be14b048ab2847b90c51b68c35acd2f49cdb2c0c2b1b79d1a4acd8c4335bdcb1f855e86f659a2d55b509c4002a86af40811a031c86f6b2e55338a5dedb93cf43595c5dda4fc47698c5a7246274a85d717873314df8c26768c3e58cde659b9bd8cf22d4dfbc66cfe165e1d40c36378692188910a747cbd981181f6a34025b872bd8a8db638ca915162f7f22e4961830f53d85d9dca8cf6c47bf0963015ab012a672ba1c7bf700dd0457922d68f97d6db5a58788f20241ec65ff0342521e45f861d6e05bd5c7395231645ce64004dc630b2b5e5775e7176d5056c3aca10ffee21c567a34e1bd0bb87ee5d96a6ff8461438aa905411bf2d611499be53cd7150faa4f6765b1ab9ca6186fde7157648e8d46f4de4a931c7a88ddbdf8dcf67fb61f9cc2578887a6a2696940a93cb2b50dc986a7c3bef5a6f86e8835a284eb847a3505b296e6dfdf7ab9160e76b3abdda44b4f88be777c98f15df18de222008cf87323955b1fe8025ee7f26c90e7dcec17bd6453e97e2a6113b9f768c35a19255b70f10643dd3e10921444fdc42fd0405d59c7eea5919ac21e821d0b1f982bf60b377bf66d41b21e5c6f41d319416cdd1317a854ad0917e7fc561c8b5ee3120e255f9966a410914ac697597eda6ec0e6bed453a1ffd600a0162fddc33f486b54992952392beee159231cb39f5df0e39c244b678760a2710b76776ebcd64d1bce222d8d2903f1ac34ab9ce9f5a0337c2c72579411c8283a296e4a735c4d97d8aafa9aa603d96ca56ed210c95e0620afb3ca573fba612d7950a28f2b0900b3dd086d89ea907c0fd907f89d24cb5abb191bf7538874e6d2658f0d2d51fbe9b3bde5ed0b6111b34c4c9bc59960db532b129d4ac0237f9c0f8c59e3adfca8249069da9fa9a5540be79331bc47cd7f15f65e3b661d8b58032afd84aa9b0bf3d61fc489f88ce694647fe6d17612c69a3937611bb6cc3f5efe508891e8d6393663e8bdfff6c4527c2c15a72bfcb965d505dd14527c7bd9a0040e151a5882b8b81d76e9c4bcbd34196b9bd362c68f6771c4e00de08fa2cf3e3c94dd41470be5f273425efcd55d08c607da6d0ec2637090fac75c15a18322f9a6314d53506b3ca4d86a5a5f5919fa3967943c3bee3a0c5b2bc362009075d5a06347c57ce67ebb6680157caae74a364165bf8a0293d3e41722090eecb8f4ea01421175fdae68d9bb8c56ffcc967a17e64812849fd61ee1bbf92b4ce814f65503f94b8d4a609cd8043f9ace6628a5781a55ba69d886027fc08951a9838c933fe28538e2e0cc5c0f9d9d48b9448b57daf92a9ebe8f1b15b4e247b2f7bb9cc176a2c68ccfb16091e5113d9afdcd235f3d05070fc738a57591f66d12d60597e5da1ecbc8d5f81b9ed6bf7af84ceb1ade07abf69769c0b5b42881b2b5444ea59ab848a40ca505cab38a284ba5614e3a80150913a883ca06e2e3985bb7f0b088b1edf9db8afff626a1bccd100e0d0b54d62211ce146ceb9fb8f634c343953c0d172a973a2c90effe9dccd508ddfc8bc3059a99796dd8883b40681734c58a89618b448fd67429cf0ad62df514299f2a25e759a359b082d4a9ca26763d7e142353a8ff3720127935208896cf1a9ea449c63d752b35ecc7f64db190b73097c2a19c631bb92a1b8fa250f5ab1e3fcba9fa224144573a5eea1c868bbaf96e3261cb7379bb541fe9755745a08817c383523c28b979c6b8b7baea12dfc721e69f14a6895cb55c4e1a0fb534c14a86bdcd3891f605fd033a9d1a5c772dad67ea000e3e317e9e2e8f028fdc3d6f912c14f4e3e9fa1691637262be7493b274b273008037172a50ebc9a0d3b230132e6991c5b5ee5e623c303c38d370549a20ea4d090f71c3220efa55fcee58f1317c4e7e6ae64cb6443ef7558f757b19584684b6b3775ceb0d5bcae0b7503c54e89297ad275b1cc913055be8191dc6b01dff7938b7fb738f7853f436a785e15f02af532ebaeb46136b51cc944896adaa2bb20f42804a68cbe2b187dd1f7830691fb9e5c1508ea51f438179ac4313d45da72169485c9fc7aa1eb8fb6ea72c2a766fec4be537b00c7d8241f2d12c603fb98fdce309c999177017bf657367535555fe53fef2ab15c152bd742bffe7f7214759485507a95e02816983b4d4e7d642b871f373160e7557f8bb0a1a8da1a069a745122ac8d2b44b5f8b7dbbbd1a4225d3fe0eb0ae3b055f4c1376c04ef5814c2001db4ae3832968b28562527beb438bc2557b67df162d147cc9476eb2eb6e92ecd5aca1930fa944ef2b69ec53d2353ef6c4a7fba0b17465151623f6686cc3109756b9b2a6ca6bd13680f92117fe5df1e0138f653b2d9a4697ab902a560c68cc95b2a8cbc1b65ca1cf8b3dc6821fa3e82fab10ed38b49e1fb73ab53971649616a6ec405183a409da0dd264620b21c9eb36e8dfb547556d531f45e3b5b9d67cec5aa2f2453378668a46c7118815ee4de25c576411f57dd00e9cb88b4a91d55c56588a4d6c89335451621a2d0d1049112ed9ffe541f14258a572f192134002e14c558df7aa9f2ae653ae4063b83029b65876d69c9d8bd1fad0a11879567b93ddbcf733c07bf308e63d6c136e68053bf1c492cfd7261f6c25f74c04c99c6096048c93e8f2ba82db121d9a3cf463c36df09fa84c146eac4990619afe34b2027f6eb14354888fe8521d4d23ffac40bf81aa6e2c2c2348a4678a8a2b99ac593e68cda01a7ed75abdf2818aa90bbfa04cfdecd6bd5203f09bc7dc488c7a7be1ff4147a03c46312f7011d7038b23478875ff8866b211d67a0e509d5631a1b0ceae563cedd492b29c7d50b66d3c162856069171e7e9487bd592bb8976785ce82d6d6e436b006d0d2acafdd52057fab1ea733676a8693bce93f36b0b747e542d7bcb79389f7f2fec627839eea1bad7fc90aa2e9122cd8cdb399c6a2732eac8bd6362ebab210dbfeeb281c51f6d431e41e9c15313161411eb8c444311f68245b1c3e107bb9d721c6721b9412a120bbe2ea3bcdb646520efec281b34ebe2ad8002615faf742e9ae50e3f65a1d747e274f6a2499291567c0806190ebc087e8ef193863a990291fac120b401da2b0a6465083d076760e1d56935bcc07dab2e46d39e7dbb4b0dd5a31f499e8e72ae249951f442259e5f715a2fd5b9b768b368225d63f9a6e5c5aabde66e4f058ddbb5f48e966e6bc6d5898d87ea6ef4945ce0085307cd77133f98b6f73db4fe95523bd41aaf42aca5ef8378e6c347d6a62557b7da452397f556ee5f3eeaa65feca60f3590a4df4c8ff54085d86ff0338e2208925f3261c210c9deecd1ed1d2b20c6eadbe9c8d8b2d615adc2fd2a06f422c34737d857f42154d2e6565c0ca6974f29c79bd45153ee2da86e6f8fd7f9448651eb61c335a1db8ee0f616b774631c6230aeb42de2f47f3eaa92d50fdda7fbddd0a68002363ccf7d094aa422c0f4f61c3a71737f60988e1495e32617d2168f44ae3b53ce5a209930701012671ebfbe9467f6f9d2cb7754033284667bb79690a38367acd8a6691dd2675fa32099322338ff9632fa96a846e7996b9f37598029605d8936f16c03fe80f508cedac4b8c5352247e7bea1d62f2d31e0f4275ad9448fe9bf2adaecab75558ea0d43565e181aa9f476e7688a83b4ca67a269b047e8dc29a12b5b97b607ef625f51f06c96ff6f69f96c13f0ea5ac96051608ef0633f22f66366d4d002aadc16122f8c111a61772476f382d6967cc6db3e4ad6a855293b6c7b409e2b28725405d1c6bdbc72eb310a62549c38049641717172db87319fde4fdf7fca3137cf2e83be6340ecccfff2938861bf91f6c14e1c21008d4ba7bc67f73d7fd817d51c562c32f00c10ecafe6ad351463b2e02856b6ee0960e30ca678de7fbd21040e404a584b1d516a52db2e9d080dc03856a96ade64b7a89010f51dc856f802ebceecc97e0832eee3e46eb113b8657dfc1ad393419a9c67c17d76db2893edef0c68ef11bb11846aeb37fc346e7068cd1fe99415b8d4807704319f48301843115c4b4ce7295780d204174fa2b7c4728e1222c9ae30cfc8bcd6faf80dbdf18b9101f1bacbd40b88b2126d41622605d22f77486660d5709d664e93b3316a70fb570a06ca89284da587c6613b85053d5204633dd266b7b6f2c526edaf9fbe1cf019f425c5378872c3197f34166d1a34f1f689fe69efc1b5749cf0cc190e3a6fc2825ed630d257eb8f2fbf46d899a9387a27b1a1c3dc02f05130d57b16f829e3bc3cf50fd403e2ffa0a496bd8d3b9b8fdfacfbacba44ef42363e118bc5d37612dbbee74a264267dab95f191e37d58a9c9205fd51961d97165cf47c735fb1e6564671b21edc3e906be9d5a4a852b0ba5e837bdd4d85483e7beebbc17d40001cedc1996a21891cc98078cd405d48c266da9af163b9a0cca3b0f59169cf7242e8ba57db5cdcebe4e858b3889a0c7854d0d3be2aa307eef669e1cb991ca66d2c16ab335c9184cce53d34fededa48cdc377f5e19355aec91d5a2892c65ca6b2c9a7b4c1da629b980806a0276513956feb71caaba096e77b0ac323e116245b6c5c76b3f61901986a69d62ddf17a1e95f3cf9ada5a71eefc7ccc1fe1a139d62adf83ec4e92a8c78a1cfeee9cca43ae1594df2ab3f13657c5b453171c4f3c099a457ff7263e5a253031e8cc41c2ee3dab56d950a8e5e39ff7c5671b221302f8ff1018dedf487ea3e8b725f5acdc0afe5f451216b1bd5f4acc7be185471b408c7121b999550ac4d4f6f01df3b1c6c391b5ed274dabc8a141c3ae62ae8b57e74d5a2d22ddc5e630b7c03554479232a6a8024c77fa257454ee9269a16e2efd36ccebbdebddbf72d2ea90d5b39bc41bd872c85b1f46919a6d1b111602b7c841644201e25fcfd538e288c909cecfb1e39cb8a340fcb2ee8bbb68b1f3e88631ad0b511afe841459ab822eddee15c858444e37a1ec85a2dfbe6192f869a064b997cf92970bcc02601fec0434f1babdc7c5bf5ceab6bfa3883e863ca42961c8456234e63bb9f50d3b83918d495828cb3689054053f8dd23a315ebb922a748f815cd1e5be1daee369117c8782af0c6a79ce0eddd27aaa146c22d9e6ef1a4f6a6812f0d7fb7a36d452efa7784053243abde31f399c3c6b8f173e52e0be01f79ee6aa902fc77a81483d4185888a723a9b0175621d70ec5c49bdbf2693e6e770683acab0e42da50523ec7b0f5864767e7729ebcdd5c9315acda86130b1894e7626d80e0eb90594a01a64e2fbd8b2aa67e4d5f2cfbb479da07b4794bbb50ece233e63e159d1cd3a4f35d13069859b40d65d6697b1a8699ec66c4a722ed5738ff11e28ca2c42f37fc1ded509e8835f3e9f173718fbe63db50293727ec444658421aaea8d7b19adc113f95faba1fb2135a755ecf1549c320eb74d94664627ccd12310fa6cdaecb54c952619010ddc33eee3bf0dd2d769ba73a06dc6e68e87754a089f24f0dbc966573e1883b55f3ec989ff3cb2dad76360c7e354d710241630da2ee0d94596564000d741a7825631d386a6c8ccfb31dda3e64ce63078c315523fed3d13c0164b8ecd4e3b3e7ddeac56c4982af3ab729cfb9f4d5a983022a85ef07509bb0a43c8d86a4111b70ca9358070f134aacabd59ee60f8cabd6efa616626379037307a4d543768b02b8fe640179d10b549584b6333ddd17540cfa3402d481a2872aa5b85d852e7e80ba190f8fd5bfd2101d4bb441311d01a32db3d14fc5e0859039e40951ca370fddac16cc489c5cd9dfe70631c6d4135735e4d1fc8788a0c03bb7f3b2aeddc0af123df037941237b776a5eeb8bba326b378010510c5ccdc8a23a1ab7aa161862e6a34f6a28e019b09f71024fce594d14624ab919a06ecdb3ea3fac5786e1dee6b66a39e33c2fbaf1f0ac6208c3b5ef41bd2bf232072d5f721f9ed3fb192e81081f20925131cea33df342adcc5cbd09c425051b70c7b0bbba5c261189b82f28bc74f80e3289481e5962864f8ce17873d506b553790554ce52ea07cf4a673fe491b3acc52524f957a09c437a14a8edc3fdcf212844d602c3bfc016501bfafe70d33ded21e37010c3e25ffe67d21dcc282d1837c82c601db32067f51d3d4b3d6e6db757ab7f2452c57dc8411e3c205bd4ee6835d7adf55aa84fd2238474e35ca5983d390399ce7627cb48ca37759dc8ee084ed3cc75231168287133925fa85fab904f79a1cd473b3a8b5eaab76670a77b8979114e9131e23092b504c68bc47eb459cd9e5de5ed420a3f99589ec0979914025c8a15845299db8e678458b243c623a05910e2a1dfb34de583ec0617a5b786f41cefd0f2a88b64e6c0ff37128178621f4f38b46d768dde76beca1c29c905aaf8af9657582a7745d1c96147a82d1db2e614b11b947358936dc111433b4f06f1b8ed73a26c40b4ebe36b616eb752b5a995ae0c3d7de6974c1bc20aa7086ed3cc389f68517ab9566ac4cd1430b87a195f54ff4f2774107228ce9843850ed8111e1d22b05950158192a7fcea14df77812da9ee9a40058dae52893fe839b83698f341e039e78a8a792fb3c39c3677fd9d931c69ab55ed78ff65d13f30e46e147530124b9f5b0b00ed73a6cd46f03cdfb4a1626dc5ec807ead4412b8167470529a2e882aea94b42210e0aab656fb3fa0d5a70208b51292c6fd02f505b5fd2681ba01eaebd2f9ffbfade945a0d77cea9b472e75e7e98ca8125b0d90832d8c5905f739b129922669097687c9d102ba0ee9137d2fec26ab91785fabaf7de34fdff30306ddd2df32a517069b28fc3bb6800aa6c81e32cd72909c1be761ed9ae0137a572f5db3cc88b35ed18488ad6e105e1540c615c9c8836c967298cb86d943f3654b2f65c6a3c0ca0fbc0a7e8aea377f3f3ab285c3d0920f81098abd8d28ee4df9b109ed02c91e4eebb08e2c6cd79717353ea0a626131b5af32bcc689a66c674f2720dc870bb5aff6374652901371d6fd7931913c85b2f0ecfde4f273522aa2649b81d6f2e269275ceb2d8c7f8edc1e590eb454c5cc655f68883d5a175d8aea0d688d265b078c97f13b566ae1e9cae551542c9c513188873dcfc549715925ce869861654f67c1a1bc36b5ff728ea2d2ce83411e90fccf1881e7296e5da3ac0bb812c4b285cfc112d5d61ef85abcbc8d9c3b3d6628cc6131c1024fb4739e095dc155049f40d1c393403d01ff8cbfbf8dd8572f5ca606591ae26f78e985302ac0699b98f315db0d144c637f176097e1bd1538c60d819d1b8da508fef190b6ece911949e535024e0ee1cd139eaf3ea4c1be6e2f7389d393ac54fd8fdecf5ac7a712def491ab28401a1e01e8d1bbbc0067f2481b314ef11a142e765ee68164b722db988a4d51daef69179954336a5722754bde5a0426340a68f51a35edcd39b747a873409e3ddf925719873687bdcf00f0259a0994582a4ec91b16bb431b2cf990ac2d3b7746c99bfbbffa15423bd461b2d81e8c01839fd105e260b0bc90508edf2c5bd38ba4290390e730df5d76843706edbc1c26e320334e9a935f55dc603d389520333c92ac5e683f1458970408442ff2dbe01888dd49463a2ed189be039bc791589136c6e158d2b86b8fa6492463aa13a2e390052488a32662f9c6d28e0461b3e86547134a431c44e100ae1c18aa4f1838bad92ea8c1ad163ef312861b7d77a9a3d5ca5b45ac0955ff983a657c92d8098ebb82260cac18b58be349bd44f825f1b46a46485fe5645cdffb27e31ac1f9517b7cc7443b797a7835a137ba94f0cdd4b7c9fe3c7bd51310d47e3c46339a7252a1a200c7cc9aa59ebe1f631d269e003b845488508a0805b1127dbe4d8702c203a18d20e8cd28425ae9f6d5fc0a9c7caa739d3f75144cc768893297affdda2b16b088ac0249ef544b98d7baef02fd18b4e93f1abb7b1df7de2551c7005af58fbeb671379a2103764ef4c0cc08c53485a15e95195247011d97a832c30f87d4dabf3094f817e6cd437fab5d83f384dae879f9bedffc74bb24fe3d4b39aa5e7cd80f8d42e7efaec776bcdbbb31385a3a18f899f603ba34b723edde90265ae717d6b4b25b5d04f9ed896e0a489ac21d37d9a80da43f5c040c5537d419f176c3163e69b6f93a9cb7445fe9e974de83ccc4905da1f94a4dfcef54752ada0df6fcd41a756419a685ad7c4f9c77a78bf00091c51cf73002284d2ae575ad7199f342a98fe1c501295e78d83606d70a73a79b1202847ef410fec0d3c009693c2e270b87c3d9efee0dce14d04ea28861cda7e407c9559ba89f6923dfdb8d38010075a5bbe0a7148e1c3cf652f55e3dfdf7c3a7cd5d0c9821848312bb99442edd0ead3218a1b6a294dda20f6e22cde2f5ca48e2890b3ddaef61bf755cdd59755e8889de45a809bfec85f83de0daa08c3a63f15f4ab5024a216f6765ff98e554df377aef14d61035dae309bfe4799e2bda53c23e2c0f285804aa76acc954d70e304dbbe43cfa0ee41607bb82ce7cb062cbd41d5c3b0b98e9dfd7a91d66fe13dea8cb65b19c70bfbf5e22a92a65400a5b8b48d70dbf416864531d6b109c3daf4cb96e2e5c6826c9babb8786844916a09eda413d4b5ef5bf6d3e063395bb75fd0b5b85baf9c271586f2c8c1aad945e1a5e48f96f1163ce998ff4c2453d32710e7cb6b18374d57a7628a2618a1a6d37542dfe7cfb42723b3dc6a1cfef9dd85c2b02cfc02eafafe46e06d7a69eb6399462e91ee49308d77b55169cb88e7055ae9f19d84834d206c63afaf4c26e0f4e8c154cc61efe98a810c99866d80d28fdb4c4314b85c7b03e934ff551c5afbc8d0902f3169ba5e7651359c8ac4798351ab8155e1de641c88c52e40f3d66676b0215b00f9ab1aea3c9e3511d34d0df9a7d135d227adcb92880822939f4df011b40a8c6bfe052ddc1c43fc523ad4589a4fe9069139f454ab6b4d62d50b33cd8a345bf2c8f132303733bee4275cbd9a65faaee9331231d240cb32939651291db1037f710e4ce3639f352a672dac641eb70303f2a349e4f90b9406fea8afedd7a9a594ba2238150707420b3f8dfc38767bf901a8f6313c97adcf8fbbb3f8d3c8044c1647dc1c3f1fbaa6dd8998a7819e7cf63bccbcb750669035fb968c83409aafecb5dd653447fc96716f29a747110d6524b428081975d4c8df147a8140287ab6974f8e3418ab8cdede56458abed8d1a5277aba79e62ed3538d552f07cc66f7b7dd3d5c269bc51261ce567f5675119445cbb27f73016afb002ae919bb95e97838b54c5eeb1dec8c9d921d4e48e2f5d9302129a8f9a152f11b1a791024502cba2879eb1ac0d3947ede75816cfccfea3e30bed26587e59215651ca39478ae3b8cebe971ba71169855de8f25c63fcd4d647aaf55e22136d0f8c6912bc7f40236231002cc0f769abfcb898c9c4faceef897f4ba2bfa1c5e9711c10d92cb124fe712c856ba9bfe5e8b14c8fab636c58cdcb0635584bbca59f573e8087121ee771c3ca8e8285f1a2d0b203b1f138735b782365424b845b9b3a7c3a0b8645f0b36766a20210bb374dcfc36e50eec66ba5767891162f3b4eb2bea85eebda5a1b51acee98c5a4fdea1ab8963d2dd1aacc331cb83b2cdae480723437b543e3e4449834ee341bb8c55505c9958c9a79a202f50cb5752d76817baa2ba1bfe6f2a28858b86bad162bdadb65257b8b65365cebc3e87a02f8f0ed0399a5143d1c3a243969d83a8f2ab2b26bfda39a8add157af4aa0d65e80fd836a8812ffcb7c5367e463cdb53ad9450cbc13eb707f23eaa0af9e8ee97b29377696239089600cbf666b8f741f0d6d1acbec38d00a51cf7b6bb164875e0e209a7acc2e8cbe33c80cfb5696f7ba04d8462d063239d31f1f388aebbd608ac330118aaefa5663fcea543ddbd36fb132c89301c148c375b749e5b4efcbc582c6397d6662e13224eaf6fc42adc59b6f9f6c28a28c4249a2fb57a50ce52e12cd799164a9f0bf8346db0e2e348223f96e7b49d19844dadc075fe45f7cb6042e6e99f9437d03edc1c06067918964f288a726527d66940e845f439e8a72504bbf619eb269f610a61c66b44bf95fd3fa2178539e716c3cd88f4d8e28854c90469655250d2334de3e03a4fa31b561f62202681929618bd76b175bc5c3fd5e552f18a9df078bf918aa30435fa6dfec96c3d748c701c997e61dde008fc713d6cdd5e4fe6c7aa5b3ad0c440bb45a6f55d10a9dd8535f3ceca203f9f9ecd2258688123b248335992f1767422d80993dc246c843099d98cc386fd95e216bf0338925ecb1213e523ea49775fbdfecb8563347e698352dbfe2d4cbbcf444aa8541a67c70c471000ead7ada64e1eb8733d4035c8b32d2f66758eb2b1757473543046741e8151990039c12951341cac949bb05d15acad8bd3feb78ed15b4b46c88fa6188c79a68f5d6b68fb76b7d2ef43175fd04d46df24d00b6995fd97f72e5f824a13dd19cabac80d7290b15d98394ec567abdb5f623366520b21554cbdcc670a7c02ea7846a62e759aac06659f85b100cef8e840b16a197a882023685dcdcebdfa7fa7a163f39917e07387f32100f4e8fcb5d288597984af060b519b28938812bf05f6986008cb327bb7dc2b5688e9977ab05b6bc99212400e9ccda69ae2a171455710f4f1b4912a6b0ad15f6f88e3072df4a7e45b5043a72dcab1828346ab74d4e6d54876650db7157417cbf9460fbd9574305165a28f75d88a5122408669a5e62bc6040b83637daa8f2989bad301171c335790ef734ba80453afbd8a2759c731718bd22b13c7aafe09b37b8d7581618ef98584c434794c278f86480bc335d90deb1dda6e3d9a0ff2edcb46899585b585f0a27f7cb7f18d2703d74ae227af3b21cf0912ed331f5d27cc0d7ea52aff58ee8de34eca4f25bdb1168fea25a072fb8cc81448b89b18e4a14683614716fe34e096e288ae7b197541d18544bf300257b57964ed1339fda2b1416e4408afd8ba0910dd03c34d23b068317188ece67e3f2acb24240663e191edb92488d3f4688fabb66b385cafe25a37f51a9571be72ad4d4621d3a07bb92dec30e1b15721ba6820d989f15929fd0ce531fccb0179c48b0312eacfdecbfb3329ff14e6eb95d45a78e0132ffc6d8e5b28f4543c8c062e3d107b9467c7518b796067423b7dabdfa567f01bdfbb12ed8e30224659940846944c05f9b44c83d496c334267592d43445458dd57645706cc7917c22ac2b32fe135ba3af071d2a0540f5d4276732b17785b0dbf997daa07f24f5cfefc031a6eefcc16a2b0e23f6488636a019d0343bc7df297ff22c740cfd8a5a7e9f411112921c690662424f4a386938883641b9e9e6b03f47d255250a1d0a9b9f5599243a7d8a1597b0a491a94c40c6d560df094cad68865bb4ff338e6e44b8e9ec4f8bb6dea52256785edccff606f98c7e7a1e298891592575c28dcdbbe84a7549ed8a65759706bdea2f0b151d73c76175c397d281c7645e5b479a856729ea61559174d78d4c868859fc7c65525cc1d0e7e0f440d63f35b1bc529189296a30e1858035ad2c97d33e8fbb9c586a46f2410478f6367f1829ec1c553cea57b9225d9bbb766f52b7075c01a9cf2eb9e35a0e08cbe2f138eea76a24cafbf7ca4d10cb3d269c45e5e63a40d055000622586931e71690ea0b2cbf60d6931e90f46eea40f403945fb6890b3eda80784a16e34675e36530953fe07e8fb311d86bd324307cd501063ee4ee4934d0309612cb6e65415a5e2545c4c9959c5bcfeb72da6e28c42ee1d081d38deafe3d1ee1952cc5ca9b5a33a603f3da32802ab508134e8e5ee10266ec3970c85f13f08f4189dfa0997a602016b6b6b08d3ce9b8bbb5c8d6dbb346bedc1dc27af8138860f5194c55a3e12cc91bbcfe0e1e094c7fbbce1b4f45f6cef24141373b553bcfd0c14b37ba41c5ba634adfaf0d301704116785ea6247e7b92646b1a45e9cb06cf26bee197575fc7be87ac0a66e5594cef3f2fc2efb2878c56c94f42c46213afbdd033d5bd8c38ba5ca32bcef3c74719135e2151751f32ec12c0942b9aacb0ea91813d5e7606dd3d4f0c73989d61382bca7b74a4f8004c1aef6c0ab5a2236b21dfa6fe965faa1521e704ef023d44eb3f894be6fd747dd088d6e27d951d867a16f4fe2d9e994cb90345b7059860a7c13e9dcd1882b61b195b75752538611086b78d89b2b60a5cee9c8e2a5eedfb64d4ae8e440b1afaeee56604e6e0100c3bd9c1136ff2d733970b8235b9271292ef206b034c9cdadedf9a417965d1ec14fd407ea655f61f69c4ade87d2146839a504accadef6a7efea8eb6783c9fde55bceac7b469d25c851536682dc90d5be3e4fab812b6e98e384f9e19110fd8c1361dcc705f104b922fc2f731128b0753062c36b7440f987117da24d966e45373f3962b6bb843871c40942d0dffc8a9a7516f3bd44f30b83dd8432fe0aac0f3650ab700290dfa22c385798c88edbbcbfbe667cafdf2b6dfa0b46ca8724e5440c66dd1c088768a83bbeb2be545e83545201dbb7e67853297fcde98a7254bf881f6c634f76aaffdb40082baf14bbf8784efc5307057a03033ed307e381bf361bae7ae8c5ff359dfe1ede6762d4ff5e1a9888c6b780887ce120841cc5fb794ea165949b996e989ed3ea358cc385699ffc8e72ed0d0c7cdc1440d6770a3880e616ec3a42b4bd15bf7ad4b59b4f6dda285132404f76bbcd9631147611860f23efa656efc6041a5130451d268d0fd98e5606e1b0ea3b252a16093fd5d87042beca905b3d2afdd4bdfa63762afd61cfc92d3ab73aabc55acbf7a6cec5b19d376d0dbcf28a8aa2e27f0483370a4d62681a56ac247d4e3a320c4ecc4095287226e6de6e1ebb9c9ed4f9f3c6919ef1bbf70415ed94b44a4ebf211c30241c5bd53fa41981bc508c8f2201d98b2049cfb7a3cfed25f828a3bf5f56fb9f397b7425f8991e64bd7fe0cc00cac9ec6770407306358e93e224c467d70abb5014bd69d515dbd70c5cc2e6aa46f53b333272f54d0cf6a59ad78de34fc4dc01c2757015c4c2c22f506a2ad96082eb3fe2d669d92396b6c30ab7662b8b6ff09f10d5282b6534c5e4163158d68f5b9172d0f52852c11795277dd8853cb2e98d9b7c65f5e00a5aee7613ed665b0d3453f3ad3f6914d6c73e5bf829480898cef64d8025d91267665d710dd719c65856acb1900d848f315bf68cf637fa36c9390330889d8edf4718cdd5e5fdea3e577dcc68e3087ee2fa350874624a693c12d2a08cc1d609c75f435b6f30b4faf5ace9eb109363fb9b0ce8b5f6ba8c9b29d42cfa14842eb36a47a5c3e4fa0c136f57e1a66e59dda1ef70a8f0fecb907f5806e57be6290e99e19e171b3d99fcfd90f1e0a374657a3304b88eab031d6c4840af1ab30cadb5fb44e62d1890e63bd29983b97822ebed1aa83391ebff3d512799d38aac010d534dff8507b6ebbd19e9c737eb3924cdbb4589091cd01ecf878d40f46a38cd4ed6841c6e4fc39b1404383d6e6bb73fde54c9d10fadffac61a22114c697fa03f0098864981878576b53b01b9e8d1927adfd12800ff3c00d896fed55525ce57f100f350d26d1cd0e21ca7117fd4c2cb2c4446b864cf6e43d227e66be0234fc46dd9deaa7211a603e64de9221c3644d0b4f31ce5c9a3e088f4cecc1520e420849aa442b4561e8af87860d921468b42a16ca93a3a8c32db78057d07de903c6dc3fb5b74570daa92c8f5729f43d39b5ac79d5441e59569ba1a2d916ad32437bbb1ba638f9e5d99c197511194c5aea931b41855cc8cc299ff645a1766fbaa786528df931abba681977fda197c4282e15f4e1e6f74eca2146a343b26298165a20e6befdbeceb00f7350d3940ebff9fa79fc6ba7622a388a4d0d6a51db799ebda350fad18fc7de60edc9429e5dd01a230eaf32b457e2467d60588c3bbbd9f99aa9593acd19c1ae0ee3f3259333414504bc9187d66ceadcd1a4a90b7d5a6db1bc2b8a9489522d6ba8e6a594e4fbb872dee6e7a7dbc936c0c069d948b2b3a9e8c33527375f4db0efc2b94a07229b256ef601751b3ad85161fb96dbf768c731a724f941c5b66ff09167ddd5ed32b47acdc667ad815e237576f56a3e338189e746364a305a1fcb7c483e0d51a46a6856f148337434fbbaa7cff6f6b5a6e57b31970a4a8f0d9f9f13d728ff0c0e8f7ba88b0e302c374c7e18470d8e78333271b5902dba70e49eb1c7c2cf2208301e0bb2be1887ac76f98d74587969f3f4f8e432127cf8fe37375f7afebd40d31915fee2ac154e4ab7c4cbc91c597c53fb71bb54422ce312e276fae720d2f726805c8df0994f354e6de38fc971f3ac17ac6c2dd81433507fb0d1916f3f1962eef939e5d00f008345a2dcc50babaafa56f5f6da765a870e8c90aa36f620053f534dc70bb31cb65852a5c32c9bda0c3576ba4d038887992437843e14680cd5cb5fa0f9aeace46dd6da4144522c30fa7065eb5bf1edd5b192a5df870e194f042e0f69ba949351dfe2e5672591f7504aba8534b4cf0bc3ff3fb92c5ab8108b3db4112e0c4b5feea4d60e5232210b2541834bff2a67a104f7f7779c5e04d1b6b8b58edbcfd3dba8b97cf6c1889f8f3bbd4fd1a1c664c478463c8ac72e659d89cdf5e70bb42bca6be3e05fcc8bad7e9f3be2c1c226cab755ce1567ebf8939f36fb785224c00b15e6efbf64e03031ea55c7f14de5f0208c5a35365989d6488e5982692d2341b79c9b656aa02e178ff92cbd3fd3fb5dc81866b5a36ec40150af9087d645a63d92670273ae032babee5cc6892043883e7fe3b7c38573b9b037b3607cc9bf925091ffab1c53b0d95440ca8a4d47e4a82a5bf8a4bec6c57494bb7b14c80057099261d02361ffc65ee7455e238d887ec71b1a947270bd595f5b5793b8ca6cd3c13378ce25fae6aeec5b0529cf7fa07946ecb967df6f79b7fca7b744950a65bdaba8604e308e27a0b4ee6dbc2d0fb69f0592e92004332cb905ca83b60e484f96f5393ddaf1ea4dc140cd99e969a875401437e588339192329712d726b00d1bc90030e6600708d0055b844e55c0aee98dc95fb98d75e8eeee283b0037f518552e8cffcf7717f3cdea12dadb63720bd2aee26ba9adafc3c92e4ee2bc791a83b2f06a9fc42be99c50fe4ebca80da8951115da561b278a1aab51addba3dcb59cb56bc43e655b1704a1c1c49f750b8dcfff98070520b91b61e630a1792506d3877befdbfe6aa60b6d3cc38960dd928fd2cb7b347927ad5057f566ae88208a9159b81e3461fca025037b49fb420d510f4e66224d19bd630a7b570b58f7f5a5fb202b1b246d466f01d3d383f2b9183005f96e1ef8b8f2a1cc8489201a7a022c87ef3767cd48eb3f072d8116dd45dbea9435768d9d7c3d530f0bffe1ec0f4d350f6ab46b88aafc259eb3f8cf90ff0674ce82a25a73122af6f933a91153afe53c1793f43331740673543cdc72ca57167b30b24de43772fed8505403f92dd75bce90b2f0a007df8dbfdc7f8fc9dca1e465a54ac83489f3a5f88a30489ef1d082650b76461615757d7b0734ebe41cd8aa6f29ca6b05a241899b62dd55c7c89c891684f4de192b0ba24b139e3ba1725127d43fe1d97cf15f46afe1d5c5abeb20a0dc14257590a957d1ab793395520838b897c0bf56f947988741fbb8c36d883dfcdc87d649ea28566ca5c23deea46f81b0a5e506c89661d1d7bcccf1d4f585adc06444a1e4206457d2dd476caae4d0ecec8c66a07b46b89f71e58385db80e6dbd08b4352e091bf4591c9dd5ffef0cb39f86ad5b76e32655397e3cce43b4290f0bd774581ef4f12b2f50dcb108fa0381abbc910486156af19328c3b8fc2941f9382b2d31ba9546f991c1791df875db6076ad9894f95cf6bbea9de1cef015ef9d9ae9ff20d59804b357db0a935764fb5d874de32aa26c2def7165b71ab5ef1c7651e90d257b11e9e260fe1968a8479c27f40230b1e8be5ad662125de860f21a47af532e7edeaad039a4b9b55ea370cbd58cbf11cb2fb6a276cb790aa2b2c0b0af5f18e6715142255f101752a008d7c089316c68a0303905134b0c61ce3b13f19efbb3fd90603b77fae9ce51e034cafa145655cf5b8299409e54241269c3aa4137a276988a2888639d1b4dabff3caa3b7e50bc4343490f33da4c8af6ea8498d676f54cd70f5f4514ff7aef626f333796fbd26d0ecc408c2764800096b6af7548673eec7f4b5df12d285421772b3bbbf6f4a86e91010e780f0873a469b725649d9ec3f1b200077e243d3537e014208b6a79024c1641d6f515742981906971a19640cc6f52a1eafd534fd54a92d18d512feb00a3196e4a8a8228d3c587dae24027299cc919b06a92dee3b3ac87df3246f43612d2274e2eb77fa2ac4c2d809ca24afe4330241fea4949c7bc185e3a15832cf0382aabcb91f4e0d1465516e107a335fd749e45f15c79c192baf7660439c033f28c70e560a6b53a066266eac78d5e8e5ccb45929f9fb66f5c40694c3d8d915334a30daf903f2e1549b2538aafb53f56d9cf37e212537cf362c122448ca69203942af6e0fca8b89bf4984a79255e3b5598d4d73d56772067ca4d667e807554af6a16747e7588c3389b2e492b35805156c79c83378e788d8ac7c92f46a3378e194455095d3dee787f9d7809a53f6d0131ecc0e9a6af7fdd92ac438361347b69329d3ab6c41fedc1fa7186310f23c3dbe8a26eed20a113c8340276aa6eb1313d81a9b1a40b79c6ebbfae864427dae0585189e1a9acda0e74b56f14c07f290a829498e6cffcfc9449427678a046e56941d97bc8db80e57e9dfc6cb99a6417f81edb5c2ab1891aeab37f859d9f10baf5617d84fc2b71bf8e08950474c2dd123b113653e60ec9a224765dada2329d992a2f856e88355c4f92d649e64997e5dceff223bc1f179042557bb05afd7bed346cc8a683f2c884ee2f98c872661d286484781e78539d3e7fa5b097b918ff5bb14ec77740d5675c5f48a3fae18130fb859c5c173402f2d57481687003908c20a2f2f8d19a0d09c4359a7224caa1df663e07d4ee8daa53fc34337084cc3bc92ad199ecb1cce0ad32e71f3257f6d0438b9c5f673e030e4e9356d41ffc48f9a25e9efbc096635cb919bb79fd84e4e4cb6ccaf9cada20cdf4497f6d8a8bd2ba210a741c3dda07cb4f2389ec9724a8749f53002fc686dd1dad162b560e94124c7a0189d0a0460e1aeaa22889a3cbc506f5958e1b382e9f2983bd174cac0d27240d892d7f8b275f649485ba0288bec853ef6644ece98e0eaef7d7be840c5794ad032d3ff2646bc2eeacf5481c2aaf8d6b0e7de4d996a6c078eab29445323d7b9ddd3e4579a95099c7aaff5580c52fe27ce388c9651903a38f757a8c500e7b94c2dc0ed979587ca212c652d4677097443e50703a187451e79ece4e41202a23aa80c589f6469f6d3819f9e38fd45ac0ef057a64251b6ba9dd611598dac363623cababd650513683a97c66bf59f8feb343a390d085897d082c86ace824711f3e0babc6fe8a051aa485f6059feb3d50fb2d6b6503a7a4825b5cf63181266c49e44b3195daaccbac5b7bbc9795b82f6ddb818075d42fe0c387874cdb45f552d163c136653f311470e2218854cef5dccc58270bb4212b7cc5584cb8be50e29ded5890b04a5f902ecdf0cde0321c0de543ec23f4e17e271640c45ca1c54063cccc1f28981e25b00506ac78d78463e7be16d5ed28066134ab596774eba8e2fa8e0bf581c64a5b3d5733c7f7a0c89334d49032aedf1d8f03c5b309bd10a0621e024679a87ed30db1aaa40a5dd39d37461a6f5809190a67c92f36e1d1e4d4de086633c430d5726f95e04c2197b0ceee82c1d4c4c061e74d6141d629e105a0b42b281790cb2d85c113129a9b484587d2c6d005012f25c9409f355bd7d2a569f0bae0a106148ee7ad1f73abfc102f76b9e2708e2be647f41a2e7017fd6deff9665d2e9d5c9ac0fb960ad3fc9206aedf4bcb52be714de632360726eb5e404ed282e411073888c6f10be683b8e45360866ab1c9347caf8aa7c8640cd82aac87ffd81a218427d038d36aeeda9b570041ff6ee78e0312def27cbe81ad0f6a6707dc0a91cedf1b3f880c7df7a38aede9651a1fe19f97881f7d849de80ad681ab5fa8fd62fa4908cb1dccfca8da7021ce8567556aa1f68637ee649401758476a5cc968d381f1b4d29a49ee4e74d233bacca10d810c50b6681cca15322ff24c15339cd0746e3f44d6bc3d349cda5eeb5b72f95f8afb31254219244d53d0c44d520fb9557851b4fda898ea52127d675ab25832b3acb6b8fc874c66f5a988f98145a2ac6f559e35758ddeeba537e2e0b9b9314ce2d9a7b7086953147e7e3f60dd24f288cd78219623c72f3bbebee26ca28f4a2e1a7f80f992a5e023866d22d961ad76637dcb1ca623cc3e9fb6ee094ffcbd05b2ff61fbbf41f2b732f6f9037a95c16bd24aca5d7217416f551eb3ffffd23a9b203d6eab0f1a27a22861f7b27d6d02f6cf2b1ac6837124fd128979d375d554abc02aa5a807cc40f9115eb87a8c28aa43702a54e1212d5dee7ad2a75a3ea083720d8d712e4a5a540bdb5c50b2b2540bfc6896d1b8cde8974aabcb344dee0129b6d8e138329516e2d2e19e0185b1b3d4c6d7acb6868d6a6fec2a953d54470c96d097c348f6e37d07c443d7e86fe61db70476547277cf8e3d04d7f03c4859679a07018bc0c253f73d29475280aa046eeee7225308668428f7a5b21a35fee8479ab5fc69209c15c8d7665701afcc9d843e669a619e66d5d2d5ae2a2497006eb7edc7423cd0bc8ebce71d6ebd2e8aac015bcb26eb9aa7e8e23d8b24857802aa786c431f34e137113c533ff3f9c28e12b1fc9849f2370074d413e5e1f3c5eaa0af98491d14108859e1dd2ef2b2ba2450b78dd3788505c0dc25418569d432cb61e8d333446fa9d166e4f750667748fc22dfabbfd48fca11520d462aa56d4fa9f3ce8eb36cf6d637fd7e002e91149fa7f8a2e426061b0adf1c84da08c8786cc274b3f1e86543887df9291e879fadae07eef8e7fbe55758438e90e959722497b27aae6caa3b6c8a8f5e8d43e044ed638bc655411f1a25b54113923ad3347c9b70c33d74cce1078d31e6d4239fef170647d0d9d4485c89e4078703eab3f2d0ab86c83d26091968f24811fb0e0dbfb3146994ecb1bc60baaf5e3aab0fd71923a492d5a566befd8006934ee07a958c0177f3195d80e6074f84a71bf6bf3a1d880d07465832a158b23152a33ffab07b69c44d797fa88f12d26c5681c56d89631d22371d74c5e46f5081dd3cdb85b92de8a6f54a5260d420ae07872ad7a2568d388c31f49d0244e54dc5e42a433d379fb5d87afd4b2ade6f0b0fe203d7b205a05ecf85312d8869659d497ff93425372f0ed937e4cbbfbb0259203bb2cfc48a25a3b6dee14c4a1b04289c3811eb5cf9c67298805a6b2bf8e3e461354c58213773748be826d6c08ed71d3f74076ab10a14236e9ee13d26e715eb781a0f2492d8f675b33b7636aa3b93e566d11d7bb135a8f60eed4ef86fc73f54ae7e430ccd69e8da1027f475fa1e373c011af7cd3cbd92b2e54e514000fa7e02ab99fca12a3606c65751391ca3a270466c498cc7198f2a330ae1fa20bc73f2c92eee496ceb6da9179f930d113d03bab433dceed1a252a55fea164e553c349bf3e469637ca9f1c5e8e69f92197e17518d3979af72be1a26aaa574a3814e1cbf784bee021e0bd4769770c112e55d153d8778b020941ca2bee508edd3cdbf34b7cee9b2888044453d07fff2b484a72c103a6684851e9f61ce69e067db8661fd8cb61216d91836a7d85eee385d2f6947f125955a9489775665be5545a5f5e5674825216c2c3ca88c94284c57ef068662606c6d0bb4a4c93676b27829e5ebf8e7068e1b0e69bd1a8149941c130e61d0470ddd8ea13ecc128d6924551d83b7a71d8fe8d0a845a13834da72a12a2dac2d1869df14d0e2c6a4b41829c2130b21f100d2827c48b7178a649f11a15e08e0bf3edac8bd38af57b3ba9233704bc02caa6cda33565c265337179b18d92fb08f9dd7f0d95c36930a848789d210d1c0ea121edffcb0a7af06ad9dfdc00ee16214c7ba28c49cff7e2fdece638909d44c91d79f5640bb35b270db24bad52c88fd2ddda59abd08cc4f893b98cd44af5a63aa8a29fbffdf8c7ca9cfbbcea8f3a536166898cc7ae7a8a84f27b27e4c26fc28b2917dc4ecc6843565d5b402ec5d8b7f4d0b09adef24186a01c308deca708b5a72dab9c18ea7e682f95b9d2a317bca5d1a2748d50f9331d1a7acfd33b109bf1efb14b2156aa8c2220b9abb8bdc4d97103b51f31b555551260e999458147419ddcf644c3447bff9e6957ba168a87e281d9b0f50261cce8b476d2598a61c6a54b6d7a6f1a38766ba72eb11e95353ad5b60f074fa0512ce0d89b84dbfcea53d1683d1dd8c5450d81c33e630365e9fe05b3ded6cb0eb748401689d7864163316c968e6ddc28ebb1f61dd8ee9a690110f1002d97150c61010d1785c322e2a632bb6b72cba1126e1fb372c9655cc34db111c74f94d7b891c32256efd8dc4fa789f6f978e29e959c958a39bee62ee578bb71f5141e2be4cb70521f24e2bd8070182460ad219e15d25ee2c3d05459d2776b01806b7116d4de0f096be6212b222c10340cb35b53388bb7b60068d5ce16f866f9cfa784d64a9c1710ea123d19452dcb4ea7c62975350e4061e0b4d0a7fc1d25904b1d46d215740cbdf22776c0db8463396be5d4d561b6b37c3a285d74ce5f334668f77e368f704adbc4b5f2d8c4cd34399af3c86bcd5c0f133029e4ee5f2e1c5f6bb842f0be07814656964d2cc0b1d05d4c5cb166dd22b7a9dbb79d05f556c4e6def8f6528deae8490a6cffae17c80725f6fc7d51e6eeb5a4cea53bce63867d64f844a3c8ad6fb70978455f497a222492c5ed5d4c5074b4d827365d7076480649c7cff8e8cf41858d6754d2f5ee487d770b96d7428e74a83eee05d3ce13bda4132c03c3b57d6ee84b4ccae42042a9375f91958a601cf014cfafbf4c47bd062c54e15d9a9b354821c2f4395ffd2f364875fd765860995502c05584e6387da24d486d1ea134a508dfc49afb2204207d929d1af921e3e5d80eb838d69d11301ed328c2b585050c44d7424651a08fed5451fbb5e7dd2b425a8b1afbf7ae8d199b45b9525b10ce70960bdfe0aae2e239b4eb0e37c834994c40c85116f498c3934f185829e088bd09c14b7e7f7455d00f4c550daff26c98982a6b26a9270a3fa2a367758aa5117b1d6cf92652c5ca557fd0f9670d87ebaa534fce47c191b1ccb5e03e85c945cc09842b43d8c511ed0895a8ee3450d6fd2bcd012c5177676962f0fd33b3e637285e313a70af58316d1b1b5d922fb131c7f48967477dfce6918882284983493eef9179e05c545802e3b25418110ce84231d190ef5313b67308864e6ca93312db82e2ffee389d3eeac278bc9f19c91b5419235b0880e19ca27d0962b203f96f5e2cc0f4c22401ec326d3cf352fef7ef0bd78a0a4c112902974d41e0908fa791dfbd152eeb245e71ea4292d80774244bbabc6796d4b2f3bb9836017babba300a5a61bc5a3e032c4bae4a8ebf8260107601d63f5018a88d952cdd4b17e0e40cd05d2a7cb00612f3b09d7afd00fe5811e7fa1fd6a2803ec78fb3cfcad5504ee41e6f4209ac9e96fa53bfee10f64fab7010819ef3e758fbfee8660201ecb8add63aa6fcbc746b1f0039b581c2b1d77e91357dfa0324e6beb979ca7598e85727f098d562081dcfed6888d1536ea7d2058a4371f29ebc83acd33a49de88290a70a016dd4ad1fea6bfd9d982e7b8ff9748d6647af240b0ba41c69b79bc0edbc8c155cbfcb489dcf0428f1dcd7023a3fa4a08f9c40bf5744ec1066050ffa0dd59be46f97f04f244820b9b9f96f5b6fd465aad06de4c6bba6cbfaa5d057e4e4b07b3d17d13d78eda0d4e0bed736e04e0ecc3287b41bc67d422d598dc7fae900696c52ca60d221569fde9e38ba8e944cd04898523c4495b757a21a1f46862d9f8b66f40f70d1c4454759e4e69d574e377383086d3ef40c1426a6b6b03e9e1437c359a3911cf9d12371d43b7c9ff375ea89e0aa62c7ad6342f9474271862a4118d0f7cc9ae0ef36c8aa178bb89d29c81d852578802d1b89f9cd07df114c9bb5d7ee1024b88879a3445519aa12d46fb40c4f7729cdf085644337dd6d5e21b8d4585c404e7253d0f3a364c9e14f4632e634c006a2f8f4a2520c11dc2d646a21e2eb34768a648318e9ee8ef3734cb03046df1672080aaf26071cf4afed506c780b50083cac6242f4239720864d51743d9ceb24c960510afb910a62627d8b852e38618d6fc8af783f97fab2fa813a05fa8039be62d6e1519793389506cc47cdfd5e6de44e5fa914935c0d271a9db4b95b979896495a9443f228db37a40715a2dd20868d5cfdc0edc72762a5c6dceb5a52d1e76e455228a83dc18b265a7fd5e101d7ec9d14b4928bba96784976f3ac699bd8006f01d39f6d5d69f1e9fa9b74a482d3a73cfa87092caa514aa295fdfc13a9441a31b57869ff14d5cccbc5f33df0b57c8246555408447e8a10b955ec2036639716f7e9211d3a560ea64a5590b8920db53c6802e010eeacb56ad41b0e85e6060f5e6d16e354d101299f7f8cffaa726dccb2fb74434d63e9e40a2c056679815f08489244f18bf27d1984dbe8569c66ea30e1e798668160284c33f4a5dde3833cd9992d56da039cb0d3cd67d1b115ac736fdab122be5ce536ea093bdcbbf3d036fa6c54996f04f3538fe936e579a8bb77c913d2e02e3ec2b3c24c4fafea4e2e088fe2e3ca39b3303a7abaef1cc4780b9cb5db7f7d952b39307eacfdc37b7a69f50e4e2bd8573c788b35e81e6e7a6d2a678645e2715eb237d68df5e1224dd62bf8055a2c0ab834b2f55a0242543c7b047697bbc018486d6ea61c25f360231af2752f826efbe8799b8259d20003a4178adac74c308c5928d55e426e09c81aefb77f5c5db3f6a548aba46d36926228f6fdfa6f49f40d3b0a66a9313ff36ebc429088c251c44d493c8131ffd6af0d5de48e7f73bc86f90f0246274651740892be2f77bdcfc28903b281a9f61e075c80a81414bad753e378afce0f63125104b80fb80528f87945dba6a2379037ae01057555d96d5f17d6709c91175a331f5809f82dfdad7fbd0c9d0dfa90a2b0de15e3be44ee613671cf5068f722bcbb466c98fa848d8ba99733de68f5f9a70f795c3cd27d29c66074be881ef287be88b4bd3e4a123f222c8bac163f47b5fd15cbcf17052f47521fe9c4422ddd80de9c4f6f94e632ad2446dc7b7131d17d9f7b0cc886d5701a716fdb11fe8c779cb3b473d53f92cecc0b24917c1576cdb590d113e3ebfa525f94a14e2d3deb36fa9955e29f2ba3275489dbb0f383bd61c4246dc0eaa8074cbfa8a1faf01d3f078ccbda414148e5f1830c52b5918a351d5d5b0cd3e40b3c2d2a1db63bed33c59075f4a7657eb3252688aa099fae4d7c971197db802e2bedd700f460a958bd122b8ec256ba447cab8275ebfe66030ecbbcc50df1088d03f2c307d0d179c1d187ac2666252d62e568a056f1c90b3389340418df94da7f2d1ff6b8f5f97da82cd94a1309953228cf78df3c5fb5605f955d474b503c698501bb9d185c5fa6d9305d5c86ba592419bd00a4d5f4fd3a21a76cd5357445e326e529dff0b6161950f23c0b05bbe333a4a36424e98dd14a60837d5c9ac80c994d4c07e860f283d390c8f83b48447125c82c432b70d1785b99d0f0c3725afa3049a9b52a867a4480466b8d35ad38c36d93fe16f3b9166e6b9cd1c4d199a0d3c11a386f681bbeed1568b0ae6c2ca7011f0f9bb151836324d3dbb2d3542eb27ad909c2d55ce70b9ca41c48395575583526978a6b9cc35ac2e0727f446a12cc36f7bdf4a06202b53d8765ba5d3e053c8731101028418d86e57d0c8c345c466c0b20310258facace02586ac11056e89aa7eb77ef64b7e4362e75ea742e174a09164f7d945efe4f27aa76a02360c3d7d5ff0c4831aa9aa14ec0274319018d9deeb683f40e245d0a3bc9ca7f7c0cadc0ce360a66ef8d8419534e55d3211da2a60dfb7de2f264c8d9bd218e6431e9b6940428cb1b5e8295d229e272752b28c8d7ec2088c849f22959a83d5073e9f43bb796eda4a9f8cd4c902e55cdebaee90408231088c00bae613949e42015df633c688f663f23e2813241ce354267fc2ba08153015ae3fd9c11232f98a670def90abb09a585e8787d8f6e681c9b94b976d50e6a4d20789851aad2c50abe57a452ca717f255c5555401ce908bbda0c2d816ba6ed7d246fe6cba2b3d548455001347118729a0e347b74ca768cb225feced21a04f17a59fb44cad02580445dd65162d8d19b1431927a26dc90287ac984fcbe9a4104eba9bd228b3bbea94fd8e55bb7f5946028a4daef66113598f16b5aed459edac08793c74036cf3e0e9107c3437fe9c692530c30d2d3beb26b136fb54e4212ed85174fc9dde30cf5a98f6621b9f5166e987b5925254a2d02cb9eeccfd92660a9564a09d8d12f2714edd90ed2671d368eada2133776b61dbb404910595ece5c7e5ea9f5762b4b0791f1e556004832f176d7001000468ee3cb0, level=(string)5.1, profile=(string)high
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1612467640033ace80b40a1100000000168ee3cb000000001658884027fd3095140c66dff84425c9509aad37e9d5c3cf262e52918209c44324375183b209cbeb981a17b9a98bd7d2baa5c35a97d101bbf0d738ec1664a14e7158a37b94392c6a617b4ab4f87dfe1e4076993a8987b3e80b91bbcdb798bf8aa35385422156438322e1bfc2a1bd529ae6abbbcf524a213fb334f9f0f96be9b499c51add4cf55609f9e7cb80107e08d0dccb510af90960f2364bf2e43d20f4b1e9fe8baf0b7683518761bb7d5a646ffbd40f24f02cf3e017d5c746f10fc96a352c339e46491886c987f3eb2fea0b744f0ba865dca6eebfb551f9dc5f0e5ee5b8522e1dc7ea6eb11f5ba77b357db12059600a16fab678e5a739f2a5118eba378e443cedb310656f8bd24b6af76ce3428882e987e6f4e056e006b2f3b72a6dd21fcce1ced6c1c2d01459beded7f54869803dd035c266eb757ff744715dbe4fb86dfa723efa6c17efbdbf7bdea51add2b1a12017246804dbed6685a9bc55cdbec47acac7a9cd39e5f9cf6f65de530f43ca947c800660c2c58dc3f54ed09ebc4ea625e6402e92485abc82b08be6b2ae82564c8568c9aa7a7487411e805306147b5d4f2c1874ef3e8641b1ba3db5378ae22a460a7ef6efd68bf7f17c2c5246d7b6b5a2b5d6f4fa7b30b2183fe8f085fdee35dc86b0f4441011324322727447d95ee06f61d0c3dafef9366441f8584dbf0aa4f0ebbc9dbb718f0d80f5f103426ee9fbd81de2d18301faac311df1b7ce9873c68474f801b312f218ab8be2e30abc4b35ddb5f94bc7f4ced09c023354d90b86f1947bd8cf2bb776e507752bdada84e49f0ffa352c8d7b264cc1ed063eb995104efc639c538ca143358893e6e3e8f6993d66300ba8c648b6962bdd50ed57d47ef2f374cccb6c209fddfaf37286f0b3ee7abee5b7be26b1fe40d26bdf7fd1a2e03eb4daa3e18772126f843a9f53dafdd0c20eb4d6a8a966efb251a5f406c46d409192b0cf6d21cbaedd34446dcd0ae8c2866efa6abb81b4df7bacdbd8b5998450d0758a45cb2ca7deb0cb8a223de6b4166a58a2539e18208ea5a69b54a046c6be43de62bcb1f61cb43d41c1a7b31cccf29e7228279b5b6b1c32ed2b887a4532b6c01bf6c3fcaa0620c5f25a3e8802d7788a1084c2704a451b3d65954b3b104a5ac22f138388dec5e32bc97c8930e1a34e226bf7905e0eb5bf17fed4eeb35eb2af73839e2e2b9c9c24e21a7f3e700233aa51a3cf96c905833ed5ffe83605d36a836d4aa546bcfebf6501f7ab6bbce274ea370db83937792322bf146d01465d0dda95228c125187eba82c036411ab59229dc6a5b410417bddceb4a357b8ecc6c501f96079afc6b1bde12d1f6fc5748cf37c6afabb3505ab0ed3847376478038a82b49be4540ab07e758973ecd1d4aa7e7e23398d98df18f61eca88bcd9e7ee6c562f762d1f52664b6bf0d6d5221371359bcff475229b06489f1c08e9b57af211640911099dbc12262069c95138516355c0c2eaae44e7bd0f732c1de0521b084c1ea8f16e5d0624ebab63820cbbeaae1116957f58787a6813743eb48dbb9c80bc3a02ef396c9ab316cccc31bb09d5d0a4c9d94bc179d19cb0c8a51066755e6ba6bc52d0c66bca7f23984ac41b24c742e4bb7076bb10378249387c69f4fa3936bd2dcb7276ecd94919a0d9716d353f25c6fadf4fcc4f6d257427abf637306f622a1f8d69511acfd72c37c716b0c7a390f28571b474dd1133b547ad30dc66b3dc9ac949732b8fe47e7bcba1b79c4b51fbc700c2bdef9e146e2e9ac9e6bdbb17dfeff18b7a7c1b565fcda9a7c267782af1f8c75cc43f5a8a1b09762698069fbc49dc6ec14032814556ffcadf3ad28de3708d67c270ae956aaea5429ba5d3d4462b76e4628d010d4505566e6805e19635cb620510ce0cfb370f11ac563a237ad6d0904757b92c21d9c23dbdb74052743239ab70a7fd992bc92bc082f3579ef5fd545db75d78f1d259d1fc6758326e8a6092982885daf9fac42b9e35214e557bfcee298244e04257e4450234dac9163e1bf9577cc68b09d99a9245967a3395602779c3c9b4459123a41e68f3d08fb6ae7de736c84a00b73302518d2fd177138e0aae766fd6f28a1272afd3ca9d79028d6c48de628c883a51b021488e59711f01b0b33309cfc2716ec1e491afb702f9853c09d0620721bee8c30ef6aa45ccf3a1d0c306d583ee527d75ace7909fa796e34358f45e28a8642f913f76a5c7b63fc98477aeb3668db6d4703dbfb43008419b7c2871120ade5ad23995deed0d49f170ffa9a74bae18002bef858e0a9fb6ae4fd22d3ef25b30e2811cbb1d18cc71e4b17b62f04be84fb3345550e5852fdd901c52076545bf3d30b1ec29601d2810b6940dc08ae4500a78644d99d770f3e9defacfbaf010f0a49e8ba767538c1fbc8f7a7e1000bf585e0646c4011130321b4b335b74bfbed34d8b46a021e1ab1d0762754b2830e5ad330edbefb2c0a97d5425945350f31344e46a32a0e0171bc456faef1fcdb9a74f9a169370c6c16af6061f19b40d70ead3ec6164e99c66425803f84f5aba968a53ee3ec01bffc51bc9f26571aff221eba3ed376da435f7acccd1f9aee01dd36cd73cdf2c74d8297388ba45b0c4168666f32e182cb44139b6d313e843d97c26b21e5db3512fe17ab2cd5b3cbd1dbaeb0c1674ef25a4a1ee99e4941bcb1677ebb17d754bec1c784a8de50ad48033e2856112188a1237739d1d9b729f1fd9cff5eac2d0b61a2279eddb3772635ab31965bfe80982fb2df5507f5620d05f6bce764c3093fd0edfd7be04d972016a9518ee2c7fac2e8024ab52ed65efce4f3eb0144c3a63d6327cb65d14d4a739747cf72ebeeaf7c371aba794137e33bcdc99a9f8c203075237cf313182fe2267f4a3c16d17b3bd341d5adb048dcf506327a52e2436c95bfe741e14782ff91fb4b7b50a309342606383e4a647d66e55cb57ff61049cf91dc263a3ebcb9408aeeddd91fcd7a4532f88d0bab396887e2a818bf411cf5f6801f31193bbe0b012f45f340fade9625e05ec39d69208677f46de37a3177cf68dac7a818e6e41ad8445330a989f77aa4892a6145d59acf71d9452bd37c49a7258cfa70d3eb6c0193d940adf0809864a610ac148d9f6b2d37e0f42c54f5cda4f5ee11e197ada3f75c8595f34697d9d6f925d39eddf0ec0eabe1ac46094c440b9a9d075123440ec6cee450ea39279b48c95fe50de204bc5cdd170f645f6d69de6fef7df0feb09b03a8a9e0787a6b5a4a6883af0351ee7e882e9b56ca90188284803d50114bfadbece1e8537e87fa17d574df611cb5c1a1e0923bbf0bc56dc8c0e51b9d8aa18e27cc7e6daaf7f2238ef8e5dcce6e7066a4f0ce027aa237f9cf2f48ecc9f966975541c3e51bcdc253030b23e1e004150b7cad631320ed6cc2526c864e6da2c101d6762d9c90c8118bf6580c016c7fe536eff63903068b6a724fcf8d6839858011091d1644c6407ab07f3d7983d0f2386146e1a2f3a24ec02d6e533c7ddec072e70fe650fda1db677868dbafb2c627ad26d2d7582d4ea82e7529b6004f14c2382c35a66b29ac6fc8ae8b7f4f1f1892fb140934a6b48268b4e4472e725ac2d394a89aea4872a45ccf66b1d572e8796bf9de51f027c7bc23d5f7d9a845a6c82282e4cae547e87f0ee594be1507f1f86efa46f9c32eb2ca16b0c47ce5e1101548712e2530b46cd8cd2402d34baac37142e2c80548be14e9f7aa1a67a67d6a86cfc013c601ee2453865f6addee2c2c6e4835ddc3768d7f78204ad939301aca0e77172f43e829251a84edfa83f0f9fa775cb05f6f9de8ac468b5188a3bab572d7244fc098abe659239417ca27bccb47088fc804e430773ff752474183a8306bdaedf8e92828d72834ea54ae3d5725e9ef02c01e80d1253f1b1adb019e8f3fef6ef4aa545f2872eb8afd87c3872143b8e0160fab4a97a2461afc86ceaf8d3516666a7ce69ae0ebcf31e3e4af6e8bc599c7606a154d874d142719590f2b2df02822409d61f082f07744803f9d086e6c9f8fe8362bf546741beda2d22e1094a1e8c713b4f98356b4079735f9221dd52c55913a3d8f1e7b0a9e6ce09f8f4b49c705562fd16b1eaca4718d487a4edd7e73c56dea724ebf23cc4f6ee0d6c53b2dcd87f430ede1afc6c3394369848b81dbdc1de6386e05135eef23c1ee158e77aebf3acd4c3df62c8e854c097fee76a038971cd4dfbe015001ac81c6205e20cbf7db3df7713d817b24e8955c12ae3c68e2ddb7c308c601b58a0549ad11b781579d326d0de08f9057c36e7843cd014a00d17250b726f59736ee0783708c42ca7313466829cc6da6880c40c1fac1e11a0ba01510f3037755b4fa0345a8d39d67e0fb21d894cd6916515993f5f15671deaf3e6504a621861a2b078cb3672e74cb82a97cf57bbfba81d8836a4baa8a5b0e360470ad3abd4c4907edafd47385d08227ccc65689339403b25027d365db0b548d6ec1c4e8cb45e351780b32fae40f89d04431a8132cded2697adfe64882764b32fd023a3edbd2a91262f6eb2a48abc5ce824f7416121a7c473f76c27a8956978eaa7cbe63c979844c519249a94a78d4d3b980931db42d9347929e491acf65b4295123899a1b2eebb23ec5d68b600f8c4216a6fbcd7fbd8a51fc749e345cd8f11772d50199efe8d9d9fd68919317c0b6465bee685709e285cfa889a0e42334861c588b20f0205343dfbf0871f7c1bdc36fe482d29bfb81b2422d8073c75ceffce1d2616acdf8806b1a4a687c76b86b9452fceffb78fcc5fd9318ad5fb5cbf0612017d00ef0258868ed2064e2b59bd474c9d21a5d96cb2a5f191e117898aa38f22568a378674840b6d0f6670dc1668ba7e0f2581502a1915a535ec035fb44b3bfa41abcb491d7f66421d4db92a3efa61aef243dcf6de47488e7decc3401cbc2102ac99bfe1684c576167f4ace4d7abe43fac2e722fcc7ca3ff428d391526b148079f68e2b227901bd6ccecbdb8eb4d0c588734bb9dd9a41b0e47b81849e9ca5172d37b5c0100c514f97fef3b4f4e68431105ccce54edcba4fa1cbbc331156369944597774509c706b97bbd025300ffae48f6b8abea662bf36394b6c6bdafe777fa4b56a481c765c6a286c4a48472357c79e94d8fa04b6a1438f060a7407528412da47176e7db38f1f679f8bae6e01fba023ef5986d8eead8e1b16d6faa17b6a50258a30bbcf5782ded1f2cf861d8ca5d4b42905464eded1059753b499e2fde2d269b33b56aa903ab01f820e4793789430e82db23da158b84817c5a7d1b1ef12c813beafd106c68b44342542e5296ed5a6e5b7ac3f66c17b26356b3eb28867e00eaf505986fd7d1830fa3936a0cbfa0c44c3e0b392228556044acaa4a2104e07317c432889e93dee7ecac690e5f49938d0689a6b05f867f8153a2d75eaef2c368bdffdc1df2a6b718d83b20fdb1572315cb5fce357a9d10e2ae7df6959b30a5919500e9bad42de88498f140b47a5972ceb048c6906b705396fc6672e2a1777a082ce6c49bec2c1f5fc27028d4fce4e7a05963a1969c8c82b70b1ca6ba8d30401e36b36a2a5813ed88107bc2bbd2f89dd450fd9d95b4b6e58b52c542b4a1b55c401e6eea8fd9e6aa5f4d93451e7f600f0e4cd3eb5332aeeceedc3e75209f90e94f5ea1af820996d2c05bf806b5249a91596c5a1db2525f92eb8a9c41e71164ff424716b10a9b50d5cd9a74eaa69378e35b85c71901378b18fcf0e0c5fbd3a6faa778dbfb4318d65262b8ac8f523d2bf7842783b480ebd46d7b137baed7c9f3a30383c9454e7aa39166d13bdfd7399c89cc67ceba066de535c3f605a91583738ed96f01e8b7cf38a8a0fec03158852c11d8e03d6e00ef7b52a694a9ffbee3d87cef229adb2d0f6f3a7bad79f2e442dedb9bbebed9d70f631482de829bfc66fa01aec0d32282e1b514537d823a71d31adf5fa076a5c0a7ec27ceb9b3f55fd2cef18f51fc95ea90be7abd436a8952fe5436009f40f6c842d613cb95c6bce122bd5117dd272e1b8eeed1d3a9e4e30d6f143b2f59769d42c6ecbf26b55d07024c816ac1035c2def3ce6bdfbe5325d1927587afc6ee8d353cc4b6575926be6c32688a6829095318f270b47182525ba7046b189dadb71d6669b76d54a170b385fcb6412000e7574062ca93a321b3f7fff41d0d54fef625ead00930ebf492c732c5a406b58512af888b3cf2c4e7c2ac6ea89739736b91c385cd294eaf3d0ce3581463c89d47d02257ac7918d20be12b54b5c53fd66751af867d8824704131b15647f56176f023dd4f5cfc883ace202c54bca988390e36699ff6b77d5797403fe3cae44eb371d754d45f06fe603cf21f1f081c8deff7e4e71b61be23362977eb4c7d11ef3f0092d54afed3834268e6d5c05bee70b8387fb30411446a4c09246bc824468f987bef8673e1298a89771cecee48ece9a10b39d63d196f8b5382e516f6c73e34c3ce717702e445dd641711ccd1f2af24c1ca9e78543cd4b04a2aa9f5a52a12f0dd2c1bf696029dd8b18fea0fc6afc6452ae8a70db5da1daae2dffcb98d290213cb249a0d5acfe1c913c52a540d5a101647686f637b3635ef03b457f72bcd71f50b11bb3d4515a8cb05186df67b22a1458dedb6359f5fe93a551f493348f971d25132237c79d0445f169a037a3f9c3245c15e8eea2721c059743eb0104fc05bc2b949178587f821fc7c98108cc70a50ed5541387b05fc1e7ac028bcb81e43529fc17781e84a7a4fb7618ab67ad1306a9f1514cfed114ee05aad202592d03160300f11c21356e7e37b930d42355f1f675dd9477e7fbd64e82c55e994f6af49b690c40e43923fcaa71ccf4dc0c9a74a33741d3f2444aa9e402e07bf37347a00e45fe2f84875db1e266b9662eccd05a9b41cd6e7943c80471a042202b00149606989a7bb0e297fabf9fd080671922ce4f12b8e7137280b6d651dc2a0e90268f720fd4ec75656509e4bd00af74147219db0dfe4ba0ca231224eefdb754e00f9cda87295cf033314ebc0383d4e0ee40415db245323f8d93a45c6f8c31c38461524fe89c8e7962efc8fdf0ce948dcc8592205de9a395df27df6290a84765213c1c9b7a7758d671c25996fa6351835b77f61564e54ff6d27644bb09081c810a87a9f829e20c4994c9319799be0d1466d1c2b889ceb7cb4014b6cee7a6f7e7826976c376e29e260db164779de3912aa6826346a685c7882984929fb12edcbf80f8ea819035c4d002bc023c1b01155448a584d86c93eca95a77425b035aaea8efb46249168b3c2c9de4acc8b835337f3fb5146ba6b9b324e9508dd949ff26e9d1c61620c14c46e58017cc7e0d8ee17631d72cfd065dcc23267cd86cfeb674dc0b979503c22db5c8fa558323b5ac07cf91a40068c4a898a681a85cf1b97325bdc92c249d5d1de3cdcf2b654f5a232f30b1d88bce954ef9d8fa1da5de0d100a94fa3f1351eb42f1d2fa8475e220ab051af76907eebdbe735173bcccec087553b0d883bc62c7efe62fd773956902fcfdfb2f59744d760d7359b67241c911aadcee5d8c0409349c6af0bd25e58e2c9791426733019f109101499dd1e1aa02802312aaf80725ec64616504d014dbf71654cf4875050d7040f62128cdd991bf8488456bb1011af3a1b71252d2473930250fe2ac66fcbf1bb5803d5074905b9b4c199e51b05ed606151a9f53e457fddfbdb4a066f4aad7cc879c5f63a30fd5d2d3263644c7e8258755555876be87236508034100e37de973756401fc3da5f7fd7b704bf7bfa540e70a53dca6f5a5fddb2653929ffee8e2850d94957895aa832f8bfd63e9a9e2e270c2fc393387c42f4710e110563fd4d9ae0da005fe2a413328d163250eee11083add0149c0449cd0e29dbd4302fa04aeca44e6688c09781fd69616b220093576ccfd1ef0f0879ea5062fe13de3320e428c3b624ee72c1db95f7dc097b3aa58941bcb3a68239a67294d73a1914158bea59a789e75ec4a6aa56a4adeefcaab6fa10933616923caa0d91333dbbe045dcafc6b848894c0c22930704d81edcc05c11d86afb6b5a445cd2bf7852041857a0c580ebf6ce42569a50ee4698928c05cbadd5682b6834c0810b475657f2437574e9e638741bf084f34b2af70b4015d5167e5deedecbf799650b9cf4dc1fecf629836cafa521b35c393761bebbba7c8f6dcf0a169b195780a2762e015082e84f4ca4410912e4d196d9f637dec16916f93d27fb654115811b5bb1a2eec9fa38559967657b30ac792ca2d487a056752a7b40abb35b96d64aa53763e6aa801be4c04ee1bb1dc3069d94c9656da7f0a54f6752dd1cfaf31f1da4344e015f602c21edb95d8914ad343a2ebcedc42e3cc44ccdc2a9152552532e1cf3a3164d1b7442e786fdaee2295da572467aec61e3164630772be5268965300477181e1d00f3c869780e6f395614d70d0225120622b6c8320e33278601c09ce3578a70d84e2a0f2df9c6e0c90e34cfd452fc0f9f8a1d3129d96dfbe27b8c3a0d1ebaeef4498751ad080168cc4cb7fde5b1074abb4e38fe89279d63c90c7423af62dfd14868c9892b573a3cc3563a75a0d939cf6d014b12fce763f3c57360bf089e94ef4c1cce014917c810ad2fe401e1ab5845eb92a0ac8706048124e972c3f4e0c9f4f9af17cbcf4dcd831951c86358f58896d4a9779f9cbcdc1df940d363a74f14c730bfe42efc6ab09028f4d6fd10c630566787d317f244f168da954b3be808a631f4c3560438061624bcc31b50dfa12130dbcde48ec57a4e2766752bf88d744a45344a8b9ad0e1c9cdb5edd7c6dcd2b6a7b5023b89689650fe4f28897ea99be536d9d9e001f85f976f0dbdb4882b6741284b9cf17813f13434798e3b93f82893feecf03ebfac32cf6ce101e702d321dac75f84216301ed13335875472d1d9bcb8701c419b1a7806ea42822cbc2b50789f05131ad0555c988a0b85c0629128834b7f479f496fd71a11299e404e5c51b833426e86bf9fc83194755da0b07be913bd2ffb8dea4fa9c6f565d064438f43635b5185636971d6bc7c064366278325b6a839926fdf0925ad2d4b3ab27ea24f36f94254a8979ac1f97ec5048ab811b61b72d4b368f88cead9aa95ff998f459933feb03790978553de6c266c51d046c12c0bdad3428ece630deac32ca3652a6df26aeacadb3b65d8b3b3c3eb559eafad5863bc5d73fe61e3fdb742ea0b5bef2f7f3e98dc23f12ad9255b6b9d279b7613359f1d3e82cc6baaaba8d4845b91f7f98f75a07d2d20474729124799b4cc055f75b1ca4584d253cfe9ee99bff17082576d150ad5e818657ea16e2c0283763dcb9acef4cca3480f7f1aa8a29ed6a29ec7f1eb7ad7061aae0ef5724bede6655f321cf02ca220dcacaf2fbc5af0b1426b41f896f4a5a9b0de78aca6f6434b5b441591dd7d3fd3c798fe599eeeba6320311e2f4df7a18f2e17943dc4c34492eda3e1fe5b30e9bba6c035b72d6e483d185d1b3af29732194ba8fe68a68ae0be8735546fe94e66de79312b0f700ed5d19910b4ffd51b74be0f1bdbfc44aacf2341791d15edef963d668349a1cfb5513a81efbf4451098c94d23037c84a06b7f253e15899c99c100b186a20694fe00d185cd16159db78d073b9d060fd1108523dfa4b553603b800a05001ffad4cd47daeaac224dd765f0de845cd7fea5d073f787a91b899721b82685efee9bab1234c9a4884af32f0195908de668f7e080e554dee5d1627860db2148a23a4d8766c0949a3a479c482b4ffcc33f325f3f3a4f1f23db8f0585872e059badbc5d7610c42d76e00d5a83232d3882dd0d7d1fa39861267a62bca955493803b5fedb422c04d83ea1f1f731d8b37db896c2fb568e97667b841cb94151381ee5096b75f929f661115f369134a3eba0c771733820f7ff92aab912acd89a134f3914b04687b3ae75a82cb8ffa628a5b10858a4bb67915ba8b95da2b140a86fa59bf92cfb2f58ebe8874810aa6aaabe548422a57d2e62a7650c062939e5011be734bdb822b7e353fe239852916aa42a983c92ac8e9ac5b7a328ccd8d59a006701976f9377954497a06c40670a5598055e3f18ca051fde440f6ba62832da2e925b1f2f870c7bf5cae7ea9f3db5bff18ed30609a7653edc57c2dcb8848e84546d3f80d9931ea926936e75233010098daece0026ac60f3dc4d9929c46c5534f60837f533680cb0b55ba52c72d1337e706a1505b2508b22310035928212b234d4f95acbcd76b2aebeeb9232eb9aaf45c0a35bb85afc3ce2c4e503f89ccd23216c922f691111a746ad2190899ee90d4a5c3b970171e89f9bb764183f35ffe9ab5a3aeb84d4dcc093f613b94b01ac355b1983f0def905e7f97beb009d01d25632909a360a7116ebe1ea61b8d2c093b72425a644c86da269ab7ebdad6671510b2edcace4d7c517880c0aac039255f7e1be63b2946d0f5786bff2e4a56698cd7ccd2b1ecf2b955e5d792c199668e694d40f00942712f144cfa33a0e29125dabb47ed7173fe368b7b2ffb73e1f795a13e1b127476ba1dcaf688e094fae0936d2058dc251c9e71ca75b0474c7e2294535c9d10267cbd6be995214be14b048ab2847b90c51b68c35acd2f49cdb2c0c2b1b79d1a4acd8c4335bdcb1f855e86f659a2d55b509c4002a86af40811a031c86f6b2e55338a5dedb93cf43595c5dda4fc47698c5a7246274a85d717873314df8c26768c3e58cde659b9bd8cf22d4dfbc66cfe165e1d40c36378692188910a747cbd981181f6a34025b872bd8a8db638ca915162f7f22e4961830f53d85d9dca8cf6c47bf0963015ab012a672ba1c7bf700dd0457922d68f97d6db5a58788f20241ec65ff0342521e45f861d6e05bd5c7395231645ce64004dc630b2b5e5775e7176d5056c3aca10ffee21c567a34e1bd0bb87ee5d96a6ff8461438aa905411bf2d611499be53cd7150faa4f6765b1ab9ca6186fde7157648e8d46f4de4a931c7a88ddbdf8dcf67fb61f9cc2578887a6a2696940a93cb2b50dc986a7c3bef5a6f86e8835a284eb847a3505b296e6dfdf7ab9160e76b3abdda44b4f88be777c98f15df18de222008cf87323955b1fe8025ee7f26c90e7dcec17bd6453e97e2a6113b9f768c35a19255b70f10643dd3e10921444fdc42fd0405d59c7eea5919ac21e821d0b1f982bf60b377bf66d41b21e5c6f41d319416cdd1317a854ad0917e7fc561c8b5ee3120e255f9966a410914ac697597eda6ec0e6bed453a1ffd600a0162fddc33f486b54992952392beee159231cb39f5df0e39c244b678760a2710b76776ebcd64d1bce222d8d2903f1ac34ab9ce9f5a0337c2c72579411c8283a296e4a735c4d97d8aafa9aa603d96ca56ed210c95e0620afb3ca573fba612d7950a28f2b0900b3dd086d89ea907c0fd907f89d24cb5abb191bf7538874e6d2658f0d2d51fbe9b3bde5ed0b6111b34c4c9bc59960db532b129d4ac0237f9c0f8c59e3adfca8249069da9fa9a5540be79331bc47cd7f15f65e3b661d8b58032afd84aa9b0bf3d61fc489f88ce694647fe6d17612c69a3937611bb6cc3f5efe508891e8d6393663e8bdfff6c4527c2c15a72bfcb965d505dd14527c7bd9a0040e151a5882b8b81d76e9c4bcbd34196b9bd362c68f6771c4e00de08fa2cf3e3c94dd41470be5f273425efcd55d08c607da6d0ec2637090fac75c15a18322f9a6314d53506b3ca4d86a5a5f5919fa3967943c3bee3a0c5b2bc362009075d5a06347c57ce67ebb6680157caae74a364165bf8a0293d3e41722090eecb8f4ea01421175fdae68d9bb8c56ffcc967a17e64812849fd61ee1bbf92b4ce814f65503f94b8d4a609cd8043f9ace6628a5781a55ba69d886027fc08951a9838c933fe28538e2e0cc5c0f9d9d48b9448b57daf92a9ebe8f1b15b4e247b2f7bb9cc176a2c68ccfb16091e5113d9afdcd235f3d05070fc738a57591f66d12d60597e5da1ecbc8d5f81b9ed6bf7af84ceb1ade07abf69769c0b5b42881b2b5444ea59ab848a40ca505cab38a284ba5614e3a80150913a883ca06e2e3985bb7f0b088b1edf9db8afff626a1bccd100e0d0b54d62211ce146ceb9fb8f634c343953c0d172a973a2c90effe9dccd508ddfc8bc3059a99796dd8883b40681734c58a89618b448fd67429cf0ad62df514299f2a25e759a359b082d4a9ca26763d7e142353a8ff3720127935208896cf1a9ea449c63d752b35ecc7f64db190b73097c2a19c631bb92a1b8fa250f5ab1e3fcba9fa224144573a5eea1c868bbaf96e3261cb7379bb541fe9755745a08817c383523c28b979c6b8b7baea12dfc721e69f14a6895cb55c4e1a0fb534c14a86bdcd3891f605fd033a9d1a5c772dad67ea000e3e317e9e2e8f028fdc3d6f912c14f4e3e9fa1691637262be7493b274b273008037172a50ebc9a0d3b230132e6991c5b5ee5e623c303c38d370549a20ea4d090f71c3220efa55fcee58f1317c4e7e6ae64cb6443ef7558f757b19584684b6b3775ceb0d5bcae0b7503c54e89297ad275b1cc913055be8191dc6b01dff7938b7fb738f7853f436a785e15f02af532ebaeb46136b51cc944896adaa2bb20f42804a68cbe2b187dd1f7830691fb9e5c1508ea51f438179ac4313d45da72169485c9fc7aa1eb8fb6ea72c2a766fec4be537b00c7d8241f2d12c603fb98fdce309c999177017bf657367535555fe53fef2ab15c152bd742bffe7f7214759485507a95e02816983b4d4e7d642b871f373160e7557f8bb0a1a8da1a069a745122ac8d2b44b5f8b7dbbbd1a4225d3fe0eb0ae3b055f4c1376c04ef5814c2001db4ae3832968b28562527beb438bc2557b67df162d147cc9476eb2eb6e92ecd5aca1930fa944ef2b69ec53d2353ef6c4a7fba0b17465151623f6686cc3109756b9b2a6ca6bd13680f92117fe5df1e0138f653b2d9a4697ab902a560c68cc95b2a8cbc1b65ca1cf8b3dc6821fa3e82fab10ed38b49e1fb73ab53971649616a6ec405183a409da0dd264620b21c9eb36e8dfb547556d531f45e3b5b9d67cec5aa2f2453378668a46c7118815ee4de25c576411f57dd00e9cb88b4a91d55c56588a4d6c89335451621a2d0d1049112ed9ffe541f14258a572f192134002e14c558df7aa9f2ae653ae4063b83029b65876d69c9d8bd1fad0a11879567b93ddbcf733c07bf308e63d6c136e68053bf1c492cfd7261f6c25f74c04c99c6096048c93e8f2ba82db121d9a3cf463c36df09fa84c146eac4990619afe34b2027f6eb14354888fe8521d4d23ffac40bf81aa6e2c2c2348a4678a8a2b99ac593e68cda01a7ed75abdf2818aa90bbfa04cfdecd6bd5203f09bc7dc488c7a7be1ff4147a03c46312f7011d7038b23478875ff8866b211d67a0e509d5631a1b0ceae563cedd492b29c7d50b66d3c162856069171e7e9487bd592bb8976785ce82d6d6e436b006d0d2acafdd52057fab1ea733676a8693bce93f36b0b747e542d7bcb79389f7f2fec627839eea1bad7fc90aa2e9122cd8cdb399c6a2732eac8bd6362ebab210dbfeeb281c51f6d431e41e9c15313161411eb8c444311f68245b1c3e107bb9d721c6721b9412a120bbe2ea3bcdb646520efec281b34ebe2ad8002615faf742e9ae50e3f65a1d747e274f6a2499291567c0806190ebc087e8ef193863a990291fac120b401da2b0a6465083d076760e1d56935bcc07dab2e46d39e7dbb4b0dd5a31f499e8e72ae249951f442259e5f715a2fd5b9b768b368225d63f9a6e5c5aabde66e4f058ddbb5f48e966e6bc6d5898d87ea6ef4945ce0085307cd77133f98b6f73db4fe95523bd41aaf42aca5ef8378e6c347d6a62557b7da452397f556ee5f3eeaa65feca60f3590a4df4c8ff54085d86ff0338e2208925f3261c210c9deecd1ed1d2b20c6eadbe9c8d8b2d615adc2fd2a06f422c34737d857f42154d2e6565c0ca6974f29c79bd45153ee2da86e6f8fd7f9448651eb61c335a1db8ee0f616b774631c6230aeb42de2f47f3eaa92d50fdda7fbddd0a68002363ccf7d094aa422c0f4f61c3a71737f60988e1495e32617d2168f44ae3b53ce5a209930701012671ebfbe9467f6f9d2cb7754033284667bb79690a38367acd8a6691dd2675fa32099322338ff9632fa96a846e7996b9f37598029605d8936f16c03fe80f508cedac4b8c5352247e7bea1d62f2d31e0f4275ad9448fe9bf2adaecab75558ea0d43565e181aa9f476e7688a83b4ca67a269b047e8dc29a12b5b97b607ef625f51f06c96ff6f69f96c13f0ea5ac96051608ef0633f22f66366d4d002aadc16122f8c111a61772476f382d6967cc6db3e4ad6a855293b6c7b409e2b28725405d1c6bdbc72eb310a62549c38049641717172db87319fde4fdf7fca3137cf2e83be6340ecccfff2938861bf91f6c14e1c21008d4ba7bc67f73d7fd817d51c562c32f00c10ecafe6ad351463b2e02856b6ee0960e30ca678de7fbd21040e404a584b1d516a52db2e9d080dc03856a96ade64b7a89010f51dc856f802ebceecc97e0832eee3e46eb113b8657dfc1ad393419a9c67c17d76db2893edef0c68ef11bb11846aeb37fc346e7068cd1fe99415b8d4807704319f48301843115c4b4ce7295780d204174fa2b7c4728e1222c9ae30cfc8bcd6faf80dbdf18b9101f1bacbd40b88b2126d41622605d22f77486660d5709d664e93b3316a70fb570a06ca89284da587c6613b85053d5204633dd266b7b6f2c526edaf9fbe1cf019f425c5378872c3197f34166d1a34f1f689fe69efc1b5749cf0cc190e3a6fc2825ed630d257eb8f2fbf46d899a9387a27b1a1c3dc02f05130d57b16f829e3bc3cf50fd403e2ffa0a496bd8d3b9b8fdfacfbacba44ef42363e118bc5d37612dbbee74a264267dab95f191e37d58a9c9205fd51961d97165cf47c735fb1e6564671b21edc3e906be9d5a4a852b0ba5e837bdd4d85483e7beebbc17d40001cedc1996a21891cc98078cd405d48c266da9af163b9a0cca3b0f59169cf7242e8ba57db5cdcebe4e858b3889a0c7854d0d3be2aa307eef669e1cb991ca66d2c16ab335c9184cce53d34fededa48cdc377f5e19355aec91d5a2892c65ca6b2c9a7b4c1da629b980806a0276513956feb71caaba096e77b0ac323e116245b6c5c76b3f61901986a69d62ddf17a1e95f3cf9ada5a71eefc7ccc1fe1a139d62adf83ec4e92a8c78a1cfeee9cca43ae1594df2ab3f13657c5b453171c4f3c099a457ff7263e5a253031e8cc41c2ee3dab56d950a8e5e39ff7c5671b221302f8ff1018dedf487ea3e8b725f5acdc0afe5f451216b1bd5f4acc7be185471b408c7121b999550ac4d4f6f01df3b1c6c391b5ed274dabc8a141c3ae62ae8b57e74d5a2d22ddc5e630b7c03554479232a6a8024c77fa257454ee9269a16e2efd36ccebbdebddbf72d2ea90d5b39bc41bd872c85b1f46919a6d1b111602b7c841644201e25fcfd538e288c909cecfb1e39cb8a340fcb2ee8bbb68b1f3e88631ad0b511afe841459ab822eddee15c858444e37a1ec85a2dfbe6192f869a064b997cf92970bcc02601fec0434f1babdc7c5bf5ceab6bfa3883e863ca42961c8456234e63bb9f50d3b83918d495828cb3689054053f8dd23a315ebb922a748f815cd1e5be1daee369117c8782af0c6a79ce0eddd27aaa146c22d9e6ef1a4f6a6812f0d7fb7a36d452efa7784053243abde31f399c3c6b8f173e52e0be01f79ee6aa902fc77a81483d4185888a723a9b0175621d70ec5c49bdbf2693e6e770683acab0e42da50523ec7b0f5864767e7729ebcdd5c9315acda86130b1894e7626d80e0eb90594a01a64e2fbd8b2aa67e4d5f2cfbb479da07b4794bbb50ece233e63e159d1cd3a4f35d13069859b40d65d6697b1a8699ec66c4a722ed5738ff11e28ca2c42f37fc1ded509e8835f3e9f173718fbe63db50293727ec444658421aaea8d7b19adc113f95faba1fb2135a755ecf1549c320eb74d94664627ccd12310fa6cdaecb54c952619010ddc33eee3bf0dd2d769ba73a06dc6e68e87754a089f24f0dbc966573e1883b55f3ec989ff3cb2dad76360c7e354d710241630da2ee0d94596564000d741a7825631d386a6c8ccfb31dda3e64ce63078c315523fed3d13c0164b8ecd4e3b3e7ddeac56c4982af3ab729cfb9f4d5a983022a85ef07509bb0a43c8d86a4111b70ca9358070f134aacabd59ee60f8cabd6efa616626379037307a4d543768b02b8fe640179d10b549584b6333ddd17540cfa3402d481a2872aa5b85d852e7e80ba190f8fd5bfd2101d4bb441311d01a32db3d14fc5e0859039e40951ca370fddac16cc489c5cd9dfe70631c6d4135735e4d1fc8788a0c03bb7f3b2aeddc0af123df037941237b776a5eeb8bba326b378010510c5ccdc8a23a1ab7aa161862e6a34f6a28e019b09f71024fce594d14624ab919a06ecdb3ea3fac5786e1dee6b66a39e33c2fbaf1f0ac6208c3b5ef41bd2bf232072d5f721f9ed3fb192e81081f20925131cea33df342adcc5cbd09c425051b70c7b0bbba5c261189b82f28bc74f80e3289481e5962864f8ce17873d506b553790554ce52ea07cf4a673fe491b3acc52524f957a09c437a14a8edc3fdcf212844d602c3bfc016501bfafe70d33ded21e37010c3e25ffe67d21dcc282d1837c82c601db32067f51d3d4b3d6e6db757ab7f2452c57dc8411e3c205bd4ee6835d7adf55aa84fd2238474e35ca5983d390399ce7627cb48ca37759dc8ee084ed3cc75231168287133925fa85fab904f79a1cd473b3a8b5eaab76670a77b8979114e9131e23092b504c68bc47eb459cd9e5de5ed420a3f99589ec0979914025c8a15845299db8e678458b243c623a05910e2a1dfb34de583ec0617a5b786f41cefd0f2a88b64e6c0ff37128178621f4f38b46d768dde76beca1c29c905aaf8af9657582a7745d1c96147a82d1db2e614b11b947358936dc111433b4f06f1b8ed73a26c40b4ebe36b616eb752b5a995ae0c3d7de6974c1bc20aa7086ed3cc389f68517ab9566ac4cd1430b87a195f54ff4f2774107228ce9843850ed8111e1d22b05950158192a7fcea14df77812da9ee9a40058dae52893fe839b83698f341e039e78a8a792fb3c39c3677fd9d931c69ab55ed78ff65d13f30e46e147530124b9f5b0b00ed73a6cd46f03cdfb4a1626dc5ec807ead4412b8167470529a2e882aea94b42210e0aab656fb3fa0d5a70208b51292c6fd02f505b5fd2681ba01eaebd2f9ffbfade945a0d77cea9b472e75e7e98ca8125b0d90832d8c5905f739b129922669097687c9d102ba0ee9137d2fec26ab91785fabaf7de34fdff30306ddd2df32a517069b28fc3bb6800aa6c81e32cd72909c1be761ed9ae0137a572f5db3cc88b35ed18488ad6e105e1540c615c9c8836c967298cb86d943f3654b2f65c6a3c0ca0fbc0a7e8aea377f3f3ab285c3d0920f81098abd8d28ee4df9b109ed02c91e4eebb08e2c6cd79717353ea0a626131b5af32bcc689a66c674f2720dc870bb5aff6374652901371d6fd7931913c85b2f0ecfde4f273522aa2649b81d6f2e269275ceb2d8c7f8edc1e590eb454c5cc655f68883d5a175d8aea0d688d265b078c97f13b566ae1e9cae551542c9c513188873dcfc549715925ce869861654f67c1a1bc36b5ff728ea2d2ce83411e90fccf1881e7296e5da3ac0bb812c4b285cfc112d5d61ef85abcbc8d9c3b3d6628cc6131c1024fb4739e095dc155049f40d1c393403d01ff8cbfbf8dd8572f5ca606591ae26f78e985302ac0699b98f315db0d144c637f176097e1bd1538c60d819d1b8da508fef190b6ece911949e535024e0ee1cd139eaf3ea4c1be6e2f7389d393ac54fd8fdecf5ac7a712def491ab28401a1e01e8d1bbbc0067f2481b314ef11a142e765ee68164b722db988a4d51daef69179954336a5722754bde5a0426340a68f51a35edcd39b747a873409e3ddf925719873687bdcf00f0259a0994582a4ec91b16bb431b2cf990ac2d3b7746c99bfbbffa15423bd461b2d81e8c01839fd105e260b0bc90508edf2c5bd38ba4290390e730df5d76843706edbc1c26e320334e9a935f55dc603d389520333c92ac5e683f1458970408442ff2dbe01888dd49463a2ed189be039bc791589136c6e158d2b86b8fa6492463aa13a2e390052488a32662f9c6d28e0461b3e86547134a431c44e100ae1c18aa4f1838bad92ea8c1ad163ef312861b7d77a9a3d5ca5b45ac0955ff983a657c92d8098ebb82260cac18b58be349bd44f825f1b46a46485fe5645cdffb27e31ac1f9517b7cc7443b797a7835a137ba94f0cdd4b7c9fe3c7bd51310d47e3c46339a7252a1a200c7cc9aa59ebe1f631d269e003b845488508a0805b1127dbe4d8702c203a18d20e8cd28425ae9f6d5fc0a9c7caa739d3f75144cc768893297affdda2b16b088ac0249ef544b98d7baef02fd18b4e93f1abb7b1df7de2551c7005af58fbeb671379a2103764ef4c0cc08c53485a15e95195247011d97a832c30f87d4dabf3094f817e6cd437fab5d83f384dae879f9bedffc74bb24fe3d4b39aa5e7cd80f8d42e7efaec776bcdbbb31385a3a18f899f603ba34b723edde90265ae717d6b4b25b5d04f9ed896e0a489ac21d37d9a80da43f5c040c5537d419f176c3163e69b6f93a9cb7445fe9e974de83ccc4905da1f94a4dfcef54752ada0df6fcd41a756419a685ad7c4f9c77a78bf00091c51cf73002284d2ae575ad7199f342a98fe1c501295e78d83606d70a73a79b1202847ef410fec0d3c009693c2e270b87c3d9efee0dce14d04ea28861cda7e407c9559ba89f6923dfdb8d38010075a5bbe0a7148e1c3cf652f55e3dfdf7c3a7cd5d0c9821848312bb99442edd0ead3218a1b6a294dda20f6e22cde2f5ca48e2890b3ddaef61bf755cdd59755e8889de45a809bfec85f83de0daa08c3a63f15f4ab5024a216f6765ff98e554df377aef14d61035dae309bfe4799e2bda53c23e2c0f285804aa76acc954d70e304dbbe43cfa0ee41607bb82ce7cb062cbd41d5c3b0b98e9dfd7a91d66fe13dea8cb65b19c70bfbf5e22a92a65400a5b8b48d70dbf416864531d6b109c3daf4cb96e2e5c6826c9babb8786844916a09eda413d4b5ef5bf6d3e063395bb75fd0b5b85baf9c271586f2c8c1aad945e1a5e48f96f1163ce998ff4c2453d32710e7cb6b18374d57a7628a2618a1a6d37542dfe7cfb42723b3dc6a1cfef9dd85c2b02cfc02eafafe46e06d7a69eb6399462e91ee49308d77b55169cb88e7055ae9f19d84834d206c63afaf4c26e0f4e8c154cc61efe98a810c99866d80d28fdb4c4314b85c7b03e934ff551c5afbc8d0902f3169ba5e7651359c8ac4798351ab8155e1de641c88c52e40f3d66676b0215b00f9ab1aea3c9e3511d34d0df9a7d135d227adcb92880822939f4df011b40a8c6bfe052ddc1c43fc523ad4589a4fe9069139f454ab6b4d62d50b33cd8a345bf2c8f132303733bee4275cbd9a65faaee9331231d240cb32939651291db1037f710e4ce3639f352a672dac641eb70303f2a349e4f90b9406fea8afedd7a9a594ba2238150707420b3f8dfc38767bf901a8f6313c97adcf8fbbb3f8d3c8044c1647dc1c3f1fbaa6dd8998a7819e7cf63bccbcb750669035fb968c83409aafecb5dd653447fc96716f29a747110d6524b428081975d4c8df147a8140287ab6974f8e3418ab8cdede56458abed8d1a5277aba79e62ed3538d552f07cc66f7b7dd3d5c269bc51261ce567f5675119445cbb27f73016afb002ae919bb95e97838b54c5eeb1dec8c9d921d4e48e2f5d9302129a8f9a152f11b1a791024502cba2879eb1ac0d3947ede75816cfccfea3e30bed26587e59215651ca39478ae3b8cebe971ba71169855de8f25c63fcd4d647aaf55e22136d0f8c6912bc7f40236231002cc0f769abfcb898c9c4faceef897f4ba2bfa1c5e9711c10d92cb124fe712c856ba9bfe5e8b14c8fab636c58cdcb0635584bbca59f573e8087121ee771c3ca8e8285f1a2d0b203b1f138735b782365424b845b9b3a7c3a0b8645f0b36766a20210bb374dcfc36e50eec66ba5767891162f3b4eb2bea85eebda5a1b51acee98c5a4fdea1ab8963d2dd1aacc331cb83b2cdae480723437b543e3e4449834ee341bb8c55505c9958c9a79a202f50cb5752d76817baa2ba1bfe6f2a28858b86bad162bdadb65257b8b65365cebc3e87a02f8f0ed0399a5143d1c3a243969d83a8f2ab2b26bfda39a8add157af4aa0d65e80fd836a8812ffcb7c5367e463cdb53ad9450cbc13eb707f23eaa0af9e8ee97b29377696239089600cbf666b8f741f0d6d1acbec38d00a51cf7b6bb164875e0e209a7acc2e8cbe33c80cfb5696f7ba04d8462d063239d31f1f388aebbd608ac330118aaefa5663fcea543ddbd36fb132c89301c148c375b749e5b4efcbc582c6397d6662e13224eaf6fc42adc59b6f9f6c28a28c4249a2fb57a50ce52e12cd799164a9f0bf8346db0e2e348223f96e7b49d19844dadc075fe45f7cb6042e6e99f9437d03edc1c06067918964f288a726527d66940e845f439e8a72504bbf619eb269f610a61c66b44bf95fd3fa2178539e716c3cd88f4d8e28854c90469655250d2334de3e03a4fa31b561f62202681929618bd76b175bc5c3fd5e552f18a9df078bf918aa30435fa6dfec96c3d748c701c997e61dde008fc713d6cdd5e4fe6c7aa5b3ad0c440bb45a6f55d10a9dd8535f3ceca203f9f9ecd2258688123b248335992f1767422d80993dc246c843099d98cc386fd95e216bf0338925ecb1213e523ea49775fbdfecb8563347e698352dbfe2d4cbbcf444aa8541a67c70c471000ead7ada64e1eb8733d4035c8b32d2f66758eb2b1757473543046741e8151990039c12951341cac949bb05d15acad8bd3feb78ed15b4b46c88fa6188c79a68f5d6b68fb76b7d2ef43175fd04d46df24d00b6995fd97f72e5f824a13dd19cabac80d7290b15d98394ec567abdb5f623366520b21554cbdcc670a7c02ea7846a62e759aac06659f85b100cef8e840b16a197a882023685dcdcebdfa7fa7a163f39917e07387f32100f4e8fcb5d288597984af060b519b28938812bf05f6986008cb327bb7dc2b5688e9977ab05b6bc99212400e9ccda69ae2a171455710f4f1b4912a6b0ad15f6f88e3072df4a7e45b5043a72dcab1828346ab74d4e6d54876650db7157417cbf9460fbd9574305165a28f75d88a5122408669a5e62bc6040b83637daa8f2989bad301171c335790ef734ba80453afbd8a2759c731718bd22b13c7aafe09b37b8d7581618ef98584c434794c278f86480bc335d90deb1dda6e3d9a0ff2edcb46899585b585f0a27f7cb7f18d2703d74ae227af3b21cf0912ed331f5d27cc0d7ea52aff58ee8de34eca4f25bdb1168fea25a072fb8cc81448b89b18e4a14683614716fe34e096e288ae7b197541d18544bf300257b57964ed1339fda2b1416e4408afd8ba0910dd03c34d23b068317188ece67e3f2acb24240663e191edb92488d3f4688fabb66b385cafe25a37f51a9571be72ad4d4621d3a07bb92dec30e1b15721ba6820d989f15929fd0ce531fccb0179c48b0312eacfdecbfb3329ff14e6eb95d45a78e0132ffc6d8e5b28f4543c8c062e3d107b9467c7518b796067423b7dabdfa567f01bdfbb12ed8e30224659940846944c05f9b44c83d496c334267592d43445458dd57645706cc7917c22ac2b32fe135ba3af071d2a0540f5d4276732b17785b0dbf997daa07f24f5cfefc031a6eefcc16a2b0e23f6488636a019d0343bc7df297ff22c740cfd8a5a7e9f411112921c690662424f4a386938883641b9e9e6b03f47d255250a1d0a9b9f5599243a7d8a1597b0a491a94c40c6d560df094cad68865bb4ff338e6e44b8e9ec4f8bb6dea52256785edccff606f98c7e7a1e298891592575c28dcdbbe84a7549ed8a65759706bdea2f0b151d73c76175c397d281c7645e5b479a856729ea61559174d78d4c868859fc7c65525cc1d0e7e0f440d63f35b1bc529189296a30e1858035ad2c97d33e8fbb9c586a46f2410478f6367f1829ec1c553cea57b9225d9bbb766f52b7075c01a9cf2eb9e35a0e08cbe2f138eea76a24cafbf7ca4d10cb3d269c45e5e63a40d055000622586931e71690ea0b2cbf60d6931e90f46eea40f403945fb6890b3eda80784a16e34675e36530953fe07e8fb311d86bd324307cd501063ee4ee4934d0309612cb6e65415a5e2545c4c9959c5bcfeb72da6e28c42ee1d081d38deafe3d1ee1952cc5ca9b5a33a603f3da32802ab508134e8e5ee10266ec3970c85f13f08f4189dfa0997a602016b6b6b08d3ce9b8bbb5c8d6dbb346bedc1dc27af8138860f5194c55a3e12cc91bbcfe0e1e094c7fbbce1b4f45f6cef24141373b553bcfd0c14b37ba41c5ba634adfaf0d301704116785ea6247e7b92646b1a45e9cb06cf26bee197575fc7be87ac0a66e5594cef3f2fc2efb2878c56c94f42c46213afbdd033d5bd8c38ba5ca32bcef3c74719135e2151751f32ec12c0942b9aacb0ea91813d5e7606dd3d4f0c73989d61382bca7b74a4f8004c1aef6c0ab5a2236b21dfa6fe965faa1521e704ef023d44eb3f894be6fd747dd088d6e27d951d867a16f4fe2d9e994cb90345b7059860a7c13e9dcd1882b61b195b75752538611086b78d89b2b60a5cee9c8e2a5eedfb64d4ae8e440b1afaeee56604e6e0100c3bd9c1136ff2d733970b8235b9271292ef206b034c9cdadedf9a417965d1ec14fd407ea655f61f69c4ade87d2146839a504accadef6a7efea8eb6783c9fde55bceac7b469d25c851536682dc90d5be3e4fab812b6e98e384f9e19110fd8c1361dcc705f104b922fc2f731128b0753062c36b7440f987117da24d966e45373f3962b6bb843871c40942d0dffc8a9a7516f3bd44f30b83dd8432fe0aac0f3650ab700290dfa22c385798c88edbbcbfbe667cafdf2b6dfa0b46ca8724e5440c66dd1c088768a83bbeb2be545e83545201dbb7e67853297fcde98a7254bf881f6c634f76aaffdb40082baf14bbf8784efc5307057a03033ed307e381bf361bae7ae8c5ff359dfe1ede6762d4ff5e1a9888c6b780887ce120841cc5fb794ea165949b996e989ed3ea358cc385699ffc8e72ed0d0c7cdc1440d6770a3880e616ec3a42b4bd15bf7ad4b59b4f6dda285132404f76bbcd9631147611860f23efa656efc6041a5130451d268d0fd98e5606e1b0ea3b252a16093fd5d87042beca905b3d2afdd4bdfa63762afd61cfc92d3ab73aabc55acbf7a6cec5b19d376d0dbcf28a8aa2e27f0483370a4d62681a56ac247d4e3a320c4ecc4095287226e6de6e1ebb9c9ed4f9f3c6919ef1bbf70415ed94b44a4ebf211c30241c5bd53fa41981bc508c8f2201d98b2049cfb7a3cfed25f828a3bf5f56fb9f397b7425f8991e64bd7fe0cc00cac9ec6770407306358e93e224c467d70abb5014bd69d515dbd70c5cc2e6aa46f53b333272f54d0cf6a59ad78de34fc4dc01c2757015c4c2c22f506a2ad96082eb3fe2d669d92396b6c30ab7662b8b6ff09f10d5282b6534c5e4163158d68f5b9172d0f52852c11795277dd8853cb2e98d9b7c65f5e00a5aee7613ed665b0d3453f3ad3f6914d6c73e5bf829480898cef64d8025d91267665d710dd719c65856acb1900d848f315bf68cf637fa36c9390330889d8edf4718cdd5e5fdea3e577dcc68e3087ee2fa350874624a693c12d2a08cc1d609c75f435b6f30b4faf5ace9eb109363fb9b0ce8b5f6ba8c9b29d42cfa14842eb36a47a5c3e4fa0c136f57e1a66e59dda1ef70a8f0fecb907f5806e57be6290e99e19e171b3d99fcfd90f1e0a374657a3304b88eab031d6c4840af1ab30cadb5fb44e62d1890e63bd29983b97822ebed1aa83391ebff3d512799d38aac010d534dff8507b6ebbd19e9c737eb3924cdbb4589091cd01ecf878d40f46a38cd4ed6841c6e4fc39b1404383d6e6bb73fde54c9d10fadffac61a22114c697fa03f0098864981878576b53b01b9e8d1927adfd12800ff3c00d896fed55525ce57f100f350d26d1cd0e21ca7117fd4c2cb2c4446b864cf6e43d227e66be0234fc46dd9deaa7211a603e64de9221c3644d0b4f31ce5c9a3e088f4cecc1520e420849aa442b4561e8af87860d921468b42a16ca93a3a8c32db78057d07de903c6dc3fb5b74570daa92c8f5729f43d39b5ac79d5441e59569ba1a2d916ad32437bbb1ba638f9e5d99c197511194c5aea931b41855cc8cc299ff645a1766fbaa786528df931abba681977fda197c4282e15f4e1e6f74eca2146a343b26298165a20e6befdbeceb00f7350d3940ebff9fa79fc6ba7622a388a4d0d6a51db799ebda350fad18fc7de60edc9429e5dd01a230eaf32b457e2467d60588c3bbbd9f99aa9593acd19c1ae0ee3f3259333414504bc9187d66ceadcd1a4a90b7d5a6db1bc2b8a9489522d6ba8e6a594e4fbb872dee6e7a7dbc936c0c069d948b2b3a9e8c33527375f4db0efc2b94a07229b256ef601751b3ad85161fb96dbf768c731a724f941c5b66ff09167ddd5ed32b47acdc667ad815e237576f56a3e338189e746364a305a1fcb7c483e0d51a46a6856f148337434fbbaa7cff6f6b5a6e57b31970a4a8f0d9f9f13d728ff0c0e8f7ba88b0e302c374c7e18470d8e78333271b5902dba70e49eb1c7c2cf2208301e0bb2be1887ac76f98d74587969f3f4f8e432127cf8fe37375f7afebd40d31915fee2ac154e4ab7c4cbc91c597c53fb71bb54422ce312e276fae720d2f726805c8df0994f354e6de38fc971f3ac17ac6c2dd81433507fb0d1916f3f1962eef939e5d00f008345a2dcc50babaafa56f5f6da765a870e8c90aa36f620053f534dc70bb31cb65852a5c32c9bda0c3576ba4d038887992437843e14680cd5cb5fa0f9aeace46dd6da4144522c30fa7065eb5bf1edd5b192a5df870e194f042e0f69ba949351dfe2e5672591f7504aba8534b4cf0bc3ff3fb92c5ab8108b3db4112e0c4b5feea4d60e5232210b2541834bff2a67a104f7f7779c5e04d1b6b8b58edbcfd3dba8b97cf6c1889f8f3bbd4fd1a1c664c478463c8ac72e659d89cdf5e70bb42bca6be3e05fcc8bad7e9f3be2c1c226cab755ce1567ebf8939f36fb785224c00b15e6efbf64e03031ea55c7f14de5f0208c5a35365989d6488e5982692d2341b79c9b656aa02e178ff92cbd3fd3fb5dc81866b5a36ec40150af9087d645a63d92670273ae032babee5cc6892043883e7fe3b7c38573b9b037b3607cc9bf925091ffab1c53b0d95440ca8a4d47e4a82a5bf8a4bec6c57494bb7b14c80057099261d02361ffc65ee7455e238d887ec71b1a947270bd595f5b5793b8ca6cd3c13378ce25fae6aeec5b0529cf7fa07946ecb967df6f79b7fca7b744950a65bdaba8604e308e27a0b4ee6dbc2d0fb69f0592e92004332cb905ca83b60e484f96f5393ddaf1ea4dc140cd99e969a875401437e588339192329712d726b00d1bc90030e6600708d0055b844e55c0aee98dc95fb98d75e8eeee283b0037f518552e8cffcf7717f3cdea12dadb63720bd2aee26ba9adafc3c92e4ee2bc791a83b2f06a9fc42be99c50fe4ebca80da8951115da561b278a1aab51addba3dcb59cb56bc43e655b1704a1c1c49f750b8dcfff98070520b91b61e630a1792506d3877befdbfe6aa60b6d3cc38960dd928fd2cb7b347927ad5057f566ae88208a9159b81e3461fca025037b49fb420d510f4e66224d19bd630a7b570b58f7f5a5fb202b1b246d466f01d3d383f2b9183005f96e1ef8b8f2a1cc8489201a7a022c87ef3767cd48eb3f072d8116dd45dbea9435768d9d7c3d530f0bffe1ec0f4d350f6ab46b88aafc259eb3f8cf90ff0674ce82a25a73122af6f933a91153afe53c1793f43331740673543cdc72ca57167b30b24de43772fed8505403f92dd75bce90b2f0a007df8dbfdc7f8fc9dca1e465a54ac83489f3a5f88a30489ef1d082650b76461615757d7b0734ebe41cd8aa6f29ca6b05a241899b62dd55c7c89c891684f4de192b0ba24b139e3ba1725127d43fe1d97cf15f46afe1d5c5abeb20a0dc14257590a957d1ab793395520838b897c0bf56f947988741fbb8c36d883dfcdc87d649ea28566ca5c23deea46f81b0a5e506c89661d1d7bcccf1d4f585adc06444a1e4206457d2dd476caae4d0ecec8c66a07b46b89f71e58385db80e6dbd08b4352e091bf4591c9dd5ffef0cb39f86ad5b76e32655397e3cce43b4290f0bd774581ef4f12b2f50dcb108fa0381abbc910486156af19328c3b8fc2941f9382b2d31ba9546f991c1791df875db6076ad9894f95cf6bbea9de1cef015ef9d9ae9ff20d59804b357db0a935764fb5d874de32aa26c2def7165b71ab5ef1c7651e90d257b11e9e260fe1968a8479c27f40230b1e8be5ad662125de860f21a47af532e7edeaad039a4b9b55ea370cbd58cbf11cb2fb6a276cb790aa2b2c0b0af5f18e6715142255f101752a008d7c089316c68a0303905134b0c61ce3b13f19efbb3fd90603b77fae9ce51e034cafa145655cf5b8299409e54241269c3aa4137a276988a2888639d1b4dabff3caa3b7e50bc4343490f33da4c8af6ea8498d676f54cd70f5f4514ff7aef626f333796fbd26d0ecc408c2764800096b6af7548673eec7f4b5df12d285421772b3bbbf6f4a86e91010e780f0873a469b725649d9ec3f1b200077e243d3537e014208b6a79024c1641d6f515742981906971a19640cc6f52a1eafd534fd54a92d18d512feb00a3196e4a8a8228d3c587dae24027299cc919b06a92dee3b3ac87df3246f43612d2274e2eb77fa2ac4c2d809ca24afe4330241fea4949c7bc185e3a15832cf0382aabcb91f4e0d1465516e107a335fd749e45f15c79c192baf7660439c033f28c70e560a6b53a066266eac78d5e8e5ccb45929f9fb66f5c40694c3d8d915334a30daf903f2e1549b2538aafb53f56d9cf37e212537cf362c122448ca69203942af6e0fca8b89bf4984a79255e3b5598d4d73d56772067ca4d667e807554af6a16747e7588c3389b2e492b35805156c79c83378e788d8ac7c92f46a3378e194455095d3dee787f9d7809a53f6d0131ecc0e9a6af7fdd92ac438361347b69329d3ab6c41fedc1fa7186310f23c3dbe8a26eed20a113c8340276aa6eb1313d81a9b1a40b79c6ebbfae864427dae0585189e1a9acda0e74b56f14c07f290a829498e6cffcfc9449427678a046e56941d97bc8db80e57e9dfc6cb99a6417f81edb5c2ab1891aeab37f859d9f10baf5617d84fc2b71bf8e08950474c2dd123b113653e60ec9a224765dada2329d992a2f856e88355c4f92d649e64997e5dceff223bc1f179042557bb05afd7bed346cc8a683f2c884ee2f98c872661d286484781e78539d3e7fa5b097b918ff5bb14ec77740d5675c5f48a3fae18130fb859c5c173402f2d57481687003908c20a2f2f8d19a0d09c4359a7224caa1df663e07d4ee8daa53fc34337084cc3bc92ad199ecb1cce0ad32e71f3257f6d0438b9c5f673e030e4e9356d41ffc48f9a25e9efbc096635cb919bb79fd84e4e4cb6ccaf9cada20cdf4497f6d8a8bd2ba210a741c3dda07cb4f2389ec9724a8749f53002fc686dd1dad162b560e94124c7a0189d0a0460e1aeaa22889a3cbc506f5958e1b382e9f2983bd174cac0d27240d892d7f8b275f649485ba0288bec853ef6644ece98e0eaef7d7be840c5794ad032d3ff2646bc2eeacf5481c2aaf8d6b0e7de4d996a6c078eab29445323d7b9ddd3e4579a95099c7aaff5580c52fe27ce388c9651903a38f757a8c500e7b94c2dc0ed979587ca212c652d4677097443e50703a187451e79ece4e41202a23aa80c589f6469f6d3819f9e38fd45ac0ef057a64251b6ba9dd611598dac363623cababd650513683a97c66bf59f8feb343a390d085897d082c86ace824711f3e0babc6fe8a051aa485f6059feb3d50fb2d6b6503a7a4825b5cf63181266c49e44b3195daaccbac5b7bbc9795b82f6ddb818075d42fe0c387874cdb45f552d163c136653f311470e2218854cef5dccc58270bb4212b7cc5584cb8be50e29ded5890b04a5f902ecdf0cde0321c0de543ec23f4e17e271640c45ca1c54063cccc1f28981e25b00506ac78d78463e7be16d5ed28066134ab596774eba8e2fa8e0bf581c64a5b3d5733c7f7a0c89334d49032aedf1d8f03c5b309bd10a0621e024679a87ed30db1aaa40a5dd39d37461a6f5809190a67c92f36e1d1e4d4de086633c430d5726f95e04c2197b0ceee82c1d4c4c061e74d6141d629e105a0b42b281790cb2d85c113129a9b484587d2c6d005012f25c9409f355bd7d2a569f0bae0a106148ee7ad1f73abfc102f76b9e2708e2be647f41a2e7017fd6deff9665d2e9d5c9ac0fb960ad3fc9206aedf4bcb52be714de632360726eb5e404ed282e411073888c6f10be683b8e45360866ab1c9347caf8aa7c8640cd82aac87ffd81a218427d038d36aeeda9b570041ff6ee78e0312def27cbe81ad0f6a6707dc0a91cedf1b3f880c7df7a38aede9651a1fe19f97881f7d849de80ad681ab5fa8fd62fa4908cb1dccfca8da7021ce8567556aa1f68637ee649401758476a5cc968d381f1b4d29a49ee4e74d233bacca10d810c50b6681cca15322ff24c15339cd0746e3f44d6bc3d349cda5eeb5b72f95f8afb31254219244d53d0c44d520fb9557851b4fda898ea52127d675ab25832b3acb6b8fc874c66f5a988f98145a2ac6f559e35758ddeeba537e2e0b9b9314ce2d9a7b7086953147e7e3f60dd24f288cd78219623c72f3bbebee26ca28f4a2e1a7f80f992a5e023866d22d961ad76637dcb1ca623cc3e9fb6ee094ffcbd05b2ff61fbbf41f2b732f6f9037a95c16bd24aca5d7217416f551eb3ffffd23a9b203d6eab0f1a27a22861f7b27d6d02f6cf2b1ac6837124fd128979d375d554abc02aa5a807cc40f9115eb87a8c28aa43702a54e1212d5dee7ad2a75a3ea083720d8d712e4a5a540bdb5c50b2b2540bfc6896d1b8cde8974aabcb344dee0129b6d8e138329516e2d2e19e0185b1b3d4c6d7acb6868d6a6fec2a953d54470c96d097c348f6e37d07c443d7e86fe61db70476547277cf8e3d04d7f03c4859679a07018bc0c253f73d29475280aa046eeee7225308668428f7a5b21a35fee8479ab5fc69209c15c8d7665701afcc9d843e669a619e66d5d2d5ae2a2497006eb7edc7423cd0bc8ebce71d6ebd2e8aac015bcb26eb9aa7e8e23d8b24857802aa786c431f34e137113c533ff3f9c28e12b1fc9849f2370074d413e5e1f3c5eaa0af98491d14108859e1dd2ef2b2ba2450b78dd3788505c0dc25418569d432cb61e8d333446fa9d166e4f750667748fc22dfabbfd48fca11520d462aa56d4fa9f3ce8eb36cf6d637fd7e002e91149fa7f8a2e426061b0adf1c84da08c8786cc274b3f1e86543887df9291e879fadae07eef8e7fbe55758438e90e959722497b27aae6caa3b6c8a8f5e8d43e044ed638bc655411f1a25b54113923ad3347c9b70c33d74cce1078d31e6d4239fef170647d0d9d4485c89e4078703eab3f2d0ab86c83d26091968f24811fb0e0dbfb3146994ecb1bc60baaf5e3aab0fd71923a492d5a566befd8006934ee07a958c0177f3195d80e6074f84a71bf6bf3a1d880d07465832a158b23152a33ffab07b69c44d797fa88f12d26c5681c56d89631d22371d74c5e46f5081dd3cdb85b92de8a6f54a5260d420ae07872ad7a2568d388c31f49d0244e54dc5e42a433d379fb5d87afd4b2ade6f0b0fe203d7b205a05ecf85312d8869659d497ff93425372f0ed937e4cbbfbb0259203bb2cfc48a25a3b6dee14c4a1b04289c3811eb5cf9c67298805a6b2bf8e3e461354c58213773748be826d6c08ed71d3f74076ab10a14236e9ee13d26e715eb781a0f2492d8f675b33b7636aa3b93e566d11d7bb135a8f60eed4ef86fc73f54ae7e430ccd69e8da1027f475fa1e373c011af7cd3cbd92b2e54e514000fa7e02ab99fca12a3606c65751391ca3a270466c498cc7198f2a330ae1fa20bc73f2c92eee496ceb6da9179f930d113d03bab433dceed1a252a55fea164e553c349bf3e469637ca9f1c5e8e69f92197e17518d3979af72be1a26aaa574a3814e1cbf784bee021e0bd4769770c112e55d153d8778b020941ca2bee508edd3cdbf34b7cee9b2888044453d07fff2b484a72c103a6684851e9f61ce69e067db8661fd8cb61216d91836a7d85eee385d2f6947f125955a9489775665be5545a5f5e5674825216c2c3ca88c94284c57ef068662606c6d0bb4a4c93676b27829e5ebf8e7068e1b0e69bd1a8149941c130e61d0470ddd8ea13ecc128d6924551d83b7a71d8fe8d0a845a13834da72a12a2dac2d1869df14d0e2c6a4b41829c2130b21f100d2827c48b7178a649f11a15e08e0bf3edac8bd38af57b3ba9233704bc02caa6cda33565c265337179b18d92fb08f9dd7f0d95c36930a848789d210d1c0ea121edffcb0a7af06ad9dfdc00ee16214c7ba28c49cff7e2fdece638909d44c91d79f5640bb35b270db24bad52c88fd2ddda59abd08cc4f893b98cd44af5a63aa8a29fbffdf8c7ca9cfbbcea8f3a536166898cc7ae7a8a84f27b27e4c26fc28b2917dc4ecc6843565d5b402ec5d8b7f4d0b09adef24186a01c308deca708b5a72dab9c18ea7e682f95b9d2a317bca5d1a2748d50f9331d1a7acfd33b109bf1efb14b2156aa8c2220b9abb8bdc4d97103b51f31b555551260e999458147419ddcf644c3447bff9e6957ba168a87e281d9b0f50261cce8b476d2598a61c6a54b6d7a6f1a38766ba72eb11e95353ad5b60f074fa0512ce0d89b84dbfcea53d1683d1dd8c5450d81c33e630365e9fe05b3ded6cb0eb748401689d7864163316c968e6ddc28ebb1f61dd8ee9a690110f1002d97150c61010d1785c322e2a632bb6b72cba1126e1fb372c9655cc34db111c74f94d7b891c32256efd8dc4fa789f6f978e29e959c958a39bee62ee578bb71f5141e2be4cb70521f24e2bd8070182460ad219e15d25ee2c3d05459d2776b01806b7116d4de0f096be6212b222c10340cb35b53388bb7b60068d5ce16f866f9cfa784d64a9c1710ea123d19452dcb4ea7c62975350e4061e0b4d0a7fc1d25904b1d46d215740cbdf22776c0db8463396be5d4d561b6b37c3a285d74ce5f334668f77e368f704adbc4b5f2d8c4cd34399af3c86bcd5c0f133029e4ee5f2e1c5f6bb842f0be07814656964d2cc0b1d05d4c5cb166dd22b7a9dbb79d05f556c4e6def8f6528deae8490a6cffae17c80725f6fc7d51e6eeb5a4cea53bce63867d64f844a3c8ad6fb70978455f497a222492c5ed5d4c5074b4d827365d7076480649c7cff8e8cf41858d6754d2f5ee487d770b96d7428e74a83eee05d3ce13bda4132c03c3b57d6ee84b4ccae42042a9375f91958a601cf014cfafbf4c47bd062c54e15d9a9b354821c2f4395ffd2f364875fd765860995502c05584e6387da24d486d1ea134a508dfc49afb2204207d929d1af921e3e5d80eb838d69d11301ed328c2b585050c44d7424651a08fed5451fbb5e7dd2b425a8b1afbf7ae8d199b45b9525b10ce70960bdfe0aae2e239b4eb0e37c834994c40c85116f498c3934f185829e088bd09c14b7e7f7455d00f4c550daff26c98982a6b26a9270a3fa2a367758aa5117b1d6cf92652c5ca557fd0f9670d87ebaa534fce47c191b1ccb5e03e85c945cc09842b43d8c511ed0895a8ee3450d6fd2bcd012c5177676962f0fd33b3e637285e313a70af58316d1b1b5d922fb131c7f48967477dfce6918882284983493eef9179e05c545802e3b25418110ce84231d190ef5313b67308864e6ca93312db82e2ffee389d3eeac278bc9f19c91b5419235b0880e19ca27d0962b203f96f5e2cc0f4c22401ec326d3cf352fef7ef0bd78a0a4c112902974d41e0908fa791dfbd152eeb245e71ea4292d80774244bbabc6796d4b2f3bb9836017babba300a5a61bc5a3e032c4bae4a8ebf8260107601d63f5018a88d952cdd4b17e0e40cd05d2a7cb00612f3b09d7afd00fe5811e7fa1fd6a2803ec78fb3cfcad5504ee41e6f4209ac9e96fa53bfee10f64fab7010819ef3e758fbfee8660201ecb8add63aa6fcbc746b1f0039b581c2b1d77e91357dfa0324e6beb979ca7598e85727f098d562081dcfed6888d1536ea7d2058a4371f29ebc83acd33a49de88290a70a016dd4ad1fea6bfd9d982e7b8ff9748d6647af240b0ba41c69b79bc0edbc8c155cbfcb489dcf0428f1dcd7023a3fa4a08f9c40bf5744ec1066050ffa0dd59be46f97f04f244820b9b9f96f5b6fd465aad06de4c6bba6cbfaa5d057e4e4b07b3d17d13d78eda0d4e0bed736e04e0ecc3287b41bc67d422d598dc7fae900696c52ca60d221569fde9e38ba8e944cd04898523c4495b757a21a1f46862d9f8b66f40f70d1c4454759e4e69d574e377383086d3ef40c1426a6b6b03e9e1437c359a3911cf9d12371d43b7c9ff375ea89e0aa62c7ad6342f9474271862a4118d0f7cc9ae0ef36c8aa178bb89d29c81d852578802d1b89f9cd07df114c9bb5d7ee1024b88879a3445519aa12d46fb40c4f7729cdf085644337dd6d5e21b8d4585c404e7253d0f3a364c9e14f4632e634c006a2f8f4a2520c11dc2d646a21e2eb34768a648318e9ee8ef3734cb03046df1672080aaf26071cf4afed506c780b50083cac6242f4239720864d51743d9ceb24c960510afb910a62627d8b852e38618d6fc8af783f97fab2fa813a05fa8039be62d6e1519793389506cc47cdfd5e6de44e5fa914935c0d271a9db4b95b979896495a9443f228db37a40715a2dd20868d5cfdc0edc72762a5c6dceb5a52d1e76e455228a83dc18b265a7fd5e101d7ec9d14b4928bba96784976f3ac699bd8006f01d39f6d5d69f1e9fa9b74a482d3a73cfa87092caa514aa295fdfc13a9441a31b57869ff14d5cccbc5f33df0b57c8246555408447e8a10b955ec2036639716f7e9211d3a560ea64a5590b8920db53c6802e010eeacb56ad41b0e85e6060f5e6d16e354d101299f7f8cffaa726dccb2fb74434d63e9e40a2c056679815f08489244f18bf27d1984dbe8569c66ea30e1e798668160284c33f4a5dde3833cd9992d56da039cb0d3cd67d1b115ac736fdab122be5ce536ea093bdcbbf3d036fa6c54996f04f3538fe936e579a8bb77c913d2e02e3ec2b3c24c4fafea4e2e088fe2e3ca39b3303a7abaef1cc4780b9cb5db7f7d952b39307eacfdc37b7a69f50e4e2bd8573c788b35e81e6e7a6d2a678645e2715eb237d68df5e1224dd62bf8055a2c0ab834b2f55a0242543c7b047697bbc018486d6ea61c25f360231af2752f826efbe8799b8259d20003a4178adac74c308c5928d55e426e09c81aefb77f5c5db3f6a548aba46d36926228f6fdfa6f49f40d3b0a66a9313ff36ebc429088c251c44d493c8131ffd6af0d5de48e7f73bc86f90f0246274651740892be2f77bdcfc28903b281a9f61e075c80a81414bad753e378afce0f63125104b80fb80528f87945dba6a2379037ae01057555d96d5f17d6709c91175a331f5809f82dfdad7fbd0c9d0dfa90a2b0de15e3be44ee613671cf5068f722bcbb466c98fa848d8ba99733de68f5f9a70f795c3cd27d29c66074be881ef287be88b4bd3e4a123f222c8bac163f47b5fd15cbcf17052f47521fe9c4422ddd80de9c4f6f94e632ad2446dc7b7131d17d9f7b0cc886d5701a716fdb11fe8c779cb3b473d53f92cecc0b24917c1576cdb590d113e3ebfa525f94a14e2d3deb36fa9955e29f2ba3275489dbb0f383bd61c4246dc0eaa8074cbfa8a1faf01d3f078ccbda414148e5f1830c52b5918a351d5d5b0cd3e40b3c2d2a1db63bed33c59075f4a7657eb3252688aa099fae4d7c971197db802e2bedd700f460a958bd122b8ec256ba447cab8275ebfe66030ecbbcc50df1088d03f2c307d0d179c1d187ac2666252d62e568a056f1c90b3389340418df94da7f2d1ff6b8f5f97da82cd94a1309953228cf78df3c5fb5605f955d474b503c698501bb9d185c5fa6d9305d5c86ba592419bd00a4d5f4fd3a21a76cd5357445e326e529dff0b6161950f23c0b05bbe333a4a36424e98dd14a60837d5c9ac80c994d4c07e860f283d390c8f83b48447125c82c432b70d1785b99d0f0c3725afa3049a9b52a867a4480466b8d35ad38c36d93fe16f3b9166e6b9cd1c4d199a0d3c11a386f681bbeed1568b0ae6c2ca7011f0f9bb151836324d3dbb2d3542eb27ad909c2d55ce70b9ca41c48395575583526978a6b9cc35ac2e0727f446a12cc36f7bdf4a06202b53d8765ba5d3e053c8731101028418d86e57d0c8c345c466c0b20310258facace02586ac11056e89aa7eb77ef64b7e4362e75ea742e174a09164f7d945efe4f27aa76a02360c3d7d5ff0c4831aa9aa14ec0274319018d9deeb683f40e245d0a3bc9ca7f7c0ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0/GstVaapiDecode:vaapidecode0: No valid frames decoded before end of stream
cadc0ce360a66ef8d8419534e55d3211da2a60dfb7de2f264c8d9bd218e6431e9b6940428cb1b5e8295d229e272752b28c8d7ec2088c849f22959a83d5073e9f43bb796eda4a9f8cd4c902e55cdebaee90408231088c00bae613949e42015df633c688f663f23e2813241ce354267fc2ba08153015ae3fd9c11232f98a670def90abb09a585e8787d8f6e681c9b94b976d50e6a4d20789851aad2c50abe57a452ca717f255c5555401ce908bbda0c2d816ba6ed7d246fe6cba2b3d548455001347118729a0e347b74ca768cb225feced21a04f17a59fb44cad02580445dd65162d8d19b1431927a26dc90287ac984fcbe9a4104eba9bd228b3bbea94fd8e55bb7f5946028a4daef66113598f16b5aed459edac08793c74036cf3e0e9107c3437fe9c692530c30d2d3beb26b136fb54e4212ed85174fc9dde30cf5a98f6621b9f5166e987b5925254a2d02cb9eeccfd92660a9564a09d8d12f2714edd90ed2671d368eada2133776b61dbb404910595ece5c7e5ea9f5762b4b0791f1e556004832f176d7001000468ee3cb0, level=(string)5.1, profile=(string)high
Additional debug info:
../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(1300): gst_video_decoder_sink_event_default (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0/GstVaapiDecode:vaapidecode0:
no valid frames found
ERROR: pipeline doesn't want to preroll.
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640033ffe1612467640033ace80b40a1100000000168ee3cb000000001658884027fd3095140c66dff84425c9509aad37e9d5c3cf262e52918209c44324375183b209cbeb981a17b9a98bd7d2baa5c35a97d101bbf0d738ec1664a14e7158a37b94392c6a617b4ab4f87dfe1e4076993a8987b3e80b91bbcdb798bf8aa35385422156438322e1bfc2a1bd529ae6abbbcf524a213fb334f9f0f96be9b499c51add4cf55609f9e7cb80107e08d0dccb510af90960f2364bf2e43d20f4b1e9fe8baf0b7683518761bb7d5a646ffbd40f24f02cf3e017d5c746f10fc96a352c339e46491886c987f3eb2fea0b744f0ba865dca6eebfb551f9dc5f0e5ee5b8522e1dc7ea6eb11f5ba77b357db12059600a16fab678e5a739f2a5118eba378e443cedb310656f8bd24b6af76ce3428882e987e6f4e056e006b2f3b72a6dd21fcce1ced6c1c2d01459beded7f54869803dd035c266eb757ff744715dbe4fb86dfa723efa6c17efbdbf7bdea51add2b1a12017246804dbed6685a9bc55cdbec47acac7a9cd39e5f9cf6f65de530f43ca947c800660c2c58dc3f54ed09ebc4ea625e6402e92485abc82b08be6b2ae82564c8568c9aa7a7487411e805306147b5d4f2c1874ef3e8641b1ba3db5378ae22a460a7ef6efd68bf7f17c2c5246d7b6b5a2b5d6f4fa7b30b2183fe8f085fdee35dc86b0f4441011324322727447d95ee06f61d0c3dafef9366441f8584dbf0aa4f0ebbc9dbb718f0d80f5f103426ee9fbd81de2d18301faac311df1b7ce9873c68474f801b312f218ab8be2e30abc4b35ddb5f94bc7f4ced09c023354d90b86f1947bd8cf2bb776e507752bdada84e49f0ffa352c8d7b264cc1ed063eb995104efc639c538ca143358893e6e3e8f6993d66300ba8c648b6962bdd50ed57d47ef2f374cccb6c209fddfaf37286f0b3ee7abee5b7be26b1fe40d26bdf7fd1a2e03eb4daa3e18772126f843a9f53dafdd0c20eb4d6a8a966efb251a5f406c46d409192b0cf6d21cbaedd34446dcd0ae8c2866efa6abb81b4df7bacdbd8b5998450d0758a45cb2ca7deb0cb8a223de6b4166a58a2539e18208ea5a69b54a046c6be43de62bcb1f61cb43d41c1a7b31cccf29e7228279b5b6b1c32ed2b887a4532b6c01bf6c3fcaa0620c5f25a3e8802d7788a1084c2704a451b3d65954b3b104a5ac22f138388dec5e32bc97c8930e1a34e226bf7905e0eb5bf17fed4eeb35eb2af73839e2e2b9c9c24e21a7f3e700233aa51a3cf96c905833ed5ffe83605d36a836d4aa546bcfebf6501f7ab6bbce274ea370db83937792322bf146d01465d0dda95228c125187eba82c036411ab59229dc6a5b410417bddceb4a357b8ecc6c501f96079afc6b1bde12d1f6fc5748cf37c6afabb3505ab0ed3847376478038a82b49be4540ab07e758973ecd1d4aa7e7e23398d98df18f61eca88bcd9e7ee6c562f762d1f52664b6bf0d6d5221371359bcff475229b06489f1c08e9b57af211640911099dbc12262069c95138516355c0c2eaae44e7bd0f732c1de0521b084c1ea8f16e5d0624ebab63820cbbeaae1116957f58787a6813743eb48dbb9c80bc3a02ef396c9ab316cccc31bb09d5d0a4c9d94bc179d19cb0c8a51066755e6ba6bc52d0c66bca7f23984ac41b24c742e4bb7076bb10378249387c69f4fa3936bd2dcb7276ecd94919a0d9716d353f25c6fadf4fcc4f6d257427abf637306f622a1f8d69511acfd72c37c716b0c7a390f28571b474dd1133b547ad30dc66b3dc9ac949732b8fe47e7bcba1b79c4b51fbc700c2bdef9e146e2e9ac9e6bdbb17dfeff18b7a7c1b565fcda9a7c267782af1f8c75cc43f5a8a1b09762698069fbc49dc6ec14032814556ffcadf3ad28de3708d67c270ae956aaea5429ba5d3d4462b76e4628d010d4505566e6805e19635cb620510ce0cfb370f11ac563a237ad6d0904757b92c21d9c23dbdb74052743239ab70a7fd992bc92bc082f3579ef5fd545db75d78f1d259d1fc6758326e8a6092982885daf9fac42b9e35214e557bfcee298244e04257e4450234dac9163e1bf9577cc68b09d99a9245967a3395602779c3c9b4459123a41e68f3d08fb6ae7de736c84a00b73302518d2fd177138e0aae766fd6f28a1272afd3ca9d79028d6c48de628c883a51b021488e59711f01b0b33309cfc2716ec1e491afb702f9853c09d0620721bee8c30ef6aa45ccf3a1d0c306d583ee527d75ace7909fa796e34358f45e28a8642f913f76a5c7b63fc98477aeb3668db6d4703dbfb43008419b7c2871120ade5ad23995deed0d49f170ffa9a74bae18002bef858e0a9fb6ae4fd22d3ef25b30e2811cbb1d18cc71e4b17b62f04be84fb3345550e5852fdd901c52076545bf3d30b1ec29601d2810b6940dc08ae4500a78644d99d770f3e9defacfbaf010f0a49e8ba767538c1fbc8f7a7e1000bf585e0646c4011130321b4b335b74bfbed34d8b46a021e1ab1d0762754b2830e5ad330edbefb2c0a97d5425945350f31344e46a32a0e0171bc456faef1fcdb9a74f9a169370c6c16af6061f19b40d70ead3ec6164e99c66425803f84f5aba968a53ee3ec01bffc51bc9f26571aff221eba3ed376da435f7acccd1f9aee01dd36cd73cdf2c74d8297388ba45b0c4168666f32e182cb44139b6d313e843d97c26b21e5db3512fe17ab2cd5b3cbd1dbaeb0c1674ef25a4a1ee99e4941bcb1677ebb17d754bec1c784a8de50ad48033e2856112188a1237739d1d9b729f1fd9cff5eac2d0b61a2279eddb3772635ab31965bfe80982fb2df5507f5620d05f6bce764c3093fd0edfd7be04d972016a9518ee2c7fac2e8024ab52ed65efce4f3eb0144c3a63d6327cb65d14d4a739747cf72ebeeaf7c371aba794137e33bcdc99a9f8c203075237cf313182fe2267f4a3c16d17b3bd341d5adb048dcf506327a52e2436c95bfe741e14782ff91fb4b7b50a309342606383e4a647d66e55cb57ff61049cf91dc263a3ebcb9408aeeddd91fcd7a4532f88d0bab396887e2a818bf411cf5f6801f31193bbe0b012f45f340fade9625e05ec39d69208677f46de37a3177cf68dac7a818e6e41ad8445330a989f77aa4892a6145d59acf71d9452bd37c49a7258cfa70d3eb6c0193d940adf0809864a610ac148d9f6b2d37e0f42c54f5cda4f5ee11e197ada3f75c8595f34697d9d6f925d39eddf0ec0eabe1ac46094c440b9a9d075123440ec6cee450ea39279b48c95fe50de204bc5cdd170f645f6d69de6fef7df0feb09b03a8a9e0787a6b5a4a6883af0351ee7e882e9b56ca90188284803d50114bfadbece1e8537e87fa17d574df611cb5c1a1e0923bbf0bc56dc8c0e51b9d8aa18e27cc7e6daaf7f2238ef8e5dcce6e7066a4f0ce027aa237f9cf2f48ecc9f966975541c3e51bcdc253030b23e1e004150b7cad631320ed6cc2526c864e6da2c101d6762d9c90c8118bf6580c016c7fe536eff63903068b6a724fcf8d6839858011091d1644c6407ab07f3d7983d0f2386146e1a2f3a24ec02d6e533c7ddec072e70fe650fda1db677868dbafb2c627ad26d2d7582d4ea82e7529b6004f14c2382c35a66b29ac6fc8ae8b7f4f1f1892fb140934a6b48268b4e4472e725ac2d394a89aea4872a45ccf66b1d572e8796bf9de51f027c7bc23d5f7d9a845a6c82282e4cae547e87f0ee594be1507f1f86efa46f9c32eb2ca16b0c47ce5e1101548712e2530b46cd8cd2402d34baac37142e2c80548be14e9f7aa1a67a67d6a86cfc013c601ee2453865f6addee2c2c6e4835ddc3768d7f78204ad939301aca0e77172f43e829251a84edfa83f0f9fa775cb05f6f9de8ac468b5188a3bab572d7244fc098abe659239417ca27bccb47088fc804e430773ff752474183a8306bdaedf8e92828d72834ea54ae3d5725e9ef02c01e80d1253f1b1adb019e8f3fef6ef4aa545f2872eb8afd87c3872143b8e0160fab4a97a2461afc86ceaf8d3516666a7ce69ae0ebcf31e3e4af6e8bc599c7606a154d874d142719590f2b2df02822409d61f082f07744803f9d086e6c9f8fe8362bf546741beda2d22e1094a1e8c713b4f98356b4079735f9221dd52c55913a3d8f1e7b0a9e6ce09f8f4b49c705562fd16b1eaca4718d487a4edd7e73c56dea724ebf23cc4f6ee0d6c53b2dcd87f430ede1afc6c3394369848b81dbdc1de6386e05135eef23c1ee158e77aebf3acd4c3df62c8e854c097fee76a038971cd4dfbe015001ac81c6205e20cbf7db3df7713d817b24e8955c12ae3c68e2ddb7c308c601b58a0549ad11b781579d326d0de08f9057c36e7843cd014a00d17250b726f59736ee0783708c42ca7313466829cc6da6880c40c1fac1e11a0ba01510f3037755b4fa0345a8d39d67e0fb21d894cd6916515993f5f15671deaf3e6504a621861a2b078cb3672e74cb82a97cf57bbfba81d8836a4baa8a5b0e360470ad3abd4c4907edafd47385d08227ccc65689339403b25027d365db0b548d6ec1c4e8cb45e351780b32fae40f89d04431a8132cded2697adfe64882764b32fd023a3edbd2a91262f6eb2a48abc5ce824f7416121a7c473f76c27a8956978eaa7cbe63c979844c519249a94a78d4d3b980931db42d9347929e491acf65b4295123899a1b2eebb23ec5d68b600f8c4216a6fbcd7fbd8a51fc749e345cd8f11772d50199efe8d9d9fd68919317c0b6465bee685709e285cfa889a0e42334861c588b20f0205343dfbf0871f7c1bdc36fe482d29bfb81b2422d8073c75ceffce1d2616acdf8806b1a4a687c76b86b9452fceffb78fcc5fd9318ad5fb5cbf0612017d00ef0258868ed2064e2b59bd474c9d21a5d96cb2a5f191e117898aa38f22568a378674840b6d0f6670dc1668ba7e0f2581502a1915a535ec035fb44b3bfa41abcb491d7f66421d4db92a3efa61aef243dcf6de47488e7decc3401cbc2102ac99bfe1684c576167f4ace4d7abe43fac2e722fcc7ca3ff428d391526b148079f68e2b227901bd6ccecbdb8eb4d0c588734bb9dd9a41b0e47b81849e9ca5172d37b5c0100c514f97fef3b4f4e68431105ccce54edcba4fa1cbbc331156369944597774509c706b97bbd025300ffae48f6b8abea662bf36394b6c6bdafe777fa4b56a481c765c6a286c4a48472357c79e94d8fa04b6a1438f060a7407528412da47176e7db38f1f679f8bae6e01fba023ef5986d8eead8e1b16d6faa17b6a50258a30bbcf5782ded1f2cf861d8ca5d4b42905464eded1059753b499e2fde2d269b33b56aa903ab01f820e4793789430e82db23da158b84817c5a7d1b1ef12c813beafd106c68b44342542e5296ed5a6e5b7ac3f66c17b26356b3eb28867e00eaf505986fd7d1830fa3936a0cbfa0c44c3e0b392228556044acaa4a2104e07317c432889e93dee7ecac690e5f49938d0689a6b05f867f8153a2d75eaef2c368bdffdc1df2a6b718d83b20fdb1572315cb5fce357a9d10e2ae7df6959b30a5919500e9bad42de88498f140b47a5972ceb048c6906b705396fc6672e2a1777a082ce6c49bec2c1f5fc27028d4fce4e7a05963a1969c8c82b70b1ca6ba8d30401e36b36a2a5813ed88107bc2bbd2f89dd450fd9d95b4b6e58b52c542b4a1b55c401e6eea8fd9e6aa5f4d93451e7f600f0e4cd3eb5332aeeceedc3e75209f90e94f5ea1af820996d2c05bf806b5249a91596c5a1db2525f92eb8a9c41e71164ff424716b10a9b50d5cd9a74eaa69378e35b85c71901378b18fcf0e0c5fbd3a6faa778dbfb4318d65262b8ac8f523d2bf7842783b480ebd46d7b137baed7c9f3a30383c9454e7aa39166d13bdfd7399c89cc67ceba066de535c3f605a91583738ed96f01e8b7cf38a8a0fec03158852c11d8e03d6e00ef7b52a694a9ffbee3d87cef229adb2d0f6f3a7bad79f2e442dedb9bbebed9d70f631482de829bfc66fa01aec0d32282e1b514537d823a71d31adf5fa076a5c0a7ec27ceb9b3f55fd2cef18f51fc95ea90be7abd436a8952fe5436009f40f6c842d613cb95c6bce122bd5117dd272e1b8eeed1d3a9e4e30d6f143b2f59769d42c6ecbf26b55d07024c816ac1035c2def3ce6bdfbe5325d1927587afc6ee8d353cc4b6575926be6c32688a6829095318f270b47182525ba7046b189dadb71d6669b76d54a170b385fcb6412000e7574062ca93a321b3f7fff41d0d54fef625ead00930ebf492c732c5a406b58512af888b3cf2c4e7c2ac6ea89739736b91c385cd294eaf3d0ce3581463c89d47d02257ac7918d20be12b54b5c53fd66751af867d8824704131b15647f56176f023dd4f5cfc883ace202c54bca988390e36699ff6b77d5797403fe3cae44eb371d754d45f06fe603cf21f1f081c8deff7e4e71b61be23362977eb4c7d11ef3f0092d54afed3834268e6d5c05bee70b8387fb30411446a4c09246bc824468f987bef8673e1298a89771cecee48ece9a10b39d63d196f8b5382e516f6c73e34c3ce717702e445dd641711ccd1f2af24c1ca9e78543cd4b04a2aa9f5a52a12f0dd2c1bf696029dd8b18fea0fc6afc6452ae8a70db5da1daae2dffcb98d290213cb249a0d5acfe1c913c52a540d5a101647686f637b3635ef03b457f72bcd71f50b11bb3d4515a8cb05186df67b22a1458dedb6359f5fe93a551f493348f971d25132237c79d0445f169a037a3f9c3245c15e8eea2721c059743eb0104fc05bc2b949178587f821fc7c98108cc70a50ed5541387b05fc1e7ac028bcb81e43529fc17781e84a7a4fb7618ab67ad1306a9f1514cfed114ee05aad202592d03160300f11c21356e7e37b930d42355f1f675dd9477e7fbd64e82c55e994f6af49b690c40e43923fcaa71ccf4dc0c9a74a33741d3f2444aa9e402e07bf37347a00e45fe2f84875db1e266b9662eccd05a9b41cd6e7943c80471a042202b00149606989a7bb0e297fabf9fd080671922ce4f12b8e7137280b6d651dc2a0e90268f720fd4ec75656509e4bd00af74147219db0dfe4ba0ca231224eefdb754e00f9cda87295cf033314ebc0383d4e0ee40415db245323f8d93a45c6f8c31c38461524fe89c8e7962efc8fdf0ce948dcc8592205de9a395df27df6290a84765213c1c9b7a7758d671c25996fa6351835b77f61564e54ff6d27644bb09081c810a87a9f829e20c4994c9319799be0d1466d1c2b889ceb7cb4014b6cee7a6f7e7826976c376e29e260db164779de3912aa6826346a685c7882984929fb12edcbf80f8ea819035c4d002bc023c1b01155448a584d86c93eca95a77425b035aaea8efb46249168b3c2c9de4acc8b835337f3fb5146ba6b9b324e9508dd949ff26e9d1c61620c14c46e58017cc7e0d8ee17631d72cfd065dcc23267cd86cfeb674dc0b979503c22db5c8fa558323b5ac07cf91a40068c4a898a681a85cf1b97325bdc92c249d5d1de3cdcf2b654f5a232f30b1d88bce954ef9d8fa1da5de0d100a94fa3f1351eb42f1d2fa8475e220ab051af76907eebdbe735173bcccec087553b0d883bc62c7efe62fd773956902fcfdfb2f59744d760d7359b67241c911aadcee5d8c0409349c6af0bd25e58e2c9791426733019f109101499dd1e1aa02802312aaf80725ec64616504d014dbf71654cf4875050d7040f62128cdd991bf8488456bb1011af3a1b71252d2473930250fe2ac66fcbf1bb5803d5074905b9b4c199e51b05ed606151a9f53e457fddfbdb4a066f4aad7cc879c5f63a30fd5d2d3263644c7e8258755555876be87236508034100e37de973756401fc3da5f7fd7b704bf7bfa540e70a53dca6f5a5fddb2653929ffee8e2850d94957895aa832f8bfd63e9a9e2e270c2fc393387c42f4710e110563fd4d9ae0da005fe2a413328d163250eee11083add0149c0449cd0e29dbd4302fa04aeca44e6688c09781fd69616b220093576ccfd1ef0f0879ea5062fe13de3320e428c3b624ee72c1db95f7dc097b3aa58941bcb3a68239a67294d73a1914158bea59a789e75ec4a6aa56a4adeefcaab6fa10933616923caa0d91333dbbe045dcafc6b848894c0c22930704d81edcc05c11d86afb6b5a445cd2bf7852041857a0c580ebf6ce42569a50ee4698928c05cbadd5682b6834c0810b475657f2437574e9e638741bf084f34b2af70b4015d5167e5deedecbf799650b9cf4dc1fecf629836cafa521b35c393761bebbba7c8f6dcf0a169b195780a2762e015082e84f4ca4410912e4d196d9f637dec16916f93d27fb654115811b5bb1a2eec9fa38559967657b30ac792ca2d487a056752a7b40abb35b96d64aa53763e6aa801be4c04ee1bb1dc3069d94c9656da7f0a54f6752dd1cfaf31f1da4344e015f602c21edb95d8914ad343a2ebcedc42e3cc44ccdc2a9152552532e1cf3a3164d1b7442e786fdaee2295da572467aec61e3164630772be5268965300477181e1d00f3c869780e6f395614d70d0225120622b6c8320e33278601c09ce3578a70d84e2a0f2df9c6e0c90e34cfd452fc0f9f8a1d3129d96dfbe27b8c3a0d1ebaeef4498751ad080168cc4cb7fde5b1074abb4e38fe89279d63c90c7423af62dfd14868c9892b573a3cc3563a75a0d939cf6d014b12fce763f3c57360bf089e94ef4c1cce014917c810ad2fe401e1ab5845eb92a0ac8706048124e972c3f4e0c9f4f9af17cbcf4dcd831951c86358f58896d4a9779f9cbcdc1df940d363a74f14c730bfe42efc6ab09028f4d6fd10c630566787d317f244f168da954b3be808a631f4c3560438061624bcc31b50dfa12130dbcde48ec57a4e2766752bf88d744a45344a8b9ad0e1c9cdb5edd7c6dcd2b6a7b5023b89689650fe4f28897ea99be536d9d9e001f85f976f0dbdb4882b6741284b9cf17813f13434798e3b93f82893feecf03ebfac32cf6ce101e702d321dac75f84216301ed13335875472d1d9bcb8701c419b1a7806ea42822cbc2b50789f05131ad0555c988a0b85c0629128834b7f479f496fd71a11299e404e5c51b833426e86bf9fc83194755da0b07be913bd2ffb8dea4fa9c6f565d064438f43635b5185636971d6bc7c064366278325b6a839926fdf0925ad2d4b3ab27ea24f36f94254a8979ac1f97ec5048ab811b61b72d4b368f88cead9aa95ff998f459933feb03790978553de6c266c51d046c12c0bdad3428ece630deac32ca3652a6df26aeacadb3b65d8b3b3c3eb559eafad5863bc5d73fe61e3fdb742ea0b5bef2f7f3e98dc23f12ad9255b6b9d279b7613359f1d3e82cc6baaaba8d4845b91f7f98f75a07d2d20474729124799b4cc055f75b1ca4584d253cfe9ee99bff17082576d150ad5e818657ea16e2c0283763dcb9acef4cca3480f7f1aa8a29ed6a29ec7f1eb7ad7061aae0ef5724bede6655f321cf02ca220dcacaf2fbc5af0b1426b41f896f4a5a9b0de78aca6f6434b5b441591dd7d3fd3c798fe599eeeba6320311e2f4df7a18f2e17943dc4c34492eda3e1fe5b30e9bba6c035b72d6e483d185d1b3af29732194ba8fe68a68ae0be8735546fe94e66de79312b0f700ed5d19910b4ffd51b74be0f1bdbfc44aacf2341791d15edef963d668349a1cfb5513a81efbf4451098c94d23037c84a06b7f253e15899c99c100b186a20694fe00d185cd16159db78d073b9d060fd1108523dfa4b553603b800a05001ffad4cd47daeaac224dd765f0de845cd7fea5d073f787a91b899721b82685efee9bab1234c9a4884af32f0195908de668f7e080e554dee5d1627860db2148a23a4d8766c0949a3a479c482b4ffcc33f325f3f3a4f1f23db8f0585872e059badbc5d7610c42d76e00d5a83232d3882dd0d7d1fa39861267a62bca955493803b5fedb422c04d83ea1f1f731d8b37db896c2fb568e97667b841cb94151381ee5096b75f929f661115f369134a3eba0c771733820f7ff92aab912acd89a134f3914b04687b3ae75a82cb8ffa628a5b10858a4bb67915ba8b95da2b140a86fa59bf92cfb2f58ebe8874810aa6aaabe548422a57d2e62a7650c062939e5011be734bdb822b7e353fe239852916aa42a983c92ac8e9ac5b7a328ccd8d59a006701976f9377954497a06c40670a5598055e3f18ca051fde440f6ba62832da2e925b1f2f870c7bf5cae7ea9f3db5bff18ed30609a7653edc57c2dcb8848e84546d3f80d9931ea926936e75233010098daece0026ac60f3dc4d9929c46c5534f60837f533680cb0b55ba52c72d1337e706a1505b2508b22310035928212b234d4f95acbcd76b2aebeeb9232eb9aaf45c0a35bb85afc3ce2c4e503f89ccd23216c922f691111a746ad2190899ee90d4a5c3b970171e89f9bb764183f35ffe9ab5a3aeb84d4dcc093f613b94b01ac355b1983f0def905e7f97beb009d01d25632909a360a7116ebe1ea61b8d2c093b72425a644c86da269ab7ebdad6671510b2edcace4d7c517880c0aac039255f7e1be63b2946d0f5786bff2e4a56698cd7ccd2b1ecf2b955e5d792c199668e694d40f00942712f144cfa33a0e29125dabb47ed7173fe368b7b2ffb73e1f795a13e1b127476ba1dcaf688e094fae0936d2058dc251c9e71ca75b0474c7e2294535c9d10267cbd6be995214be14b048ab2847b90c51b68c35acd2f49cdb2c0c2b1b79d1a4acd8c4335bdcb1f855e86f659a2d55b509c4002a86af40811a031c86f6b2e55338a5dedb93cf43595c5dda4fc47698c5a7246274a85d717873314df8c26768c3e58cde659b9bd8cf22d4dfbc66cfe165e1d40c36378692188910a747cbd981181f6a34025b872bd8a8db638ca915162f7f22e4961830f53d85d9dca8cf6c47bf0963015ab012a672ba1c7bf700dd0457922d68f97d6db5a58788f20241ec65ff0342521e45f861d6e05bd5c7395231645ce64004dc630b2b5e5775e7176d5056c3aca10ffee21c567a34e1bd0bb87ee5d96a6ff8461438aa905411bf2d611499be53cd7150faa4f6765b1ab9ca6186fde7157648e8d46f4de4a931c7a88ddbdf8dcf67fb61f9cc2578887a6a2696940a93cb2b50dc986a7c3bef5a6f86e8835a284eb847a3505b296e6dfdf7ab9160e76b3abdda44b4f88be777c98f15df18de222008cf87323955b1fe8025ee7f26c90e7dcec17bd6453e97e2a6113b9f768c35a19255b70f10643dd3e10921444fdc42fd0405d59c7eea5919ac21e821d0b1f982bf60b377bf66d41b21e5c6f41d319416cdd1317a854ad0917e7fc561c8b5ee3120e255f9966a410914ac697597eda6ec0e6bed453a1ffd600a0162fddc33f486b54992952392beee159231cb39f5df0e39c244b678760a2710b76776ebcd64d1bce222d8d2903f1ac34ab9ce9f5a0337c2c72579411c8283a296e4a735c4d97d8aafa9aa603d96ca56ed210c95e0620afb3ca573fba612d7950a28f2b0900b3dd086d89ea907c0fd907f89d24cb5abb191bf7538874e6d2658f0d2d51fbe9b3bde5ed0b6111b34c4c9bc59960db532b129d4ac0237f9c0f8c59e3adfca8249069da9fa9a5540be79331bc47cd7f15f65e3b661d8b58032afd84aa9b0bf3d61fc489f88ce694647fe6d17612c69a3937611bb6cc3f5efe508891e8d6393663e8bdfff6c4527c2c15a72bfcb965d505dd14527c7bd9a0040e151a5882b8b81d76e9c4bcbd34196b9bd362c68f6771c4e00de08fa2cf3e3c94dd41470be5f273425efcd55d08c607da6d0ec2637090fac75c15a18322f9a6314d53506b3ca4d86a5a5f5919fa3967943c3bee3a0c5b2bc362009075d5a06347c57ce67ebb6680157caae74a364165bf8a0293d3e41722090eecb8f4ea01421175fdae68d9bb8c56ffcc967a17e64812849fd61ee1bbf92b4ce814f65503f94b8d4a609cd8043f9ace6628a5781a55ba69d886027fc08951a9838c933fe28538e2e0cc5c0f9d9d48b9448b57daf92a9ebe8f1b15b4e247b2f7bb9cc176a2c68ccfb16091e5113d9afdcd235f3d05070fc738a57591f66d12d60597e5da1ecbc8d5f81b9ed6bf7af84ceb1ade07abf69769c0b5b42881b2b5444ea59ab848a40ca505cab38a284ba5614e3a80150913a883ca06e2e3985bb7f0b088b1edf9db8afff626a1bccd100e0d0b54d62211ce146ceb9fb8f634c343953c0d172a973a2c90effe9dccd508ddfc8bc3059a99796dd8883b40681734c58a89618b448fd67429cf0ad62df514299f2a25e759a359b082d4a9ca26763d7e142353a8ff3720127935208896cf1a9ea449c63d752b35ecc7f64db190b73097c2a19c631bb92a1b8fa250f5ab1e3fcba9fa224144573a5eea1c868bbaf96e3261cb7379bb541fe9755745a08817c383523c28b979c6b8b7baea12dfc721e69f14a6895cb55c4e1a0fb534c14a86bdcd3891f605fd033a9d1a5c772dad67ea000e3e317e9e2e8f028fdc3d6f912c14f4e3e9fa1691637262be7493b274b273008037172a50ebc9a0d3b230132e6991c5b5ee5e623c303c38d370549a20ea4d090f71c3220efa55fcee58f1317c4e7e6ae64cb6443ef7558f757b19584684b6b3775ceb0d5bcae0b7503c54e89297ad275b1cc913055be8191dc6b01dff7938b7fb738f7853f436a785e15f02af532ebaeb46136b51cc944896adaa2bb20f42804a68cbe2b187dd1f7830691fb9e5c1508ea51f438179ac4313d45da72169485c9fc7aa1eb8fb6ea72c2a766fec4be537b00c7d8241f2d12c603fb98fdce309c999177017bf657367535555fe53fef2ab15c152bd742bffe7f7214759485507a95e02816983b4d4e7d642b871f373160e7557f8bb0a1a8da1a069a745122ac8d2b44b5f8b7dbbbd1a4225d3fe0eb0ae3b055f4c1376c04ef5814c2001db4ae3832968b28562527beb438bc2557b67df162d147cc9476eb2eb6e92ecd5aca1930fa944ef2b69ec53d2353ef6c4a7fba0b17465151623f6686cc3109756b9b2a6ca6bd13680f92117fe5df1e0138f653b2d9a4697ab902a560c68cc95b2a8cbc1b65ca1cf8b3dc6821fa3e82fab10ed38b49e1fb73ab53971649616a6ec405183a409da0dd264620b21c9eb36e8dfb547556d531f45e3b5b9d67cec5aa2f2453378668a46c7118815ee4de25c576411f57dd00e9cb88b4a91d55c56588a4d6c89335451621a2d0d1049112ed9ffe541f14258a572f192134002e14c558df7aa9f2ae653ae4063b83029b65876d69c9d8bd1fad0a11879567b93ddbcf733c07bf308e63d6c136e68053bf1c492cfd7261f6c25f74c04c99c6096048c93e8f2ba82db121d9a3cf463c36df09fa84c146eac4990619afe34b2027f6eb14354888fe8521d4d23ffac40bf81aa6e2c2c2348a4678a8a2b99ac593e68cda01a7ed75abdf2818aa90bbfa04cfdecd6bd5203f09bc7dc488c7a7be1ff4147a03c46312f7011d7038b23478875ff8866b211d67a0e509d5631a1b0ceae563cedd492b29c7d50b66d3c162856069171e7e9487bd592bb8976785ce82d6d6e436b006d0d2acafdd52057fab1ea733676a8693bce93f36b0b747e542d7bcb79389f7f2fec627839eea1bad7fc90aa2e9122cd8cdb399c6a2732eac8bd6362ebab210dbfeeb281c51f6d431e41e9c15313161411eb8c444311f68245b1c3e107bb9d721c6721b9412a120bbe2ea3bcdb646520efec281b34ebe2ad8002615faf742e9ae50e3f65a1d747e274f6a2499291567c0806190ebc087e8ef193863a990291fac120b401da2b0a6465083d076760e1d56935bcc07dab2e46d39e7dbb4b0dd5a31f499e8e72ae249951f442259e5f715a2fd5b9b768b368225d63f9a6e5c5aabde66e4f058ddbb5f48e966e6bc6d5898d87ea6ef4945ce0085307cd77133f98b6f73db4fe95523bd41aaf42aca5ef8378e6c347d6a62557b7da452397f556ee5f3eeaa65feca60f3590a4df4c8ff54085d86ff0338e2208925f3261c210c9deecd1ed1d2b20c6eadbe9c8d8b2d615adc2fd2a06f422c34737d857f42154d2e6565c0ca6974f29c79bd45153ee2da86e6f8fd7f9448651eb61c335a1db8ee0f616b774631c6230aeb42de2f47f3eaa92d50fdda7fbddd0a68002363ccf7d094aa422c0f4f61c3a71737f60988e1495e32617d2168f44ae3b53ce5a209930701012671ebfbe9467f6f9d2cb7754033284667bb79690a38367acd8a6691dd2675fa32099322338ff9632fa96a846e7996b9f37598029605d8936f16c03fe80f508cedac4b8c5352247e7bea1d62f2d31e0f4275ad9448fe9bf2adaecab75558ea0d43565e181aa9f476e7688a83b4ca67a269b047e8dc29a12b5b97b607ef625f51f06c96ff6f69f96c13f0ea5ac96051608ef0633f22f66366d4d002aadc16122f8c111a61772476f382d6967cc6db3e4ad6a855293b6c7b409e2b28725405d1c6bdbc72eb310a62549c38049641717172db87319fde4fdf7fca3137cf2e83be6340ecccfff2938861bf91f6c14e1c21008d4ba7bc67f73d7fd817d51c562c32f00c10ecafe6ad351463b2e02856b6ee0960e30ca678de7fbd21040e404a584b1d516a52db2e9d080dc03856a96ade64b7a89010f51dc856f802ebceecc97e0832eee3e46eb113b8657dfc1ad393419a9c67c17d76db2893edef0c68ef11bb11846aeb37fc346e7068cd1fe99415b8d4807704319f48301843115c4b4ce7295780d204174fa2b7c4728e1222c9ae30cfc8bcd6faf80dbdf18b9101f1bacbd40b88b2126d41622605d22f77486660d5709d664e93b3316a70fb570a06ca89284da587c6613b85053d5204633dd266b7b6f2c526edaf9fbe1cf019f425c5378872c3197f34166d1a34f1f689fe69efc1b5749cf0cc190e3a6fc2825ed630d257eb8f2fbf46d899a9387a27b1a1c3dc02f05130d57b16f829e3bc3cf50fd403e2ffa0a496bd8d3b9b8fdfacfbacba44ef42363e118bc5d37612dbbee74a264267dab95f191e37d58a9c9205fd51961d97165cf47c735fb1e6564671b21edc3e906be9d5a4a852b0ba5e837bdd4d85483e7beebbc17d40001cedc1996a21891cc98078cd405d48c266da9af163b9a0cca3b0f59169cf7242e8ba57db5cdcebe4e858b3889a0c7854d0d3be2aa307eef669e1cb991ca66d2c16ab335c9184cce53d34fededa48cdc377f5e19355aec91d5a2892c65ca6b2c9a7b4c1da629b980806a0276513956feb71caaba096e77b0ac323e116245b6c5c76b3f61901986a69d62ddf17a1e95f3cf9ada5a71eefc7ccc1fe1a139d62adf83ec4e92a8c78a1cfeee9cca43ae1594df2ab3f13657c5b453171c4f3c099a457ff7263e5a253031e8cc41c2ee3dab56d950a8e5e39ff7c5671b221302f8ff1018dedf487ea3e8b725f5acdc0afe5f451216b1bd5f4acc7be185471b408c7121b999550ac4d4f6f01df3b1c6c391b5ed274dabc8a141c3ae62ae8b57e74d5a2d22ddc5e630b7c03554479232a6a8024c77fa257454ee9269a16e2efd36ccebbdebddbf72d2ea90d5b39bc41bd872c85b1f46919a6d1b111602b7c841644201e25fcfd538e288c909cecfb1e39cb8a340fcb2ee8bbb68b1f3e88631ad0b511afe841459ab822eddee15c858444e37a1ec85a2dfbe6192f869a064b997cf92970bcc02601fec0434f1babdc7c5bf5ceab6bfa3883e863ca42961c8456234e63bb9f50d3b83918d495828cb3689054053f8dd23a315ebb922a748f815cd1e5be1daee369117c8782af0c6a79ce0eddd27aaa146c22d9e6ef1a4f6a6812f0d7fb7a36d452efa7784053243abde31f399c3c6b8f173e52e0be01f79ee6aa902fc77a81483d4185888a723a9b0175621d70ec5c49bdbf2693e6e770683acab0e42da50523ec7b0f5864767e7729ebcdd5c9315acda86130b1894e7626d80e0eb90594a01a64e2fbd8b2aa67e4d5f2cfbb479da07b4794bbb50ece233e63e159d1cd3a4f35d13069859b40d65d6697b1a8699ec66c4a722ed5738ff11e28ca2c42f37fc1ded509e8835f3e9f173718fbe63db50293727ec444658421aaea8d7b19adc113f95faba1fb2135a755ecf1549c320eb74d94664627ccd12310fa6cdaecb54c952619010ddc33eee3bf0dd2d769ba73a06dc6e68e87754a089f24f0dbc966573e1883b55f3ec989ff3cb2dad76360c7e354d710241630da2ee0d94596564000d741a7825631d386a6c8ccfb31dda3e64ce63078c315523fed3d13c0164b8ecd4e3b3e7ddeac56c4982af3ab729cfb9f4d5a983022a85ef07509bb0a43c8d86a4111b70ca9358070f134aacabd59ee60f8cabd6efa616626379037307a4d543768b02b8fe640179d10b549584b6333ddd17540cfa3402d481a2872aa5b85d852e7e80ba190f8fd5bfd2101d4bb441311d01a32db3d14fc5e0859039e40951ca370fddac16cc489c5cd9dfe70631c6d4135735e4d1fc8788a0c03bb7f3b2aeddc0af123df037941237b776a5eeb8bba326b378010510c5ccdc8a23a1ab7aa161862e6a34f6a28e019b09f71024fce594d14624ab919a06ecdb3ea3fac5786e1dee6b66a39e33c2fbaf1f0ac6208c3b5ef41bd2bf232072d5f721f9ed3fb192e81081f20925131cea33df342adcc5cbd09c425051b70c7b0bbba5c261189b82f28bc74f80e3289481e5962864f8ce17873d506b553790554ce52ea07cf4a673fe491b3acc52524f957a09c437a14a8edc3fdcf212844d602c3bfc016501bfafe70d33ded21e37010c3e25ffe67d21dcc282d1837c82c601db32067f51d3d4b3d6e6db757ab7f2452c57dc8411e3c205bd4ee6835d7adf55aa84fd2238474e35ca5983d390399ce7627cb48ca37759dc8ee084ed3cc75231168287133925fa85fab904f79a1cd473b3a8b5eaab76670a77b8979114e9131e23092b504c68bc47eb459cd9e5de5ed420a3f99589ec0979914025c8a15845299db8e678458b243c623a05910e2a1dfb34de583ec0617a5b786f41cefd0f2a88b64e6c0ff37128178621f4f38b46d768dde76beca1c29c905aaf8af9657582a7745d1c96147a82d1db2e614b11b947358936dc111433b4f06f1b8ed73a26c40b4ebe36b616eb752b5a995ae0c3d7de6974c1bc20aa7086ed3cc389f68517ab9566ac4cd1430b87a195f54ff4f2774107228ce9843850ed8111e1d22b05950158192a7fcea14df77812da9ee9a40058dae52893fe839b83698f341e039e78a8a792fb3c39c3677fd9d931c69ab55ed78ff65d13f30e46e147530124b9f5b0b00ed73a6cd46f03cdfb4a1626dc5ec807ead4412b8167470529a2e882aea94b42210e0aab656fb3fa0d5a70208b51292c6fd02f505b5fd2681ba01eaebd2f9ffbfade945a0d77cea9b472e75e7e98ca8125b0d90832d8c5905f739b129922669097687c9d102ba0ee9137d2fec26ab91785fabaf7de34fdff30306ddd2df32a517069b28fc3bb6800aa6c81e32cd72909c1be761ed9ae0137a572f5db3cc88b35ed18488ad6e105e1540c615c9c8836c967298cb86d943f3654b2f65c6a3c0ca0fbc0a7e8aea377f3f3ab285c3d0920f81098abd8d28ee4df9b109ed02c91e4eebb08e2c6cd79717353ea0a626131b5af32bcc689a66c674f2720dc870bb5aff6374652901371d6fd7931913c85b2f0ecfde4f273522aa2649b81d6f2e269275ceb2d8c7f8edc1e590eb454c5cc655f68883d5a175d8aea0d688d265b078c97f13b566ae1e9cae551542c9c513188873dcfc549715925ce869861654f67c1a1bc36b5ff728ea2d2ce83411e90fccf1881e7296e5da3ac0bb812c4b285cfc112d5d61ef85abcbc8d9c3b3d6628cc6131c1024fb4739e095dc155049f40d1c393403d01ff8cbfbf8dd8572f5ca606591ae26f78e985302ac0699b98f315db0d144c637f176097e1bd1538c60d819d1b8da508fef190b6ece911949e535024e0ee1cd139eaf3ea4c1be6e2f7389d393ac54fd8fdecf5ac7a712def491ab28401a1e01e8d1bbbc0067f2481b314ef11a142e765ee68164b722db988a4d51daef69179954336a5722754bde5a0426340a68f51a35edcd39b747a873409e3ddf925719873687bdcf00f0259a0994582a4ec91b16bb431b2cf990ac2d3b7746c99bfbbffa15423bd461b2d81e8c01839fd105e260b0bc90508edf2c5bd38ba4290390e730df5d76843706edbc1c26e320334e9a935f55dc603d389520333c92ac5e683f1458970408442ff2dbe01888dd49463a2ed189be039bc791589136c6e158d2b86b8fa6492463aa13a2e390052488a32662f9c6d28e0461b3e86547134a431c44e100ae1c18aa4f1838bad92ea8c1ad163ef312861b7d77a9a3d5ca5b45ac0955ff983a657c92d8098ebb82260cac18b58be349bd44f825f1b46a46485fe5645cdffb27e31ac1f9517b7cc7443b797a7835a137ba94f0cdd4b7c9fe3c7bd51310d47e3c46339a7252a1a200c7cc9aa59ebe1f631d269e003b845488508a0805b1127dbe4d8702c203a18d20e8cd28425ae9f6d5fc0a9c7caa739d3f75144cc768893297affdda2b16b088ac0249ef544b98d7baef02fd18b4e93f1abb7b1df7de2551c7005af58fbeb671379a2103764ef4c0cc08c53485a15e95195247011d97a832c30f87d4dabf3094f817e6cd437fab5d83f384dae879f9bedffc74bb24fe3d4b39aa5e7cd80f8d42e7efaec776bcdbbb31385a3a18f899f603ba34b723edde90265ae717d6b4b25b5d04f9ed896e0a489ac21d37d9a80da43f5c040c5537d419f176c3163e69b6f93a9cb7445fe9e974de83ccc4905da1f94a4dfcef54752ada0df6fcd41a756419a685ad7c4f9c77a78bf00091c51cf73002284d2ae575ad7199f342a98fe1c501295e78d83606d70a73a79b1202847ef410fec0d3c009693c2e270b87c3d9efee0dce14d04ea28861cda7e407c9559ba89f6923dfdb8d38010075a5bbe0a7148e1c3cf652f55e3dfdf7c3a7cd5d0c9821848312bb99442edd0ead3218a1b6a294dda20f6e22cde2f5ca48e2890b3ddaef61bf755cdd59755e8889de45a809bfec85f83de0daa08c3a63f15f4ab5024a216f6765ff98e554df377aef14d61035dae309bfe4799e2bda53c23e2c0f285804aa76acc954d70e304dbbe43cfa0ee41607bb82ce7cb062cbd41d5c3b0b98e9dfd7a91d66fe13dea8cb65b19c70bfbf5e22a92a65400a5b8b48d70dbf416864531d6b109c3daf4cb96e2e5c6826c9babb8786844916a09eda413d4b5ef5bf6d3e063395bb75fd0b5b85baf9c271586f2c8c1aad945e1a5e48f96f1163ce998ff4c2453d32710e7cb6b18374d57a7628a2618a1a6d37542dfe7cfb42723b3dc6a1cfef9dd85c2b02cfc02eafafe46e06d7a69eb6399462e91ee49308d77b55169cb88e7055ae9f19d84834d206c63afaf4c26e0f4e8c154cc61efe98a810c99866d80d28fdb4c4314b85c7b03e934ff551c5afbc8d0902f3169ba5e7651359c8ac4798351ab8155e1de641c88c52e40f3d66676b0215b00f9ab1aea3c9e3511d34d0df9a7d135d227adcb92880822939f4df011b40a8c6bfe052ddc1c43fc523ad4589a4fe9069139f454ab6b4d62d50b33cd8a345bf2c8f132303733bee4275cbd9a65faaee9331231d240cb32939651291db1037f710e4ce3639f352a672dac641eb70303f2a349e4f90b9406fea8afedd7a9a594ba2238150707420b3f8dfc38767bf901a8f6313c97adcf8fbbb3f8d3c8044c1647dc1c3f1fbaa6dd8998a7819e7cf63bccbcb750669035fb968c83409aafecb5dd653447fc96716f29a747110d6524b428081975d4c8df147a8140287ab6974f8e3418ab8cdede56458abed8d1a5277aba79e62ed3538d552f07cc66f7b7dd3d5c269bc51261ce567f5675119445cbb27f73016afb002ae919bb95e97838b54c5eeb1dec8c9d921d4e48e2f5d9302129a8f9a152f11b1a791024502cba2879eb1ac0d3947ede75816cfccfea3e30bed26587e59215651ca39478ae3b8cebe971ba71169855de8f25c63fcd4d647aaf55e22136d0f8c6912bc7f40236231002cc0f769abfcb898c9c4faceef897f4ba2bfa1c5e9711c10d92cb124fe712c856ba9bfe5e8b14c8fab636c58cdcb0635584bbca59f573e8087121ee771c3ca8e8285f1a2d0b203b1f138735b782365424b845b9b3a7c3a0b8645f0b36766a20210bb374dcfc36e50eec66ba5767891162f3b4eb2bea85eebda5a1b51acee98c5a4fdea1ab8963d2dd1aacc331cb83b2cdae480723437b543e3e4449834ee341bb8c55505c9958c9a79a202f50cb5752d76817baa2ba1bfe6f2a28858b86bad162bdadb65257b8b65365cebc3e87a02f8f0ed0399a5143d1c3a243969d83a8f2ab2b26bfda39a8add157af4aa0d65e80fd836a8812ffcb7c5367e463cdb53ad9450cbc13eb707f23eaa0af9e8ee97b29377696239089600cbf666b8f741f0d6d1acbec38d00a51cf7b6bb164875e0e209a7acc2e8cbe33c80cfb5696f7ba04d8462d063239d31f1f388aebbd608ac330118aaefa5663fcea543ddbd36fb132c89301c148c375b749e5b4efcbc582c6397d6662e13224eaf6fc42adc59b6f9f6c28a28c4249a2fb57a50ce52e12cd799164a9f0bf8346db0e2e348223f96e7b49d19844dadc075fe45f7cb6042e6e99f9437d03edc1c06067918964f288a726527d66940e845f439e8a72504bbf619eb269f610a61c66b44bf95fd3fa2178539e716c3cd88f4d8e28854c90469655250d2334de3e03a4fa31b561f62202681929618bd76b175bc5c3fd5e552f18a9df078bf918aa30435fa6dfec96c3d748c701c997e61dde008fc713d6cdd5e4fe6c7aa5b3ad0c440bb45a6f55d10a9dd8535f3ceca203f9f9ecd2258688123b248335992f1767422d80993dc246c843099d98cc386fd95e216bf0338925ecb1213e523ea49775fbdfecb8563347e698352dbfe2d4cbbcf444aa8541a67c70c471000ead7ada64e1eb8733d4035c8b32d2f66758eb2b1757473543046741e8151990039c12951341cac949bb05d15acad8bd3feb78ed15b4b46c88fa6188c79a68f5d6b68fb76b7d2ef43175fd04d46df24d00b6995fd97f72e5f824a13dd19cabac80d7290b15d98394ec567abdb5f623366520b21554cbdcc670a7c02ea7846a62e759aac06659f85b100cef8e840b16a197a882023685dcdcebdfa7fa7a163f39917e07387f32100f4e8fcb5d288597984af060b519b28938812bf05f6986008cb327bb7dc2b5688e9977ab05b6bc99212400e9ccda69ae2a171455710f4f1b4912a6b0ad15f6f88e3072df4a7e45b5043a72dcab1828346ab74d4e6d54876650db7157417cbf9460fbd9574305165a28f75d88a5122408669a5e62bc6040b83637daa8f2989bad301171c335790ef734ba80453afbd8a2759c731718bd22b13c7aafe09b37b8d7581618ef98584c434794c278f86480bc335d90deb1dda6e3d9a0ff2edcb46899585b585f0a27f7cb7f18d2703d74ae227af3b21cf0912ed331f5d27cc0d7ea52aff58ee8de34eca4f25bdb1168fea25a072fb8cc81448b89b18e4a14683614716fe34e096e288ae7b197541d18544bf300257b57964ed1339fda2b1416e4408afd8ba0910dd03c34d23b068317188ece67e3f2acb24240663e191edb92488d3f4688fabb66b385cafe25a37f51a9571be72ad4d4621d3a07bb92dec30e1b15721ba6820d989f15929fd0ce531fccb0179c48b0312eacfdecbfb3329ff14e6eb95d45a78e0132ffc6d8e5b28f4543c8c062e3d107b9467c7518b796067423b7dabdfa567f01bdfbb12ed8e30224659940846944c05f9b44c83d496c334267592d43445458dd57645706cc7917c22ac2b32fe135ba3af071d2a0540f5d4276732b17785b0dbf997daa07f24f5cfefc031a6eefcc16a2b0e23f6488636a019d0343bc7df297ff22c740cfd8a5a7e9f411112921c690662424f4a386938883641b9e9e6b03f47d255250a1d0a9b9f5599243a7d8a1597b0a491a94c40c6d560df094cad68865bb4ff338e6e44b8e9ec4f8bb6dea52256785edccff606f98c7e7a1e298891592575c28dcdbbe84a7549ed8a65759706bdea2f0b151d73c76175c397d281c7645e5b479a856729ea61559174d78d4c868859fc7c65525cc1d0e7e0f440d63f35b1bc529189296a30e1858035ad2c97d33e8fbb9c586a46f2410478f6367f1829ec1c553cea57b9225d9bbb766f52b7075c01a9cf2eb9e35a0e08cbe2f138eea76a24cafbf7ca4d10cb3d269c45e5e63a40d055000622586931e71690ea0b2cbf60d6931e90f46eea40f403945fb6890b3eda80784a16e34675e36530953fe07e8fb311d86bd324307cd501063ee4ee4934d0309612cb6e65415a5e2545c4c9959c5bcfeb72da6e28c42ee1d081d38deafe3d1ee1952cc5ca9b5a33a603f3da32802ab508134e8e5ee10266ec3970c85f13f08f4189dfa0997a602016b6b6b08d3ce9b8bbb5c8d6dbb346bedc1dc27af8138860f5194c55a3e12cc91bbcfe0e1e094c7fbbce1b4f45f6cef24141373b553bcfd0c14b37ba41c5ba634adfaf0d301704116785ea6247e7b92646b1a45e9cb06cf26bee197575fc7be87ac0a66e5594cef3f2fc2efb2878c56c94f42c46213afbdd033d5bd8c38ba5ca32bcef3c74719135e2151751f32ec12c0942b9aacb0ea91813d5e7606dd3d4f0c73989d61382bca7b74a4f8004c1aef6c0ab5a2236b21dfa6fe965faa1521e704ef023d44eb3f894be6fd747dd088d6e27d951d867a16f4fe2d9e994cb90345b7059860a7c13e9dcd1882b61b195b75752538611086b78d89b2b60a5cee9c8e2a5eedfb64d4ae8e440b1afaeee56604e6e0100c3bd9c1136ff2d733970b8235b9271292ef206b034c9cdadedf9a417965d1ec14fd407ea655f61f69c4ade87d2146839a504accadef6a7efea8eb6783c9fde55bceac7b469d25c851536682dc90d5be3e4fab812b6e98e384f9e19110fd8c1361dcc705f104b922fc2f731128b0753062c36b7440f987117da24d966e45373f3962b6bb843871c40942d0dffc8a9a7516f3bd44f30b83dd8432fe0aac0f3650ab700290dfa22c385798c88edbbcbfbe667cafdf2b6dfa0b46ca8724e5440c66dd1c088768a83bbeb2be545e83545201dbb7e67853297fcde98a7254bf881f6c634f76aaffdb40082baf14bbf8784efc5307057a03033ed307e381bf361bae7ae8c5ff359dfe1ede6762d4ff5e1a9888c6b780887ce120841cc5fb794ea165949b996e989ed3ea358cc385699ffc8e72ed0d0c7cdc1440d6770a3880e616ec3a42b4bd15bf7ad4b59b4f6dda285132404f76bbcd9631147611860f23efa656efc6041a5130451d268d0fd98e5606e1b0ea3b252a16093fd5d87042beca905b3d2afdd4bdfa63762afd61cfc92d3ab73aabc55acbf7a6cec5b19d376d0dbcf28a8aa2e27f0483370a4d62681a56ac247d4e3a320c4ecc4095287226e6de6e1ebb9c9ed4f9f3c6919ef1bbf70415ed94b44a4ebf211c30241c5bd53fa41981bc508c8f2201d98b2049cfb7a3cfed25f828a3bf5f56fb9f397b7425f8991e64bd7fe0cc00cac9ec6770407306358e93e224c467d70abb5014bd69d515dbd70c5cc2e6aa46f53b333272f54d0cf6a59ad78de34fc4dc01c2757015c4c2c22f506a2ad96082eb3fe2d669d92396b6c30ab7662b8b6ff09f10d5282b6534c5e4163158d68f5b9172d0f52852c11795277dd8853cb2e98d9b7c65f5e00a5aee7613ed665b0d3453f3ad3f6914d6c73e5bf829480898cef64d8025d91267665d710dd719c65856acb1900d848f315bf68cf637fa36c9390330889d8edf4718cdd5e5fdea3e577dcc68e3087ee2fa350874624a693c12d2a08cc1d609c75f435b6f30b4faf5ace9eb109363fb9b0ce8b5f6ba8c9b29d42cfa14842eb36a47a5c3e4fa0c136f57e1a66e59dda1ef70a8f0fecb907f5806e57be6290e99e19e171b3d99fcfd90f1e0a374657a3304b88eab031d6c4840af1ab30cadb5fb44e62d1890e63bd29983b97822ebed1aa83391ebff3d512799d38aac010d534dff8507b6ebbd19e9c737eb3924cdbb4589091cd01ecf878d40f46a38cd4ed6841c6e4fc39b1404383d6e6bb73fde54c9d10fadffac61a22114c697fa03f0098864981878576b53b01b9e8d1927adfd12800ff3c00d896fed55525ce57f100f350d26d1cd0e21ca7117fd4c2cb2c4446b864cf6e43d227e66be0234fc46dd9deaa7211a603e64de9221c3644d0b4f31ce5c9a3e088f4cecc1520e420849aa442b4561e8af87860d921468b42a16ca93a3a8c32db78057d07de903c6dc3fb5b74570daa92c8f5729f43d39b5ac79d5441e59569ba1a2d916ad32437bbb1ba638f9e5d99c197511194c5aea931b41855cc8cc299ff645a1766fbaa786528df931abba681977fda197c4282e15f4e1e6f74eca2146a343b26298165a20e6befdbeceb00f7350d3940ebff9fa79fc6ba7622a388a4d0d6a51db799ebda350fad18fc7de60edc9429e5dd01a230eaf32b457e2467d60588c3bbbd9f99aa9593acd19c1ae0ee3f3259333414504bc9187d66ceadcd1a4a90b7d5a6db1bc2b8a9489522d6ba8e6a594e4fbb872dee6e7a7dbc936c0c069d948b2b3a9e8c33527375f4db0efc2b94a07229b256ef601751b3ad85161fb96dbf768c731a724f941c5b66ff09167ddd5ed32b47acdc667ad815e237576f56a3e338189e746364a305a1fcb7c483e0d51a46a6856f148337434fbbaa7cff6f6b5a6e57b31970a4a8f0d9f9f13d728ff0c0e8f7ba88b0e302c374c7e18470d8e78333271b5902dba70e49eb1c7c2cf2208301e0bb2be1887ac76f98d74587969f3f4f8e432127cf8fe37375f7afebd40d31915fee2ac154e4ab7c4cbc91c597c53fb71bb54422ce312e276fae720d2f726805c8df0994f354e6de38fc971f3ac17ac6c2dd81433507fb0d1916f3f1962eef939e5d00f008345a2dcc50babaafa56f5f6da765a870e8c90aa36f620053f534dc70bb31cb65852a5c32c9bda0c3576ba4d038887992437843e14680cd5cb5fa0f9aeace46dd6da4144522c30fa7065eb5bf1edd5b192a5df870e194f042e0f69ba949351dfe2e5672591f7504aba8534b4cf0bc3ff3fb92c5ab8108b3db4112e0c4b5feea4d60e5232210b2541834bff2a67a104f7f7779c5e04d1b6b8b58edbcfd3dba8b97cf6c1889f8f3bbd4fd1a1c664c478463c8ac72e659d89cdf5e70bb42bca6be3e05fcc8bad7e9f3be2c1c226cab755ce1567ebf8939f36fb785224c00b15e6efbf64e03031ea55c7f14de5f0208c5a35365989d6488e5982692d2341b79c9b656aa02e178ff92cbd3fd3fb5dc81866b5a36ec40150af9087d645a63d92670273ae032babee5cc6892043883e7fe3b7c38573b9b037b3607cc9bf925091ffab1c53b0d95440ca8a4d47e4a82a5bf8a4bec6c57494bb7b14c80057099261d02361ffc65ee7455e238d887ec71b1a947270bd595f5b5793b8ca6cd3c13378ce25fae6aeec5b0529cf7fa07946ecb967df6f79b7fca7b744950a65bdaba8604e308e27a0b4ee6dbc2d0fb69f0592e92004332cb905ca83b60e484f96f5393ddaf1ea4dc140cd99e969a875401437e588339192329712d726b00d1bc90030e6600708d0055b844e55c0aee98dc95fb98d75e8eeee283b0037f518552e8cffcf7717f3cdea12dadb63720bd2aee26ba9adafc3c92e4ee2bc791a83b2f06a9fc42be99c50fe4ebca80da8951115da561b278a1aab51addba3dcb59cb56bc43e655b1704a1c1c49f750b8dcfff98070520b91b61e630a1792506d3877befdbfe6aa60b6d3cc38960dd928fd2cb7b347927ad5057f566ae88208a9159b81e3461fca025037b49fb420d510f4e66224d19bd630a7b570b58f7f5a5fb202b1b246d466f01d3d383f2b9183005f96e1ef8b8f2a1cc8489201a7a022c87ef3767cd48eb3f072d8116dd45dbea9435768d9d7c3d530f0bffe1ec0f4d350f6ab46b88aafc259eb3f8cf90ff0674ce82a25a73122af6f933a91153afe53c1793f43331740673543cdc72ca57167b30b24de43772fed8505403f92dd75bce90b2f0a007df8dbfdc7f8fc9dca1e465a54ac83489f3a5f88a30489ef1d082650b76461615757d7b0734ebe41cd8aa6f29ca6b05a241899b62dd55c7c89c891684f4de192b0ba24b139e3ba1725127d43fe1d97cf15f46afe1d5c5abeb20a0dc14257590a957d1ab793395520838b897c0bf56f947988741fbb8c36d883dfcdc87d649ea28566ca5c23deea46f81b0a5e506c89661d1d7bcccf1d4f585adc06444a1e4206457d2dd476caae4d0ecec8c66a07b46b89f71e58385db80e6dbd08b4352e091bf4591c9dd5ffef0cb39f86ad5b76e32655397e3cce43b4290f0bd774581ef4f12b2f50dcb108fa0381abbc910486156af19328c3b8fc2941f9382b2d31ba9546f991c1791df875db6076ad9894f95cf6bbea9de1cef015ef9d9ae9ff20d59804b357db0a935764fb5d874de32aa26c2def7165b71ab5ef1c7651e90d257b11e9e260fe1968a8479c27f40230b1e8be5ad662125de860f21a47af532e7edeaad039a4b9b55ea370cbd58cbf11cb2fb6a276cb790aa2b2c0b0af5f18e6715142255f101752a008d7c089316c68a0303905134b0c61ce3b13f19efbb3fd90603b77fae9ce51e034cafa145655cf5b8299409e54241269c3aa4137a276988a2888639d1b4dabff3caa3b7e50bc4343490f33da4c8af6ea8498d676f54cd70f5f4514ff7aef626f333796fbd26d0ecc408c2764800096b6af7548673eec7f4b5df12d285421772b3bbbf6f4a86e91010e780f0873a469b725649d9ec3f1b200077e243d3537e014208b6a79024c1641d6f515742981906971a19640cc6f52a1eafd534fd54a92d18d512feb00a3196e4a8a8228d3c587dae24027299cc919b06a92dee3b3ac87df3246f43612d2274e2eb77fa2ac4c2d809ca24afe4330241fea4949c7bc185e3a15832cf0382aabcb91f4e0d1465516e107a335fd749e45f15c79c192baf7660439c033f28c70e560a6b53a066266eac78d5e8e5ccb45929f9fb66f5c40694c3d8d915334a30daf903f2e1549b2538aafb53f56d9cf37e212537cf362c122448ca69203942af6e0fca8b89bf4984a79255e3b5598d4d73d56772067ca4d667e807554af6a16747e7588c3389b2e492b35805156c79c83378e788d8ac7c92f46a3378e194455095d3dee787f9d7809a53f6d0131ecc0e9a6af7fdd92ac438361347b69329d3ab6c41fedc1fa7186310f23c3dbe8a26eed20a113c8340276aa6eb1313d81a9b1a40b79c6ebbfae864427dae0585189e1a9acda0e74b56f14c07f290a829498e6cffcfc9449427678a046e56941d97bc8db80e57e9dfc6cb99a6417f81edb5c2ab1891aeab37f859d9f10baf5617d84fc2b71bf8e08950474c2dd123b113653e60ec9a224765dada2329d992a2f856e88355c4f92d649e64997e5dceff223bc1f179042557bb05afd7bed346cc8a683f2c884ee2f98c872661d286484781e78539d3e7fa5b097b918ff5bb14ec77740d5675c5f48a3fae18130fb859c5c173402f2d57481687003908c20a2f2f8d19a0d09c4359a7224caa1df663e07d4ee8daa53fc34337084cc3bc92ad199ecb1cce0ad32e71f3257f6d0438b9c5f673e030e4e9356d41ffc48f9a25e9efbc096635cb919bb79fd84e4e4cb6ccaf9cada20cdf4497f6d8a8bd2ba210a741c3dda07cb4f2389ec9724a8749f53002fc686dd1dad162b560e94124c7a0189d0a0460e1aeaa22889a3cbc506f5958e1b382e9f2983bd174cac0d27240d892d7f8b275f649485ba0288bec853ef6644ece98e0eaef7d7be840c5794ad032d3ff2646bc2eeacf5481c2aaf8d6b0e7de4d996a6c078eab29445323d7b9ddd3e4579a95099c7aaff5580c52fe27ce388c9651903a38f757a8c500e7b94c2dc0ed979587ca212c652d4677097443e50703a187451e79ece4e41202a23aa80c589f6469f6d3819f9e38fd45ac0ef057a64251b6ba9dd611598dac363623cababd650513683a97c66bf59f8feb343a390d085897d082c86ace824711f3e0babc6fe8a051aa485f6059feb3d50fb2d6b6503a7a4825b5cf63181266c49e44b3195daaccbac5b7bbc9795b82f6ddb818075d42fe0c387874cdb45f552d163c136653f311470e2218854cef5dccc58270bb4212b7cc5584cb8be50e29ded5890b04a5f902ecdf0cde0321c0de543ec23f4e17e271640c45ca1c54063cccc1f28981e25b00506ac78d78463e7be16d5ed28066134ab596774eba8e2fa8e0bf581c64a5b3d5733c7f7a0c89334d49032aedf1d8f03c5b309bd10a0621e024679a87ed30db1aaa40a5dd39d37461a6f5809190a67c92f36e1d1e4d4de086633c430d5726f95e04c2197b0ceee82c1d4c4c061e74d6141d629e105a0b42b281790cb2d85c113129a9b484587d2c6d005012f25c9409f355bd7d2a569f0bae0a106148ee7ad1f73abfc102f76b9e2708e2be647f41a2e7017fd6deff9665d2e9d5c9ac0fb960ad3fc9206aedf4bcb52be714de632360726eb5e404ed282e411073888c6f10be683b8e45360866ab1c9347caf8aa7c8640cd82aac87ffd81a218427d038d36aeeda9b570041ff6ee78e0312def27cbe81ad0f6a6707dc0a91cedf1b3f880c7df7a38aede9651a1fe19f97881f7d849de80ad681ab5fa8fd62fa4908cb1dccfca8da7021ce8567556aa1f68637ee649401758476a5cc968d381f1b4d29a49ee4e74d233bacca10d810c50b6681cca15322ff24c15339cd0746e3f44d6bc3d349cda5eeb5b72f95f8afb31254219244d53d0c44d520fb9557851b4fda898ea52127d675ab25832b3acb6b8fc874c66f5a988f98145a2ac6f559e35758ddeeba537e2e0b9b9314ce2d9a7b7086953147e7e3f60dd24f288cd78219623c72f3bbebee26ca28f4a2e1a7f80f992a5e023866d22d961ad76637dcb1ca623cc3e9fb6ee094ffcbd05b2ff61fbbf41f2b732f6f9037a95c16bd24aca5d7217416f551eb3ffffd23a9b203d6eab0f1a27a22861f7b27d6d02f6cf2b1ac6837124fd128979d375d554abc02aa5a807cc40f9115eb87a8c28aa43702a54e1212d5dee7ad2a75a3ea083720d8d712e4a5a540bdb5c50b2b2540bfc6896d1b8cde8974aabcb344dee0129b6d8e138329516e2d2e19e0185b1b3d4c6d7acb6868d6a6fec2a953d54470c96d097c348f6e37d07c443d7e86fe61db70476547277cf8e3d04d7f03c4859679a07018bc0c253f73d29475280aa046eeee7225308668428f7a5b21a35fee8479ab5fc69209c15c8d7665701afcc9d843e669a619e66d5d2d5ae2a2497006eb7edc7423cd0bc8ebce71d6ebd2e8aac015bcb26eb9aa7e8e23d8b24857802aa786c431f34e137113c533ff3f9c28e12b1fc9849f2370074d413e5e1f3c5eaa0af98491d14108859e1dd2ef2b2ba2450b78dd3788505c0dc25418569d432cb61e8d333446fa9d166e4f750667748fc22dfabbfd48fca11520d462aa56d4fa9f3ce8eb36cf6d637fd7e002e91149fa7f8a2e426061b0adf1c84da08c8786cc274b3f1e86543887df9291e879fadae07eef8e7fbe55758438e90e959722497b27aae6caa3b6c8a8f5e8d43e044ed638bc655411f1a25b54113923ad3347c9b70c33d74cce1078d31e6d4239fef170647d0d9d4485c89e4078703eab3f2d0ab86c83d26091968f24811fb0e0dbfb3146994ecb1bc60baaf5e3aab0fd71923a492d5a566befd8006934ee07a958c0177f3195d80e6074f84a71bf6bf3a1d880d07465832a158b23152a33ffab07b69c44d797fa88f12d26c5681c56d89631d22371d74c5e46f5081dd3cdb85b92de8a6f54a5260d420ae07872ad7a2568d388c31f49d0244e54dc5e42a433d379fb5d87afd4b2ade6f0b0fe203d7b205a05ecf85312d8869659d497ff93425372f0ed937e4cbbfbb0259203bb2cfc48a25a3b6dee14c4a1b04289c3811eb5cf9c67298805a6b2bf8e3e461354c58213773748be826d6c08ed71d3f74076ab10a14236e9ee13d26e715eb781a0f2492d8f675b33b7636aa3b93e566d11d7bb135a8f60eed4ef86fc73f54ae7e430ccd69e8da1027f475fa1e373c011af7cd3cbd92b2e54e514000fa7e02ab99fca12a3606c65751391ca3a270466c498cc7198f2a330ae1fa20bc73f2c92eee496ceb6da9179f930d113d03bab433dceed1a252a55fea164e553c349bf3e469637ca9f1c5e8e69f92197e17518d3979af72be1a26aaa574a3814e1cbf784bee021e0bd4769770c112e55d153d8778b020941ca2bee508edd3cdbf34b7cee9b2888044453d07fff2b484a72c103a6684851e9f61ce69e067db8661fd8cb61216d91836a7d85eee385d2f6947f125955a9489775665be5545a5f5e5674825216c2c3ca88c94284c57ef068662606c6d0bb4a4c93676b27829e5ebf8e7068e1b0e69bd1a8149941c130e61d0470ddd8ea13ecc128d6924551d83b7a71d8fe8d0a845a13834da72a12a2dac2d1869df14d0e2c6a4b41829c2130b21f100d2827c48b7178a649f11a15e08e0bf3edac8bd38af57b3ba9233704bc02caa6cda33565c265337179b18d92fb08f9dd7f0d95c36930a848789d210d1c0ea121edffcb0a7af06ad9dfdc00ee16214c7ba28c49cff7e2fdece638909d44c91d79f5640bb35b270db24bad52c88fd2ddda59abd08cc4f893b98cd44af5a63aa8a29fbffdf8c7ca9cfbbcea8f3a536166898cc7ae7a8a84f27b27e4c26fc28b2917dc4ecc6843565d5b402ec5d8b7f4d0b09adef24186a01c308deca708b5a72dab9c18ea7e682f95b9d2a317bca5d1a2748d50f9331d1a7acfd33b109bf1efb14b2156aa8c2220b9abb8bdc4d97103b51f31b555551260e999458147419ddcf644c3447bff9e6957ba168a87e281d9b0f50261cce8b476d2598a61c6a54b6d7a6f1a38766ba72eb11e95353ad5b60f074fa0512ce0d89b84dbfcea53d1683d1dd8c5450d81c33e630365e9fe05b3ded6cb0eb748401689d7864163316c968e6ddc28ebb1f61dd8ee9a690110f1002d97150c61010d1785c322e2a632bb6b72cba1126e1fb372c9655cc34db111c74f94d7b891c32256efd8dc4fa789f6f978e29e959c958a39bee62ee578bb71f5141e2be4cb70521f24e2bd8070182460ad219e15d25ee2c3d05459d2776b01806b7116d4de0f096be6212b222c10340cb35b53388bb7b60068d5ce16f866f9cfa784d64a9c1710ea123d19452dcb4ea7c62975350e4061e0b4d0a7fc1d25904b1d46d215740cbdf22776c0db8463396be5d4d561b6b37c3a285d74ce5f334668f77e368f704adbc4b5f2d8c4cd34399af3c86bcd5c0f133029e4ee5f2e1c5f6bb842f0be07814656964d2cc0b1d05d4c5cb166dd22b7a9dbb79d05f556c4e6def8f6528deae8490a6cffae17c80725f6fc7d51e6eeb5a4cea53bce63867d64f844a3c8ad6fb70978455f497a222492c5ed5d4c5074b4d827365d7076480649c7cff8e8cf41858d6754d2f5ee487d770b96d7428e74a83eee05d3ce13bda4132c03c3b57d6ee84b4ccae42042a9375f91958a601cf014cfafbf4c47bd062c54e15d9a9b354821c2f4395ffd2f364875fd765860995502c05584e6387da24d486d1ea134a508dfc49afb2204207d929d1af921e3e5d80eb838d69d11301ed328c2b585050c44d7424651a08fed5451fbb5e7dd2b425a8b1afbf7ae8d199b45b9525b10ce70960bdfe0aae2e239b4eb0e37c834994c40c85116f498c3934f185829e088bd09c14b7e7f7455d00f4c550daff26c98982a6b26a9270a3fa2a367758aa5117b1d6cf92652c5ca557fd0f9670d87ebaa534fce47c191b1ccb5e03e85c945cc09842b43d8c511ed0895a8ee3450d6fd2bcd012c5177676962f0fd33b3e637285e313a70af58316d1b1b5d922fb131c7f48967477dfce6918882284983493eef9179e05c545802e3b25418110ce84231d190ef5313b67308864e6ca93312db82e2ffee389d3eeac278bc9f19c91b5419235b0880e19ca27d0962b203f96f5e2cc0f4c22401ec326d3cf352fef7ef0bd78a0a4c112902974d41e0908fa791dfbd152eeb245e71ea4292d80774244bbabc6796d4b2f3bb9836017babba300a5a61bc5a3e032c4bae4a8ebf8260107601d63f5018a88d952cdd4b17e0e40cd05d2a7cb00612f3b09d7afd00fe5811e7fa1fd6a2803ec78fb3cfcad5504ee41e6f4209ac9e96fa53bfee10f64fab7010819ef3e758fbfee8660201ecb8add63aa6fcbc746b1f0039b581c2b1d77e91357dfa0324e6beb979ca7598e85727f098d562081dcfed6888d1536ea7d2058a4371f29ebc83acd33a49de88290a70a016dd4ad1fea6bfd9d982e7b8ff9748d6647af240b0ba41c69b79bc0edbc8c155cbfcb489dcf0428f1dcd7023a3fa4a08f9c40bf5744ec1066050ffa0dd59be46f97f04f244820b9b9f96f5b6fd465aad06de4c6bba6cbfaa5d057e4e4b07b3d17d13d78eda0d4e0bed736e04e0ecc3287b41bc67d422d598dc7fae900696c52ca60d221569fde9e38ba8e944cd04898523c4495b757a21a1f46862d9f8b66f40f70d1c4454759e4e69d574e377383086d3ef40c1426a6b6b03e9e1437c359a3911cf9d12371d43b7c9ff375ea89e0aa62c7ad6342f9474271862a4118d0f7cc9ae0ef36c8aa178bb89d29c81d852578802d1b89f9cd07df114c9bb5d7ee1024b88879a3445519aa12d46fb40c4f7729cdf085644337dd6d5e21b8d4585c404e7253d0f3a364c9e14f4632e634c006a2f8f4a2520c11dc2d646a21e2eb34768a648318e9ee8ef3734cb03046df1672080aaf26071cf4afed506c780b50083cac6242f4239720864d51743d9ceb24c960510afb910a62627d8b852e38618d6fc8af783f97fab2fa813a05fa8039be62d6e1519793389506cc47cdfd5e6de44e5fa914935c0d271a9db4b95b979896495a9443f228db37a40715a2dd20868d5cfdc0edc72762a5c6dceb5a52d1e76e455228a83dc18b265a7fd5e101d7ec9d14b4928bba96784976f3ac699bd8006f01d39f6d5d69f1e9fa9b74a482d3a73cfa87092caa514aa295fdfc13a9441a31b57869ff14d5cccbc5f33df0b57c8246555408447e8a10b955ec2036639716f7e9211d3a560ea64a5590b8920db53c6802e010eeacb56ad41b0e85e6060f5e6d16e354d101299f7f8cffaa726dccb2fb74434d63e9e40a2c056679815f08489244f18bf27d1984dbe8569c66ea30e1e798668160284c33f4a5dde3833cd9992d56da039cb0d3cd67d1b115ac736fdab122be5ce536ea093bdcbbf3d036fa6c54996f04f3538fe936e579a8bb77c913d2e02e3ec2b3c24c4fafea4e2e088fe2e3ca39b3303a7abaef1cc4780b9cb5db7f7d952b39307eacfdc37b7a69f50e4e2bd8573c788b35e81e6e7a6d2a678645e2715eb237d68df5e1224dd62bf8055a2c0ab834b2f55a0242543c7b047697bbc018486d6ea61c25f360231af2752f826efbe8799b8259d20003a4178adac74c308c5928d55e426e09c81aefb77f5c5db3f6a548aba46d36926228f6fdfa6f49f40d3b0a66a9313ff36ebc429088c251c44d493c8131ffd6af0d5de48e7f73bc86f90f0246274651740892be2f77bdcfc28903b281a9f61e075c80a81414bad753e378afce0f63125104b80fb80528f87945dba6a2379037ae01057555d96d5f17d6709c91175a331f5809f82dfdad7fbd0c9d0dfa90a2b0de15e3be44ee613671cf5068f722bcbb466c98fa848d8ba99733de68f5f9a70f795c3cd27d29c66074be881ef287be88b4bd3e4a123f222c8bac163f47b5fd15cbcf17052f47521fe9c4422ddd80de9c4f6f94e632ad2446dc7b7131d17d9f7b0cc886d5701a716fdb11fe8c779cb3b473d53f92cecc0b24917c1576cdb590d113e3ebfa525f94a14e2d3deb36fa9955e29f2ba3275489dbb0f383bd61c4246dc0eaa8074cbfa8a1faf01d3f078ccbda414148e5f1830c52b5918a351d5d5b0cd3e40b3c2d2a1db63bed33c59075f4a7657eb3252688aa099fae4d7c971197db802e2bedd700f460a958bd122b8ec256ba447cab8275ebfe66030ecbbcc50df1088d03f2c307d0d179c1d187ac2666252d62e568a056f1c90b3389340418df94da7f2d1ff6b8f5f97da82cd94a1309953228cf78df3c5fb5605f955d474b503c698501bb9d185c5fa6d9305d5c86ba592419bd00a4d5f4fd3a21a76cd5357445e326e529dff0b6161950f23c0b05bbe333a4a36424e98dd14a60837d5c9ac80c994d4c07e860f283d390c8f83b48447125c82c432b70d1785b99d0f0c3725afa3049a9b52a867a4480466b8d35ad38c36d93fe16f3b9166e6b9cd1c4d199a0d3c11a386f681bbeed1568b0ae6c2ca7011f0f9bb151836324d3dbb2d3542eb27ad909c2d55ce70b9ca41c48395575583526978a6b9cc35ac2e0727f446a12cc36f7bdf4a06202b53d8765ba5d3e053c8731101028418d86e57d0c8c345c466c0b20310258facace02586ac11056e89aa7eb77ef64b7e4362e75ea742e174a09164f7d945efe4f27aa76a02360c3d7d5ff0c4831aa9aa14ec0274319018d9deeb683f40e245d0a3bc9ca7f7c0cadc0ce360a66ef8d8419534e55d3211da2a60dfb7de2f264c8d9bd218e6431e9b6940428cb1b5e8295d229e272752b28c8d7ec2088c849f22959a83d5073e9f43bb796eda4a9f8cd4c902e55cdebaee90408231088c00bae613949e42015df633c688f663f23e2813241ce354267fc2ba08153015ae3fd9c11232f98a670def90abb09a585e8787d8f6e681c9b94b976d50e6a4d20789851aad2c50abe57a452ca717f255c5555401ce908bbda0c2d816ba6ed7d246fe6cba2b3d548455001347118729a0e347b74ca768cb225feced21a04f17a59fb44cad02580445dd65162d8d19b1431927a26dc90287ac984fcbe9a4104eba9bd228b3bbea94fd8e55bb7f5946028a4daef66113598f16b5aed459edac08793c74036cf3e0e9107c3437fe9c692530c30d2d3beb26b136fb54e4212ed85174fc9dde30cf5a98f6621b9f5166e987b5925254a2d02cb9eeccfd92660a9564a09d8d12f2714edd90ed2671d368eada2133776b61dbb404910595ece5c7e5ea9f5762b4b0791f1e556004832f176d7001000468ee3cb0, level=(string)5.1, profile=(string)high, width=(int)720, height=(int)1280, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
Setting pipeline to NULL ...
Freeing pipeline ...
```
I have a Wireshark capture with the first rtsp stream from ffmpeg, followed by a few gstreamer attempts. The last one is the one captured in the accompanying gdp file. Here is a screenshot too:
![Screenshot_from_2020-12-17_16-45-05](/uploads/ef95875cb8b4ea88f7467df70af89dce/Screenshot_from_2020-12-17_16-45-05.png)
I can privately give access to the camera remotely if required. It also only works on TCP, but that is a limitation of the IP camera.
[weirdness.gdp](/uploads/fda2b185ba227af21f70b479397cdf4a/weirdness.gdp)[weirdness.pcapng.gz](/uploads/ced748f8c47161e0a3f2e2f9d4eed67d/weirdness.pcapng.gz)https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/849glimagesink: 1.18.1 deadlock in gst_gl_window_resize2021-03-01T14:38:39ZAlexander Vandenbulckeglimagesink: 1.18.1 deadlock in gst_gl_window_resizeSince the upgrade to gstreamer version 1.18.1 from 1.16.3 we were not able to get the feed displayed.
We're testing with dispmanx on RPI using the legacy drivers.
The simplified pipeline is as follows:
```
gst-launch-1.0 v4l2src ! vide...Since the upgrade to gstreamer version 1.18.1 from 1.16.3 we were not able to get the feed displayed.
We're testing with dispmanx on RPI using the legacy drivers.
The simplified pipeline is as follows:
```
gst-launch-1.0 v4l2src ! video/x-raw,height=240,width=320,format=YUY2 ! videoconvert ! glupload ! glcolorconvert ! glimagesink render-rectangle="<0,0,1920,1080>"
```
which won't pass beyond `Setting pipeline to PAUSED ...`. When digging more into the issue using gdb, the following backtrace shows that the pipeline is blocked on `g_cond_wait` inside the function `gst_gl_window_resize`.
_Backtrace:_
```
Thread 1 (Thread 0x76f33d90 (LWP 2472)):
#0 0x76bd1aec in syscall () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0x76d6f908 in g_cond_wait () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
#2 0x75ddab58 in gst_gl_window_default_send_message (window=0xa48020 [GstGLWindow|glwindowdispmanxegl0], callback=<optimized out>,
data=<optimized out>) at ../gst-libs/gst/gl/gstglwindow.c:638
#3 0x75ddb518 in gst_gl_window_resize (window=window@entry=0xa48020 [GstGLWindow|glwindowdispmanxegl0], width=width@entry=1920,
height=height@entry=1080) at ../gst-libs/gst/gl/gstglwindow.c:1090
#4 0x75ddfb9c in window_resize (window_egl=window_egl@entry=0xa48020 [GstGLWindowDispmanxEGL|glwindowdispmanxegl0],
width=width@entry=1920, height=1080, height@entry=10780704, visible=visible@entry=1)
at ../gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c:282
#5 0x75ddfc58 in gst_gl_window_dispmanx_egl_set_render_rectangle (window=window@entry=0xa48020 [GstGLWindow|glwindowdispmanxegl0],
x=x@entry=0, y=y@entry=0, width=width@entry=1920, height=height@entry=1080)
at ../gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c:299
#6 0x75ddb3dc in gst_gl_window_set_render_rectangle (window=window@entry=0xa48020 [GstGLWindow|glwindowdispmanxegl0], x=0, y=0,
width=1920, height=1080) at ../gst-libs/gst/gl/gstglwindow.c:1020
#7 0x75b581c0 in _ensure_gl_setup (gl_sink=gl_sink@entry=0xa32868 [GstGLImageSink|sink]) at ../ext/gl/gstglimagesink.c:1047
#8 0x75b59b00 in gst_glimage_sink_change_state (element=0xa32868 [GstElement|sink], transition=GST_STATE_CHANGE_NULL_TO_READY)
at ../ext/gl/gstglimagesink.c:1209
#9 0x76e45c2c in gst_element_change_state (element=element@entry=0xa32868 [GstElement|sink],
transition=transition@entry=GST_STATE_CHANGE_NULL_TO_READY) at ../gst/gstelement.c:3046
#10 0x76e46424 in gst_element_set_state_func (element=0xa32868 [GstElement|sink], state=<optimized out>) at ../gst/gstelement.c:3000
#11 0x76e1e348 in gst_bin_element_set_state (next=<optimized out>, current=<optimized out>,
start_time=8570631565862764546 [2380730:59:25.862764546], base_time=45951202265008672 [12764:13:22.265008672],
element=0xa32868 [GstElement|sink], bin=<optimized out>) at ../gst/gstbin.c:2615
--Type <RET> for more, q to quit, c to continue without paging--
#12 gst_bin_change_state_func (element=0xa2d058 [GstElement|glimagesinkbin0], transition=0) at ../gst/gstbin.c:2957
#13 0x76e45c2c in gst_element_change_state (element=element@entry=0xa2d058 [GstElement|glimagesinkbin0],
transition=transition@entry=GST_STATE_CHANGE_NULL_TO_READY) at ../gst/gstelement.c:3046
#14 0x76e46424 in gst_element_set_state_func (element=0xa2d058 [GstElement|glimagesinkbin0], state=<optimized out>)
at ../gst/gstelement.c:3000
#15 0x76e1e348 in gst_bin_element_set_state (next=<optimized out>, current=<optimized out>,
start_time=8570631565862764546 [2380730:59:25.862764546], base_time=45950789948015616 [12764:06:29.948015616],
element=0xa2d058 [GstElement|glimagesinkbin0], bin=<optimized out>) at ../gst/gstbin.c:2615
#16 gst_bin_change_state_func (element=0xa3e0a0 [GstElement|pipeline0], transition=0) at ../gst/gstbin.c:2957
#17 0x76e779c8 in gst_pipeline_change_state (element=0xa3e0a0 [GstElement|pipeline0], transition=GST_STATE_CHANGE_NULL_TO_READY)
at ../gst/gstpipeline.c:525
#18 0x76e45c2c in gst_element_change_state (element=element@entry=0xa3e0a0 [GstElement|pipeline0],
transition=transition@entry=GST_STATE_CHANGE_NULL_TO_READY) at ../gst/gstelement.c:3046
#19 0x76e46424 in gst_element_set_state_func (element=0xa3e0a0 [GstElement|pipeline0], state=<optimized out>) at ../gst/gstelement.c:3000
#20 0x00012ed0 in main (argc=<optimized out>, argv=<optimized out>) at ../tools/gst-launch.c:1204
(gdb)
```
In addition testing the pipeline without the `render-rectangle="<...>"` works perfectly:
```
gst-launch-1.0 v4l2src ! video/x-raw,height=240,width=320,format=YUY2 ! videoconvert ! glupload ! glcolorconvert ! glimagesink
0:00:00.004485275 2528 0x1630e80 WARN GST_PERFORMANCE gstbuffer.c:496:_priv_gst_buffer_initialize: No 64-bit atomic int defined for this platform/toolchain!
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayEGL\)\ gldisplayegl0";
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.291148146 2528 0x175ba00 WARN v4l2 gstv4l2object.c:3591:gst_v4l2_object_set_format_full:<v4l2src0:src> Unknown colorimetry transfer 16
0:00:00.717517770 2528 0x1677060 FIXME glslstage gstglslstage.c:530:_compile_shader:<glslstage0> vertex shader info log:Compiled
0:00:00.718994737 2528 0x1677060 FIXME glslstage gstglslstage.c:530:_compile_shader:<glslstage1> fragment shader info log:Compiled
0:00:00.755198862 2528 0x1677060 FIXME glslstage gstglslstage.c:530:_compile_shader:<glslstage2> vertex shader info log:Compiled
0:00:00.755929689 2528 0x1677060 FIXME glslstage gstglslstage.c:530:_compile_shader:<glslstage3> fragment shader info log:Compiled
0:00:00.768795467 2528 0x1677060 FIXME glslstage gstglslstage.c:530:_compile_shader:<glslstage4> vertex shader info log:Compiled
0:00:00.769507805 2528 0x1677060 FIXME glslstage gstglslstage.c:530:_compile_shader:<glslstage5> fragment shader info log:Compiled
^Chandling interrupt. ------> ctrl^c
Interrupt: Stopping pipeline ...
Execution ended after 0:00:02.470928728
Setting pipeline to NULL ...
Freeing pipeline ...
```
We found that the problem was introduced by commit b887db1efe816c0c28b60a6842fa9005a26c1502 which moves locks and could possible introduce a deadlock from the gstreamer thread with itself.
Reverting this commit prevents the deadlock and is able to display my webcamfeed to the display:
```
gst-launch-1.0 v4l2src ! video/x-raw,height=240,width=320,format=YUY2 ! videoconvert ! glupload ! glcolorconvert ! glimagesink render-rectangle="<0,0,1920,1080>"
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayEGL\)\ gldisplayegl0";
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:06.054823633
Setting pipeline to NULL ...
Freeing pipeline ...
```https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/issues/295[TGL-U][GST-VAAPI] vaapipostproc fail to convert VUYA when playing 4K 8bit 44...2021-03-18T02:35:47ZUng, Teng En[TGL-U][GST-VAAPI] vaapipostproc fail to convert VUYA when playing 4K 8bit 444 videoOS: Yocto Linux
kernel : 5.4.80-intel-ese-standard-lts
Gstreamer : 1.19.0.1
libva info:
root@intel-corei7-64:/usr/src/gstreamer-vaapi# vainfo
libva info: VA-API version 1.9.0
libva info: User environment variable requested driver 'iHD'...OS: Yocto Linux
kernel : 5.4.80-intel-ese-standard-lts
Gstreamer : 1.19.0.1
libva info:
root@intel-corei7-64:/usr/src/gstreamer-vaapi# vainfo
libva info: VA-API version 1.9.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_9
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.9 (libva 2.9.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 20.4.1 (19107c19)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointFEI
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointFEI
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI
VAProfileHEVCMain : VAEntrypointEncSliceLP
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointEncSliceLP
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSliceLP
VAProfileVP9Profile1 : VAEntrypointVLD
VAProfileVP9Profile1 : VAEntrypointEncSliceLP
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointEncSliceLP
VAProfileVP9Profile3 : VAEntrypointVLD
VAProfileVP9Profile3 : VAEntrypointEncSliceLP
VAProfileHEVCMain12 : VAEntrypointVLD
VAProfileHEVCMain12 : VAEntrypointEncSlice
VAProfileHEVCMain422_10 : VAEntrypointVLD
VAProfileHEVCMain422_10 : VAEntrypointEncSlice
VAProfileHEVCMain422_12 : VAEntrypointVLD
VAProfileHEVCMain422_12 : VAEntrypointEncSlice
VAProfileHEVCMain444 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_10 : VAEntrypointVLD
VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_12 : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointEncSliceLP
VAProfileHEVCSccMain10 : VAEntrypointVLD
VAProfileHEVCSccMain10 : VAEntrypointEncSliceLP
VAProfileHEVCSccMain444 : VAEntrypointVLD
VAProfileHEVCSccMain444 : VAEntrypointEncSliceLP
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileAV1Profile1 : VAEntrypointVLD
VAProfileHEVCSccMain444_10 : VAEntrypointVLD
VAProfileHEVCSccMain444_10 : VAEntrypointEncSliceLP
**Command and error messages:**
root@GIO-0e04c3abb3d:~# gst-launch-1.0 -v filesrc location=/media/VP9_Videos/444/Foreman_3840x2160_12mbps_60fps_444.webm ! matroskademux ! vaapivp9dec ! vaapipostproc width=3840 height=2160 ! glimagesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
Got context from element 'vaapipostproc0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayX11\)\ vaapidisplayx11-0";
/GstPipeline:pipeline0/GstVaapiDecode_vp9:vaapidecode_vp9-0.GstPad:sink: caps = video/x-vp9, width=(int)3840, height=(int)2160, framerate=(fraction)60/1
Redistribute latency...
/GstPipeline:pipeline0/GstVaapiDecode_vp9:vaapidecode_vp9-0.GstPad:src: caps = video/x-raw(memory:VASurface), format=(string)VUYA, width=(int)3840, height=(int)2160, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt2020, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstVaapiPostproc:vaapipostproc0.GstPad:src: caps = video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:src: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorConvertElement:glcolorconvertelement0.GstPad:src: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorBalance:glcolorbalance0.GstPad:src: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink.GstPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorBalance:glcolorbalance0.GstPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorConvertElement:glcolorconvertelement0.GstPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:sink: caps = video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink: caps = video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstVaapiPostproc:vaapipostproc0.GstPad:src: caps = video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:sink: caps = video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink: caps = video/x-raw(memory:DMABuf), format=(string)RGBA, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstVaapiPostproc:vaapipostproc0.GstPad:sink: caps = video/x-raw(memory:VASurface), format=(string)VUYA, width=(int)3840, height=(int)2160, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt2020, framerate=(fraction)60/1
0:00:00.244835311 11346 0x555a5aba5b70 ERROR vaapipostproc gstvaapipostproc.c:1087:gst_vaapipostproc_process_vpp:<vaapipostproc0> failed to apply VPP filters (error 2)
ERROR: from element /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0: Internal data stream error.
Additional debug info:
../git/gst/matroska/matroska-demux.c(5859): gst_matroska_demux_loop (): /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0:
streaming stopped, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
Attach a short hevc mkv that can reproduce the issue.[HoneyBee_3840x2160_21mbps_30fps_High_at_L5.0_444-s2.mkv](/uploads/e65eeaeeda9962943181532604a7505e/HoneyBee_3840x2160_21mbps_30fps_High_at_L5.0_444-s2.mkv)
Play with :
gst-launch-1.0 filesrc location=HoneyBee_3840x2160_21mbps_30fps_High_at_L5.0_444-s2.mkv ! matroskademux ! vaapih265dec ! vaapipostproc width=3840 height=2160 ! glimagesinkhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/303Manually dropping video frame in element2021-01-20T01:34:40ZRyan BrigdenManually dropping video frame in elementI have been working on an element to selectively drop video frames in a video encoding pipeline according to a boolean value set in a `Meta` written to the buffer upstream. My `frameselect` plugin implementation is based on the `identity...I have been working on an element to selectively drop video frames in a video encoding pipeline according to a boolean value set in a `Meta` written to the buffer upstream. My `frameselect` plugin implementation is based on the `identity` example in the plugin repo and the metadata example in this rep. I have been struggling with 2 issues blocking progress for the past couple days and would appreciate any insights. Please let me know if there would be a more appropriate place to move this issue.
The issues I am having:
Metadata is written to upstream of the `frameselect` element in a buffer probe of the source pad of a video decoder, but it cannot be read in the `frameselect` `sink_chain` method (the meta api type is read as `glib::Type::Invalid`). However, I am able to write and read this `Meta` successfully from a contrived, source / sink element pipeline as is done in [this example](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/blob/0dce894b13715cab3045467cfcb1b4616655ca85/examples/src/bin/custom_meta.rs#L174)
Independently of passing the custom `Meta`, I tried to validate my approach to "dropping" frames from the decoder. As a test (to get around the failure to read the metadata), I set up a simple mutex protected counter in the `FrameSelect` element and would return `Ok(gst_base::BASE_TRANSFORM_FLOW_DROPPED)` at a given frequency based on the counter value, otherwise I would push the buffer to downstream to the source and return `Ok(gst::FlowSuccess::Ok)`. Unfortunately this fails to drop frames as expected.
The custom metadata implementation:
```rust
use gst::prelude::*;
use std::fmt;
use std::ptr;
// Public Rust type for the custom meta.
#[repr(transparent)]
pub struct SelectMeta(imp::SelectMeta);
// Metas must be Send+Sync.
unsafe impl Send for SelectMeta {}
unsafe impl Sync for SelectMeta {}
impl SelectMeta {
// Add a new custom meta to the buffer with the given select value.
pub fn add(
buffer: &mut gst::BufferRef,
select: bool,
) -> gst::MetaRefMut<Self, gst::meta::Standalone> {
unsafe {
// First add it: this will store an empty label via custom_meta_init().
let meta = gst::ffi::gst_buffer_add_meta(
buffer.as_mut_ptr(),
imp::custom_meta_get_info(),
ptr::null_mut(),
) as *mut imp::SelectMeta;
// Then actually set the label.
{
let meta = &mut *meta;
meta.select = select;
}
Self::from_mut_ptr(buffer, meta)
}
}
// Retrieve the stored label.
pub fn get_select(&self) -> bool {
self.0.select
}
}
// Trait to allow using the gst::Buffer API with this meta.
unsafe impl MetaAPI for SelectMeta {
type GstType = imp::SelectMeta;
fn get_meta_api() -> glib::Type {
imp::custom_meta_api_get_type()
}
}
impl fmt::Debug for SelectMeta {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("SelectMeta")
.field("select", &self.get_select())
.finish()
}
}
// Actual unsafe implementation of the meta.
mod imp {
use glib::translate::*;
use once_cell::sync::Lazy;
use std::mem;
use std::ptr;
// This is the C type that is actually stored as meta inside the buffers.
#[repr(C)]
pub struct SelectMeta {
parent: gst::ffi::GstMeta,
pub(super) select: bool,
}
// Function to register the meta API and get a type back.
pub(super) fn custom_meta_api_get_type() -> glib::Type {
static TYPE: Lazy<glib::Type> = Lazy::new(|| unsafe {
let t = from_glib(gst::ffi::gst_meta_api_type_register(
b"SelectMetaAPI\0".as_ptr() as *const _,
// We provide no tags here as our meta is just a label and does
// not refer to any specific aspect of the buffer
[ptr::null::<std::os::raw::c_char>()].as_ptr() as *mut *const _,
));
assert_ne!(t, glib::Type::Invalid);
t
});
*TYPE
}
// Initialization function for our meta. This needs to ensure all fields are correctly
// initialized. They will contain random memory before.
unsafe extern "C" fn custom_meta_init(
meta: *mut gst::ffi::GstMeta,
_params: glib::ffi::gpointer,
_buffer: *mut gst::ffi::GstBuffer,
) -> glib::ffi::gboolean {
let meta = &mut *(meta as *mut SelectMeta);
// Need to initialize all our fields correctly here
ptr::write(&mut meta.select, false);
true.to_glib()
}
// Free function for our meta. This needs to free/drop all memory we allocated.
unsafe extern "C" fn custom_meta_free(
meta: *mut gst::ffi::GstMeta,
_buffer: *mut gst::ffi::GstBuffer,
) {
let meta = &mut *(meta as *mut SelectMeta);
// Need to free/drop all our fields here.
ptr::drop_in_place(&mut meta.select);
}
// Transform function for our meta. This needs to get it from the old buffer to the new one
// in a way that is compatible with the transformation type. In this case we just always
// copy it over.
unsafe extern "C" fn custom_meta_transform(
dest: *mut gst::ffi::GstBuffer,
meta: *mut gst::ffi::GstMeta,
_buffer: *mut gst::ffi::GstBuffer,
_type_: glib::ffi::GQuark,
_data: glib::ffi::gpointer,
) -> glib::ffi::gboolean {
let meta = &mut *(meta as *mut SelectMeta);
// We simply copy over our meta here. Other metas might have to look at the type
// and do things conditional on that, or even just drop the meta.
super::SelectMeta::add(gst::BufferRef::from_mut_ptr(dest), meta.select.clone());
true.to_glib()
}
// Register the meta itself with its functions.
pub(super) fn custom_meta_get_info() -> *const gst::ffi::GstMetaInfo {
struct MetaInfo(ptr::NonNull<gst::ffi::GstMetaInfo>);
unsafe impl Send for MetaInfo {}
unsafe impl Sync for MetaInfo {}
static META_INFO: Lazy<MetaInfo> = Lazy::new(|| unsafe {
MetaInfo(
ptr::NonNull::new(gst::ffi::gst_meta_register(
custom_meta_api_get_type().to_glib(),
b"SelectMeta\0".as_ptr() as *const _,
mem::size_of::<SelectMeta>(),
Some(custom_meta_init),
Some(custom_meta_free),
Some(custom_meta_transform),
) as *mut gst::ffi::GstMetaInfo)
.expect("Failed to register meta API"),
)
});
META_INFO.0.as_ptr()
}
}
```
The upstream probe:
```rust
decoder.get_static_pad("src").unwrap().add_probe(
gst::PadProbeType::BUFFER,
|_pad, info| {
if let Some(gst::PadProbeData::Buffer(ref mut buffer)) = &mut info.data {
{
let buffer = buffer.make_mut();
selectmeta::SelectMeta::add(buffer, true);
}
}
gst::PadProbeReturn::Ok
},
);
```
The frame select element:
```rust
use gst::{gst_debug, gst_element_error, gst_info, gst_loggable_error};
use crate::selectmeta;
use glib::subclass;
use glib::subclass::prelude::*;
use gst::prelude::*;
use gst::subclass::prelude::*;
use gst::{gst_log, gst_trace};
use once_cell::sync::Lazy;
static CAT: Lazy<gst::DebugCategory> = Lazy::new(|| {
gst::DebugCategory::new(
"frameselect",
gst::DebugColorFlags::empty(),
Some("FrameSelect Element"),
)
});
pub struct FrameSelect {
srcpad: gst::Pad,
sinkpad: gst::Pad,
}
impl FrameSelect {
fn sink_chain(
&self,
pad: &gst::Pad,
_element: &super::FrameSelect,
buffer: gst::Buffer,
) -> Result<gst::FlowSuccess, gst::FlowError> {
gst_log!(CAT, obj: pad, "Handling buffer {:?}", buffer);
let meta = buffer
.get_meta::<selectmeta::SelectMeta>()
.expect("No custom meta found");
match meta.get_select() {
true => {
self.srcpad.push(buffer)
},
false => {
Ok(gst_base::BASE_TRANSFORM_FLOW_DROPPED)
}
}
}
fn sink_event(&self, pad: &gst::Pad, _element: &super::FrameSelect, event: gst::Event) -> bool {
gst_log!(CAT, obj: pad, "Handling event {:?}", event);
self.srcpad.push_event(event)
}
fn sink_query(
&self,
pad: &gst::Pad,
_element: &super::FrameSelect,
query: &mut gst::QueryRef,
) -> bool {
gst_log!(CAT, obj: pad, "Handling query {:?}", query);
self.srcpad.peer_query(query)
}
fn src_event(&self, pad: &gst::Pad, _element: &super::FrameSelect, event: gst::Event) -> bool {
gst_log!(CAT, obj: pad, "Handling event {:?}", event);
self.sinkpad.push_event(event)
}
fn src_query(
&self,
pad: &gst::Pad,
_element: &super::FrameSelect,
query: &mut gst::QueryRef,
) -> bool {
gst_log!(CAT, obj: pad, "Handling query {:?}", query);
self.sinkpad.peer_query(query)
}
}
impl ObjectSubclass for FrameSelect {
const NAME: &'static str = "frameselect";
type Type = super::FrameSelect;
type ParentType = gst::Element;
type Instance = gst::subclass::ElementInstanceStruct<Self>;
type Class = subclass::simple::ClassStruct<Self>;
glib::glib_object_subclass!();
fn with_class(klass: &Self::Class) -> Self {
let templ = klass.get_pad_template("sink").unwrap();
let sinkpad = gst::Pad::builder_with_template(&templ, Some("sink"))
.chain_function(|pad, parent, buffer| {
FrameSelect::catch_panic_pad_function(
parent,
|| Err(gst::FlowError::Error),
|frameselect, element| frameselect.sink_chain(pad, element, buffer),
)
})
.event_function(|pad, parent, event| {
FrameSelect::catch_panic_pad_function(
parent,
|| false,
|frameselect, element| frameselect.sink_event(pad, element, event),
)
})
.query_function(|pad, parent, query| {
FrameSelect::catch_panic_pad_function(
parent,
|| false,
|frameselect, element| frameselect.sink_query(pad, element, query),
)
})
.build();
let templ = klass.get_pad_template("src").unwrap();
let srcpad = gst::Pad::builder_with_template(&templ, Some("src"))
.event_function(|pad, parent, event| {
FrameSelect::catch_panic_pad_function(
parent,
|| false,
|frameselect, element| frameselect.src_event(pad, element, event),
)
})
.query_function(|pad, parent, query| {
FrameSelect::catch_panic_pad_function(
parent,
|| false,
|frameselect, element| frameselect.src_query(pad, element, query),
)
})
.build();
Self { srcpad, sinkpad }
}
fn class_init(klass: &mut Self::Class) {
klass.set_metadata(
"FrameSelect",
"Generic",
"",
"Ryan Brigden <rpb@hey.com>",
);
let caps = gst::Caps::new_any();
let src_pad_template = gst::PadTemplate::new(
"src",
gst::PadDirection::Src,
gst::PadPresence::Always,
&caps,
)
.unwrap();
klass.add_pad_template(src_pad_template);
let sink_pad_template = gst::PadTemplate::new(
"sink",
gst::PadDirection::Sink,
gst::PadPresence::Always,
&caps,
)
.unwrap();
klass.add_pad_template(sink_pad_template);
}
}
impl ObjectImpl for FrameSelect {
fn constructed(&self, obj: &Self::Type) {
self.parent_constructed(obj);
obj.add_pad(&self.sinkpad).unwrap();
obj.add_pad(&self.srcpad).unwrap();
}
}
impl ElementImpl for FrameSelect {
fn change_state(
&self,
element: &Self::Type,
transition: gst::StateChange,
) -> Result<gst::StateChangeSuccess, gst::StateChangeError> {
gst_trace!(CAT, obj: element, "Changing state {:?}", transition);
self.parent_change_state(element, transition)
}
}
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/848tagdemux, oggdemux: GStreamer-CRITICAL gst_pad_get_range_unchecked when tryin...2021-01-04T15:06:11Zslyblotytagdemux, oggdemux: GStreamer-CRITICAL gst_pad_get_range_unchecked when trying to play OGG filesStarting recently, about 2-3 weeks ago, I believe after some update, Clementine stopped playing OGG files and this error message gets printed to the terminal:
```
(clementine:647736): GStreamer-CRITICAL **: 11:27:26.111: gst_pad_get_ran...Starting recently, about 2-3 weeks ago, I believe after some update, Clementine stopped playing OGG files and this error message gets printed to the terminal:
```
(clementine:647736): GStreamer-CRITICAL **: 11:27:26.111: gst_pad_get_range_unchecked: assertion '!*buffer || res_buf == *buffer' failed
(clementine:647736): GStreamer-CRITICAL **: 11:27:26.111: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
11:27:26.186 WARN unknown QTimeLine::start: already running
11:27:26.691 WARN unknown QTimeLine::start: already running
11:27:26.691 WARN unknown QTimeLine::start: already running
11:27:26.695 WARN unknown QTimeLine::start: already running
```
Version info:
- Fedora 33 5.9.11-200.fc33.x86_64
- clementine.x86_64: 1.4.0-3.rc1.20200617gitedb8c3b.fc33.1
- gstreamer1.x86_64: 1.18.2-1.fc33
- gstreamer1-libav.x86_64: 1.18.1-1.fc33
- gstreamer1-plugin-openh264.x86_64: 1.16.2-2.fc33
- gstreamer1-plugins-bad-free.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-bad-free-extras.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-base.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-good.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-good-gtk.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-good-qt.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-ugly.x86_64: 1.18.1-1.fc33
- gstreamer1-plugins-ugly-free.x86_64: 1.18.2-1.fc33https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/643GStreamer-CRITICAL gst_pad_get_range_unchecked when trying to play OGG files2020-12-16T10:16:35ZslyblotyGStreamer-CRITICAL gst_pad_get_range_unchecked when trying to play OGG filesStarting recently, about 2-3 weeks ago, I believe after some update, Clementine stopped playing OGG files and this error message gets printed to the terminal:
```
(clementine:647736): GStreamer-CRITICAL **: 11:27:26.111: gst_pad_get_ran...Starting recently, about 2-3 weeks ago, I believe after some update, Clementine stopped playing OGG files and this error message gets printed to the terminal:
```
(clementine:647736): GStreamer-CRITICAL **: 11:27:26.111: gst_pad_get_range_unchecked: assertion '!*buffer || res_buf == *buffer' failed
(clementine:647736): GStreamer-CRITICAL **: 11:27:26.111: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
11:27:26.186 WARN unknown QTimeLine::start: already running
11:27:26.691 WARN unknown QTimeLine::start: already running
11:27:26.691 WARN unknown QTimeLine::start: already running
11:27:26.695 WARN unknown QTimeLine::start: already running
```
Version info:
- Fedora 33 5.9.11-200.fc33.x86_64
- clementine.x86_64: 1.4.0-3.rc1.20200617gitedb8c3b.fc33.1
- gstreamer1.x86_64: 1.18.2-1.fc33
- gstreamer1-libav.x86_64: 1.18.1-1.fc33
- gstreamer1-plugin-openh264.x86_64: 1.16.2-2.fc33
- gstreamer1-plugins-bad-free.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-bad-free-extras.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-base.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-good.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-good-gtk.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-good-qt.x86_64: 1.18.2-1.fc33
- gstreamer1-plugins-ugly.x86_64: 1.18.1-1.fc33
- gstreamer1-plugins-ugly-free.x86_64: 1.18.2-1.fc33https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/816v4l2videodec: handle bt2020_102022-05-26T13:36:16ZKevin Songv4l2videodec: handle bt2020_10V4l2object has trick to handle bt2020 as v4l2 don't have those defines. I have one stream which is bt2020_10 which is parsed from h265parse. But v4l2videodec can't handle it. it will changed to bt2020_12 as below code. I think we can map...V4l2object has trick to handle bt2020 as v4l2 don't have those defines. I have one stream which is bt2020_10 which is parsed from h265parse. But v4l2videodec can't handle it. it will changed to bt2020_12 as below code. I think we can map gst bt2020_10/12 to v4l2 bt709, but need consider input caps transfer when map v4l2 bt709 back to gst bt2020_10/12. Is it reasonable?
switch (transfer) {
case V4L2_XFER_FUNC_709:
if (colorspace == V4L2_COLORSPACE_BT2020 && fmt->fmt.pix.height >= 2160)
cinfo->transfer = GST_VIDEO_TRANSFER_BT2020_12;
else
cinfo->transfer = GST_VIDEO_TRANSFER_BT709;
break;https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/issues/294How to run gstreamer vaapi with opencv2020-12-13T12:00:20ZzionsixeyeHow to run gstreamer vaapi with opencvHello,
I'm trying to run live RTSP stream from IP camera with opencv VideoCapture() class using gstreamer with VA-API to offload decoding operation to gpu.
I was able to run successfully the next pipeline from terminal: (Display of liv...Hello,
I'm trying to run live RTSP stream from IP camera with opencv VideoCapture() class using gstreamer with VA-API to offload decoding operation to gpu.
I was able to run successfully the next pipeline from terminal: (Display of live video was opened)
```
‘gst-launch-1.0 rtspsrc location=rtsp://UserName:password@CamIp:CamPort latency=0 ! decodebin ! videoconvert ! vaapisink'
```
The problem is that I could not find a pipeline (with VA-API) that works with opencv videoCapture().
Our opencv installation was built from source with G-Streamer. Is it sufficient to support VA-API?
If so, Is there a known pipeline for our use case including VA-API that works with opencv?
here is vainfo output:
```
libva info: VA-API version 1.9.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_9
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.9 (libva 2.5.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 20.3.0 (86ec0b6f)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointFEI
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointFEI
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
```
gst-inspect-1.0 vaapi output:
```
Plugin Details:
Name vaapi
Description VA-API based elements
Filename /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so
Version 1.16.1
License LGPL
Source module gstreamer-vaapi
Source release date 2019-09-23
Binary package gstreamer-vaapi
Origin URL http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
vaapijpegdec: VA-API JPEG decoder
vaapimpeg2dec: VA-API MPEG2 decoder
vaapih264dec: VA-API H264 decoder
vaapivc1dec: VA-API VC1 decoder
vaapivp8dec: VA-API VP8 decoder
vaapivp9dec: VA-API VP9 decoder
vaapih265dec: VA-API H265 decoder
vaapipostproc: VA-API video postprocessing
vaapidecodebin: VA-API Decode Bin
vaapisink: VA-API sink
vaapimpeg2enc: VA-API MPEG-2 encoder
vaapih265enc: VA-API H265 encoder
vaapivp8enc: VA-API VP8 encoder
vaapijpegenc: VA-API JPEG encoder
vaapih264enc: VA-API H264 encoder
vaapih264feienc: VA-API H264 FEI Advanced encoder (Experimental)
16 features:
+-- 16 elements
```
The PC information:
CPU: Intel® Core™ i9-9900 CPU @ 3.10GHz × 16
Graphic: Intel® UHD Graphics 630 (Coffeelake 3x8 GT2)
Cameras information:
we use H.264/H.265 protocol.
from 720p and up to 4k resolutions.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1482wasapisink: Using WASAPI breaks drag and drop in music player2021-10-19T23:48:38ZJonas Kvingewasapisink: Using WASAPI breaks drag and drop in music playerAfter starting and stopping playback in my music player, it is no longer possible to rearrange songs by drag and drop in the playlist when using WASAPI as output.
I don't know if this is a Qt bug, or gstreamer bug, but the problem only o...After starting and stopping playback in my music player, it is no longer possible to rearrange songs by drag and drop in the playlist when using WASAPI as output.
I don't know if this is a Qt bug, or gstreamer bug, but the problem only occurs on Windows when using
WASAPI as output so I suspect the WASAPI plugin is doing something incorrectly, possibly calling CoUninitialize too many times. Same problems occurs both with Qt 5.15.2 and Qt 6.0.0.
This problem occurs with or without my patch for issue https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1481.
This can be seen using the builds from: https://builds.strawberrymusicplayer.org/windows/
Steps to reproduce:
1. Attempt to rearrange songs in the playlist by dragging and dropping them, you can see that it works fine.
2. Go to tools / settings / backend, set output to WASAPI.
3. Start playback of a song.
4. Stop playback.
5. Attempt to rearrange songs in the playlist by dragging and dropping them, it no longer works.
6. Restart the program.
7. Go to tools / settings / backend, set output to direct sound.
8. Repeat the same procedure, and you can see that it now works even after starting and stopping playback.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1481wasapisink: Playback fails when calling gst_element_set_state in a concurrent...2021-02-06T00:41:11ZJonas Kvingewasapisink: Playback fails when calling gst_element_set_state in a concurrent threadWhen using gst_element_set_state in a concurrent thread it fails because of a missing CoInitializeEx() in gst_wasapi_util_get_device_enumerator, so initial playback fails.
I added the following patch to gstwsapiutil.c which seem to fix i...When using gst_element_set_state in a concurrent thread it fails because of a missing CoInitializeEx() in gst_wasapi_util_get_device_enumerator, so initial playback fails.
I added the following patch to gstwsapiutil.c which seem to fix it, but I'm not entirely sure if this is correct:
```
diff --git a/sys/wasapi/gstwasapiutil.c b/sys/wasapi/gstwasapiutil.c
index 1111111..2222222 100644
--- a/sys/wasapi/gstwasapiutil.c
+++ b/sys/wasapi/gstwasapiutil.c
@@ -311,10 +311,14 @@ gst_wasapi_util_get_device_enumerator (GstObject *
self)
HRESULT hr;
IMMDeviceEnumerator *enumerator = NULL;
+ HRESULT hr_coinit = CoInitializeEx (NULL, COINIT_MULTITHREADED);
+
hr = CoCreateInstance (&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
&IID_IMMDeviceEnumerator, (void **) &enumerator);
HR_FAILED_RET (hr, CoCreateInstance (MMDeviceEnumerator), NULL);
+ if (hr_coinit == S_OK || hr_coinit == S_FALSE) CoUninitialize();
+
return enumerator;
}
```https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/issues/293intel HD 5500 VA-API not work2020-12-16T18:54:02ZGhost Userintel HD 5500 VA-API not workdoes not work with **export GST_VAAPI_ALL_DRIVERS=1**
Gstreamer is uptated to **1.18.2**
as a matter of order I preferred to post the data in a text file[info-debug](/uploads/ca3eb815eb84aecf605a0bc55bc4f288/info-debug)
![Schermata_d...does not work with **export GST_VAAPI_ALL_DRIVERS=1**
Gstreamer is uptated to **1.18.2**
as a matter of order I preferred to post the data in a text file[info-debug](/uploads/ca3eb815eb84aecf605a0bc55bc4f288/info-debug)
![Schermata_da_2020-12-12_21-41-39](/uploads/42a8628250d20047f18d89499175eb14/Schermata_da_2020-12-12_21-41-39.png)https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/302video/x-raw(memory:NVMM) from gst::Caps::new_simple error2020-12-12T08:55:05ZRyan Brigdenvideo/x-raw(memory:NVMM) from gst::Caps::new_simple errorI am trying to create a plugin (called `frameselect`) that will pass a video frame from a `nvv4ldecoder` element to a `nvv4lh264enc` based on the value of a custom metadata on the buffer. The transform method simply returns `Ok(gst_base:...I am trying to create a plugin (called `frameselect`) that will pass a video frame from a `nvv4ldecoder` element to a `nvv4lh264enc` based on the value of a custom metadata on the buffer. The transform method simply returns `Ok(gst_base::BASE_TRANSFORM_FLOW_DROPPED)` if the metadata specifies (by a bool field) that the buffer should not be passed to the encoder.
Given that the `src` caps of `nvv4ldecoder` are
```
SRC template: 'src'
Availability: Always
Capabilities:
video/x-raw(memory:NVMM)
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
```
And the caps I specify in my plugin through `gst::Caps::new_simple` are
```rust
let caps = gst::Caps::new_simple(
"video/x-raw(memory:NVMM)",
&[
("width", &gst::IntRange::<i32>::new(0, i32::MAX)),
("height", &gst::IntRange::<i32>::new(0, i32::MAX)),
(
"framerate",
&gst::FractionRange::new(
gst::Fraction::new(0, 1),
gst::Fraction::new(i32::MAX, 1),
),
),
],
);
```
I get this error
```
0:00:00.468243547 7033 0x55d5222ee600 DEBUG GST_PLUGIN_LOADING gstpluginfeature.c:116:gst_plugin_feature_load: loaded plugin frameselect
0:00:00.468256890 7033 0x55d5222ee600 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "frameselect" named "frameselect"
0:00:00.468271715 7033 0x55d5222ee600 DEBUG GST_ELEMENT_PADS gstelement.c:302:gst_element_base_class_init: type GstBaseTransform : factory (nil)
0:00:00.468284816 7033 0x55d5222ee600 DEBUG basetransform gstbasetransform.c:322:gst_base_transform_class_init: gst_base_transform_class_init
0:00:00.468301529 7033 0x55d5222ee600 DEBUG GST_ELEMENT_PADS gstelement.c:302:gst_element_base_class_init: type FrameSelect : factory 0x55d5225214e0
0:00:00.468318759 7033 0x55d5222ee600 WARN structure gststructure.c:197:gst_structure_validate_name: Invalid character '(' at offset 11 in structure name: video/x-raw(memory:NVMM)
```
I have tried setting the `sink` caps to `video/x-raw`, but the pads will fail to link due to intersection failure.
[On nvidia forums](https://forums.developer.nvidia.com/t/using-x-raw-memory-nvmm-in-gstreamer-program/42654), some have suggested using `gst_caps_from_string` instead of `gst_caps_new_simple`. This seems to be an issue on nvidia's end, but I would appreciate some advice on getting this to work in gstreamer-rs.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/136fallbacksrc: Continuous toggling between fallback_av and main input on `resta...2023-04-04T09:07:37ZAbdul Rehmanfallbacksrc: Continuous toggling between fallback_av and main input on `restart-on-eos` enabledThe video plays fine at the start and then on eos it switches to fallback, but the `position` query on the ui stops frequently as if the source is continuously switching between main input and fallback. The same can be observed in the lo...The video plays fine at the start and then on eos it switches to fallback, but the `position` query on the ui stops frequently as if the source is continuously switching between main input and fallback. The same can be observed in the logs.
[custom.diff](/uploads/996eb4b68625cd07c4ba4528dbfa9c93/custom.diff)
[gst.log](/uploads/6769bff8c51762e7e3b56730be7ef4ba/gst.log)
[gtk_parsebin_fallbacksrc.rs](/uploads/a5254af0cb2ab40af8ae4baa02101bea/gtk_parsebin_fallbacksrc.rs)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/641Cheese travando no parrot OS - notebook nitro52021-05-11T23:30:21ZdanielhamaCheese travando no parrot OS - notebook nitro5Dec 10 23:58:39 parrot cheese[412743]: Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-libs/gst/video/gstvideofilter.c(296): gst_video_filter_tr...Dec 10 23:58:39 parrot cheese[412743]: Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-libs/gst/video/gstvideofilter.c(296): gst_video_filter_transform (): /GstCameraBin:camerabin/GstEncodeBin:video-encodebin/GstVideoConvert:videoconvert1:#012invalid video buffer receivedhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/847decodebin3: sending gst_event_new_select_streams() freezes GUI thread under c...2020-12-11T19:07:49ZDaniel Handojodecodebin3: sending gst_event_new_select_streams() freezes GUI thread under certain conditionsI'll try to describe the conditions of the bug as best I can. I'm using gst-plugins-base 1.16.2 and gstreamer 1.16.2 in a Qt application. My pipeline is based on playbin3. I'm playing a short 3.8 second mp4 video. playbin3 automagically ...I'll try to describe the conditions of the bug as best I can. I'm using gst-plugins-base 1.16.2 and gstreamer 1.16.2 in a Qt application. My pipeline is based on playbin3. I'm playing a short 3.8 second mp4 video. playbin3 automagically creates a decodebin3 for my video, which contains a GstParseBin with a QTDemux element connected to a GstMultiQueue. Code from QTDemux is being run in a background thread periodically; I assume this is to process and render video frames, or "samples". According to gst debug logs, the mp4 video I'm playing is composed of 1 segment, which is broken into 114 samples. After the 114th sample is processed, the background thread declares that "All streams are EOS" and attempts to "drain" all streams. I don't know what this means.
The first half of this bug requires us to pause the pipeline right after the 114th sample is processed, but before the background thread can see there isn't a 115th sample and begin processing GST_EVENT_EOS. If you pause right at that moment, the background thread will continue working anyway, processing GST_EVENT_EOS, then block for some reason on a line in GstMultiQueue (apparently waiting for the queue to not be full). The background thread seems to be blocked indefinitely until the player returns to the PLAYING state.
The second half this bug is trying to send gst_event_new_select_streams() while the background thread is paused. The background thread, on its way to inspecting the multiqueue, acquires a lock for the decodebin3 bin object. This lock is needed by the GUI thread to send gst_event_new_select_streams() apparently, so the GUI thread blocks too, waiting for the background thread to release the lock. This is the entirety of the bug. I believe GStreamer needs to gracefully handle receiving gst_event_new_select_streams() while the video is paused and in this state. It should not freeze the GUI thread.
Attached is a stack trace with personal comments analyzing the lockup issue. Unfortunately, the window of time in which pausing causes this issue is really narrow so I wasn't able to create a concise working example. I personally use brute force and multiple video player instances (~30) playing short videos on loop being paused all at once to reproduce the issue.
[gdb.txt](/uploads/74c6bdadb1ed4e4fe723b5430b01ff5f/gdb.txt)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/640gstinfo: clang complains about nonstring literal passsed to g_vasprintf2022-09-13T20:40:16ZJordan Petridіsgstinfo: clang complains about nonstring literal passsed to g_vasprintfWhen building a static build of GStreamer with `-Dgst_debug=false` the following warning occurs.
```
[52/455] Compiling C object gst/libgstreamer-1.0.a.p/gstinfo.c.o
FAILED: gst/libgstreamer-1.0.a.p/gstinfo.c.o
clang -Igst/libgstreamer...When building a static build of GStreamer with `-Dgst_debug=false` the following warning occurs.
```
[52/455] Compiling C object gst/libgstreamer-1.0.a.p/gstinfo.c.o
FAILED: gst/libgstreamer-1.0.a.p/gstinfo.c.o
clang -Igst/libgstreamer-1.0.a.p -Igst -I../gst -I. -I.. -Igst/parse -I../gst/parse -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O2 -g -fvisibility=hidden -fno-strict-aliasing -DG_DISABLE_DEPRECATED -Wno-unused -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef -Wwrite-strings -Wformat -Wformat-nonliteral -Wformat-security -Wold-style-definition -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return -Wno-multichar -Wdeclaration-after-statement -Wvla -Wpointer-arith -fPIC -pthread -DHAVE_CONFIG_H -DGST_STATIC_COMPILATION -D_GNU_SOURCE -DG_LOG_DOMAIN=g_log_domain_gstreamer -DGST_DISABLE_DEPRECATED -DBUILDING_GST -MD -MQ gst/libgstreamer-1.0.a.p/gstinfo.c.o -MF gst/libgstreamer-1.0.a.p/gstinfo.c.o.d -o gst/libgstreamer-1.0.a.p/gstinfo.c.o -c ../gst/gstinfo.c
../gst/gstinfo.c:2523:30: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
len = g_vasprintf (result, clean_format, args);
^~~~~~~~~~~~
1 error generated.
[65/455] Compiling C object gst/libgstreamer-1.0.a.p/gstpad.c.o
```
Which complains about this code block https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/80f671207afc4086ca54117a99a51d9b4e750559/gst/gstinfo.c#L2494-2532
```c
/* Need this for _gst_element_error_printf even if GST_REMOVE_DISABLED is set:
* fallback function that cleans up the format string and replaces all pointer
* extension formats with plain %p. */
#ifdef GST_DISABLE_GST_DEBUG
int
__gst_info_fallback_vasprintf (char **result, char const *format, va_list args)
{
gchar *clean_format, *c;
gsize len;
if (format == NULL)
return -1;
clean_format = g_strdup (format);
c = clean_format;
while ((c = strstr (c, "%p\a"))) {
if (c[3] < 'A' || c[3] > 'Z') {
c += 3;
continue;
}
len = strlen (c + 4);
memmove (c + 2, c + 4, len + 1);
c += 2;
}
while ((c = strstr (clean_format, "%P"))) /* old GST_PTR_FORMAT */
c[1] = 'p';
while ((c = strstr (clean_format, "%Q"))) /* old GST_SEGMENT_FORMAT */
c[1] = 'p';
len = g_vasprintf (result, clean_format, args);
g_free (clean_format);
if (*result == NULL)
return -1;
return len;
}
#endif
```
Of all the configurations we build this is only detected by ~~static~~ (happens with all buildtypes) builds with Clang (only tried 9.0+) while `gst_debug` is disabled. Though it would have been expected such code to trigger on every build.
To reproduce its enough to do the following from a gst checkout
```bash
export CC=clang
export CXX=clang++
meson _build \
--default-library=static \
-Dgst_debug=false \
-Dwerror=true \
-Dintrospection=disabled \
-Ddoc=disabled
ninja -C _build
```
Any ideas what to do about this? It seems like we are in the wrong with the string substitution even though we are trying to sanitize it. Although I am a very very novice with C stuff in general.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1480intervideosrc with msdkvpp dmabuf output pipeline is failing.2020-12-13T13:47:51ZLim Siew Hoonintervideosrc with msdkvpp dmabuf output pipeline is failing.Commmand:
gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12,width=1280,height=960 ! msdkvpp ! video/x-raw,format=NV12,width=1280,height=800 ! intervideosink channel=frontvideosink async=false render-delay=5000000 max-lateness=5000000...Commmand:
gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12,width=1280,height=960 ! msdkvpp ! video/x-raw,format=NV12,width=1280,height=800 ! intervideosink channel=frontvideosink async=false render-delay=5000000 max-lateness=5000000
gst-launch-1.0 -v intervideosrc channel=frontvideosink ! msdkvpp ! 'video/x-raw, format=NV12' ! msdkh264enc ! video/x-h264, stream-format=byte-stream ! queue ! h264parse ! rtph264pay ! udpsink clients=10.1.1.101:3000 sync=false
-> ok, can run.
gst-launch-1.0 -v intervideosrc channel=frontvideosink ! msdkvpp ! 'video/x-raw(memory:DMABuf), format=NV12' ! msdkh264enc ! video/x-h264, stream-format=byte-stream ! queue ! h264parse ! rtph264pay ! udpsink clients=10.1.1.101:3000 sync=false
-> fail and exit.
This is error:
ERROR: from element /GstPipeline:pipeline0/GstInterVideoSrc:intervideosrc0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstInterVideoSrc:intervideosrc0:
streaming stopped, reason not-negotiated (-4)
Check step into gst_inter_video_src_fixate function and do dump caps string before exit the function:
msdkvpp with dmabuf output:
gst_inter_video_src_fixate: exit: desc : video/x-raw, format=(string)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, interlace-mode=(string){ progressive, interleaved, mixed }
msdkvpp without dmabuf output:
gst_inter_video_src_fixate: exit: desc : video/x-raw, format=(string)NV12, width=(int)320, height=(int)240, framerate=(fraction)30/1, interlace-mode=(string)progressive
Inside the gst_inter_video_src_fixate at https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/master/gst/inter/gstintervideosrc.c#L501
It should be do check using 'interlace-mode' and do set it to progressive.
Without specific msdkvpp output is dmabuf memory, I can see it passing it already set interlace-mode as progressive. That why I didn't see the pipeline is failing at here.
gst-plugins-bad : master
OS: Ubuntu 18.04https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/301Rust bindings for custom metadata API2020-12-09T16:14:58ZRyan BrigdenRust bindings for custom metadata APIIs there an example of adding Rust bindings for a custom GstMeta API written in C/glib with only the headers on hand? Is this feasible?
My custom GstMeta follows the API as specified in [the plugin development documentation](https://gst...Is there an example of adding Rust bindings for a custom GstMeta API written in C/glib with only the headers on hand? Is this feasible?
My custom GstMeta follows the API as specified in [the plugin development documentation](https://gstreamer.freedesktop.org/documentation/plugin-development/advanced/allocation.html?gi-language=c#api-example).
Thanks!https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/846basetextoverlay: GL pipeline with multiple overlays renders only the first one2022-02-10T18:00:47ZPhilippe Normandbasetextoverlay: GL pipeline with multiple overlays renders only the first one```
gst-launch-1.0 videotestsrc ! textoverlay text="text1" valignment="top" font-desc="sans bold 30" \
! textoverlay text="text2" halignment="right" font-desc="sans bold 30" \
! tex...```
gst-launch-1.0 videotestsrc ! textoverlay text="text1" valignment="top" font-desc="sans bold 30" \
! textoverlay text="text2" halignment="right" font-desc="sans bold 30" \
! textoverlay text="text3" halignment="left" font-desc="sans bold 30" ! glupload ! gtkglsink
```
Current result: ![Screenshot_from_2020-12-09_11-22-57](/uploads/e1c455da44538f24362ba57b78891c02/Screenshot_from_2020-12-09_11-22-57.png)
Expected result: ![Screenshot_from_2020-12-09_11-21-27](/uploads/b88754ea100b7e5e87eed0fbf9b170c5/Screenshot_from_2020-12-09_11-21-27.png)
This is happening because the overlay compositor handles one overlay composition meta per frame, but textoverlay adds a new meta per upstream meta found, so in this pipeline the final video frame has 3 composition metas, each new one storing duplicate infos of the previous.
I have a patch removing redundant metas, will send an MR...https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/issues/23Incompatibility with x264 as a subproject2020-12-09T00:52:04ZMatthew Watersmatthew@centricular.comIncompatibility with x264 as a subprojectIf x264 is built as a subproject (from gst-plugins-ugly) then ffmpeg attempts to use said subproject as a regular dependency object in some cases which very much fails with:
```
||Run-time dependency libwebpmux found: NO (tried pkgconfi...If x264 is built as a subproject (from gst-plugins-ugly) then ffmpeg attempts to use said subproject as a regular dependency object in some cases which very much fails with:
```
||Run-time dependency libwebpmux found: NO (tried pkgconfig and cmake)
||Dependency x264 found: YES 0.157.2945+49 (cached)
|
|../subprojects/FFmpeg/meson.build:1596:10: Exception: Dependencies must be external dependencies
Subproject gst-libav is buildable: NO (disabling)
```