diff options
author | Mavridis Philippe <mavridisf@gmail.com> | 2021-01-30 18:27:00 +0200 |
---|---|---|
committer | Mavridis Philippe <mavridisf@gmail.com> | 2021-01-30 18:27:00 +0200 |
commit | cbf067eac1f1f2077ae06b99698df674330f4313 (patch) | |
tree | da1fe02d6b14e52aad6f9d1a85087c1fb9e2394c /src | |
parent | 3a5d06908cf1044a0ef68580c12c1deedb8257f7 (diff) | |
download | klamav-cbf067eac1f1f2077ae06b99698df674330f4313.tar.gz klamav-cbf067eac1f1f2077ae06b99698df674330f4313.zip |
Reworked First-Run Wizard.
It was made more compact because it doesn't make sense to have a
full-blown two-page wizard for setting up two paths and showing a
checkbox.
Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/firstrunwizard.ui | 327 | ||||
-rw-r--r-- | src/firstrunwizard.ui.h | 26 | ||||
-rw-r--r-- | src/klamav.cpp | 75 |
3 files changed, 151 insertions, 277 deletions
diff --git a/src/firstrunwizard.ui b/src/firstrunwizard.ui index 65baa24..08e0f60 100644 --- a/src/firstrunwizard.ui +++ b/src/firstrunwizard.ui @@ -8,10 +8,22 @@ <rect> <x>0</x> <y>0</y> - <width>830</width> - <height>514</height> + <width>700</width> + <height>400</height> </rect> </property> + <property name="minimumSize"> + <size> + <width>700</width> + <height>400</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>700</width> + <height>400</height> + </size> + </property> <property name="caption"> <string>First-Run Wizard</string> </property> @@ -20,260 +32,143 @@ <cstring>WizardPage</cstring> </property> <attribute name="title"> - <string></string> - </attribute> - <grid> - <property name="name"> - <cstring>unnamed</cstring> - </property> - <widget class="KActiveLabel" row="0" column="0"> - <property name="name"> - <cstring>text1</cstring> - </property> - <property name="text"> - <string><h1>Welcome to KlamAV!</h1> -<p>KlamAV aims to be easy and intuitive to use. Before you can get started though, you need to tell it where you want to store a couple of things.</p> -<p align="right"><i>"KlamAV is beta software!"</i> - The Author</p> -<h2>What is ClamAV?</h2> -<p>ClamAV is signature-based virus and malware detection software with a world-class updates infrastructure and a rapid development cycle.</p> -<h2>What is KlamAV?</h2> -<p>KlamAV is an anti-virus manager for TDE that allows you to manage your virus-scanning, scheduling, virus research and database updates. In other words, it's a front-end.</p> -<p> -<p>This wizard will help you setup KlamAV in one simple step. Click <i>Next</i> to begin, or if you do not like wizards, click <i>Skip</i>.</p> - -</string> - </property> - </widget> - <widget class="TQLabel" row="0" column="2"> - <property name="name"> - <cstring>preview</cstring> - </property> - <property name="sizePolicy"> - <sizepolicy> - <hsizetype>4</hsizetype> - <vsizetype>4</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="frameShape"> - <enum>GroupBoxPanel</enum> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - </widget> - <spacer row="0" column="1"> - <property name="name"> - <cstring>spacer3_2</cstring> - </property> - <property name="orientation"> - <enum>Vertical</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>21</width> - <height>320</height> - </size> - </property> - </spacer> - </grid> - </widget> - <widget class="TQWidget"> - <property name="name"> - <cstring>WizardPage_1</cstring> - </property> - <attribute name="title"> - <string>Storage Locations (1 of 1)</string> + <string>First-Run Wizard</string> </attribute> - <widget class="TQCheckBox"> + <widget class="KActiveLabel"> <property name="name"> - <cstring>CheckForDatabaseUpdates</cstring> + <cstring>text1</cstring> </property> <property name="geometry"> <rect> - <x>16</x> - <y>300</y> - <width>430</width> - <height>30</height> + <x>0</x> + <y>0</y> + <width>580</width> + <height>157</height> </rect> </property> - <property name="text"> - <string>Check for &updates to the signature database now.</string> - </property> - <property name="accel"> - <string>Alt+U</string> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - <property name="checked"> - <bool>true</bool> + <property name="text"> + <string><h1>Welcome to KlamAV!</h1> +<p>KlamAV aims to be easy and intuitive to use. Before you can get started though, you need to do set up a few options.</p> +<p>If you click 'Skip', you will need to set them up later.</p></string> </property> </widget> - <widget class="TQGroupBox"> + <widget class="TQLabel"> <property name="name"> - <cstring>groupBox1</cstring> + <cstring>pixmapLabel4</cstring> </property> <property name="geometry"> <rect> - <x>12</x> - <y>150</y> - <width>740</width> - <height>120</height> + <x>580</x> + <y>40</y> + <width>100</width> + <height>100</height> </rect> </property> - <property name="title"> - <string>Locations</string> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + <property name="scaledContents"> + <bool>true</bool> </property> - <widget class="KURLRequester"> - <property name="name"> - <cstring>DatabaseLocation</cstring> - </property> - <property name="geometry"> - <rect> - <x>250</x> - <y>31</y> - <width>480</width> - <height>31</height> - </rect> - </property> - <property name="mode"> - <number>6</number> - </property> - </widget> - <widget class="KURLRequester"> - <property name="name"> - <cstring>QuarantineLocation</cstring> - </property> - <property name="geometry"> - <rect> - <x>250</x> - <y>70</y> - <width>480</width> - <height>26</height> - </rect> - </property> - <property name="mode"> - <number>6</number> - </property> - </widget> - <widget class="TQLabel"> - <property name="name"> - <cstring>textLabel1</cstring> - </property> - <property name="geometry"> - <rect> - <x>11</x> - <y>31</y> - <width>230</width> - <height>26</height> - </rect> - </property> - <property name="text"> - <string>Signature Database Location:</string> - </property> - </widget> - <widget class="TQLabel"> - <property name="name"> - <cstring>textLabel1_2</cstring> - </property> - <property name="geometry"> - <rect> - <x>10</x> - <y>70</y> - <width>230</width> - <height>26</height> - </rect> - </property> - <property name="text"> - <string>Quarantine Location:</string> - </property> - </widget> </widget> - <spacer> + <widget class="TQCheckBox"> <property name="name"> - <cstring>spacer4_2</cstring> - </property> - <property name="orientation"> - <enum>Vertical</enum> - </property> - <property name="sizeType"> - <enum>Expanding</enum> - </property> - <property name="sizeHint"> - <size> - <width>20</width> - <height>20</height> - </size> + <cstring>CheckForDatabaseUpdates</cstring> </property> <property name="geometry"> <rect> - <x>394</x> - <y>279</y> - <width>20</width> - <height>20</height> + <x>10</x> + <y>280</y> + <width>685</width> + <height>23</height> </rect> </property> - </spacer> - <widget class="KActiveLabel"> + <property name="text"> + <string>Check for &updates to the signature database now.</string> + </property> + <property name="accel"> + <string>Alt+U</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + <widget class="TQGroupBox"> <property name="name"> - <cstring>text2</cstring> + <cstring>groupBox1</cstring> </property> <property name="geometry"> <rect> - <x>15</x> - <y>15</y> - <width>740</width> - <height>105</height> + <x>0</x> + <y>160</y> + <width>685</width> + <height>97</height> </rect> </property> <property name="sizePolicy"> <sizepolicy> <hsizetype>5</hsizetype> - <vsizetype>4</vsizetype> + <vsizetype>1</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="resizePolicy"> - <enum>Manual</enum> - </property> - <property name="text"> - <string><p>KlamAV needs to know two things to get started: where you want to store your quarantine and where you want to store your signature database.</p> -<p>You can change these settings at a later time using the configuration dialog.</p></string> - </property> - <property name="wrapPolicy"> - <enum>AtWordBoundary</enum> + <property name="title"> + <string>Locations</string> </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KURLRequester" row="0" column="1"> + <property name="name"> + <cstring>DatabaseLocation</cstring> + </property> + <property name="mode"> + <number>6</number> + </property> + </widget> + <widget class="TQLabel" row="1" column="0"> + <property name="name"> + <cstring>textLabel1_2</cstring> + </property> + <property name="text"> + <string>Quarantine Location:</string> + </property> + </widget> + <widget class="TQLabel" row="0" column="0"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>Signature Database Location:</string> + </property> + </widget> + <widget class="KURLRequester" row="1" column="1"> + <property name="name"> + <cstring>QuarantineLocation</cstring> + </property> + <property name="mode"> + <number>6</number> + </property> + </widget> + </grid> </widget> - <spacer> - <property name="name"> - <cstring>spacer16</cstring> - </property> - <property name="orientation"> - <enum>Vertical</enum> - </property> - <property name="sizeType"> - <enum>Fixed</enum> - </property> - <property name="sizeHint"> - <size> - <width>21</width> - <height>30</height> - </size> - </property> - <property name="geometry"> - <rect> - <x>200</x> - <y>120</y> - <width>21</width> - <height>30</height> - </rect> - </property> - </spacer> </widget> </widget> +<images> + <image name="image0"> + <data format="PNG" length="37740">89504e470d0a1a0a0000000d49484452000000c8000000c5080600000011c6bd400000000473424954080808087c0864880000200049444154789cecbd799864677ddffb397bd539555dd57b4ff7ac1a69b48c24240d08ad203663079b800db1b1891d6307e21b1cb88fe3f81a87d889791c2721f7c6b1716288f1851b6c3006d93808834048460b92d03e9ad1ecd333dd3dbd776d67dfee1fef39a7aaba7b46049046b2fbfb3cfd5475d77b963afd7ecff7b7bdbf23adaeceb1852d6c6173c817fb04b6b0859732b608b2852d5c005b04d9c2162e802d826c610b17c01641b6b0850b608b205bd8c205b045902d6ce102d822c816b670016c11640b5bb800b608b2852d5c005b04d9c2162e802d826c610b17c01641b6b0850b608b205bd8c205b045902d6ce102d822c816b670016c11640b5bb800b608b2852d5c005b04d9c2162e802d826c610b17807ab14fe0c544cd4cd3fc7dd391a48b792e5b7879e0ef05412ada7369643f4c2cef026522fb1ba9a25dbe45942d5c107f27085235d60a6590953a69ec0090246749fca344f6b4f83d6a099b52ae0210078f53336f489f8f2403869d26f17390b441bd944eb07d8b547f4f20bd9cfb6255f49994e878dfdf92a845124d6f3a5e56776563a68101d4d22e90ab48ca25b4fdc14d277d257e248de2c3c8ea20523c40aab4904b376c91e4ef095eb604a9a88fa549308bac0e6cf86c739288716a6957f1796ccfa2d56e41d6a70a7590a5415202d2f029226f1a6801037d0401b648f2f7042f4b13ab6aaca561fbc1421120339f32b2b41c878adebbc500f9444fa216b23e4512ada15810361f44b1ae449176117bdfc8c6addf56ec73c0042916bfa7f6716ab5a9e735cfb6f0f2c6cb2acc5b33d3b4a2cfa461fb4b0024d15af159af920c9826f9c4eea23bd149daa8e6d5c527b17d98389da61318e739728b8aee0320654352a545ecddd7e7ff6c06aba4a735334dad927ec1715b7869e225ab2035334d93b801409ada101dc76fe4264f17bdcad1fbfe7cc8273a805aba86d89e45b1a688edc354ac2972b5891655d431136c15acee3ed36c7359156a14aefc072a033f9ea6d66dd85e50a8c98061a771e7510821964d24a0529e4cb7ccb297175e923e48aff32dfc8535369a3e90fb06cfef87f47f2eab83c2ef0022e720b17d188078710e7dcfabfaf6df45bf2f92a3e9cfa3ce7e0c993de87b5ed5130810eaa648bb84ea842669e220c926ebc9b485972e5e722656cd4c539285e277591593727308f224d166e4818d6696d82637b34038ed8a25c8a28c4d129c7ab46f2c2054040a132c77d42503ea03136863b792700aefd49f9344d30473b3c576a9d22a5447924dd01c24fbfe0b5d02409866cf3b680b2f385e720449e24631797b277eaf432e30409f5fb10e9b134ba840af99855ced77f639456ccfd2472e2bcab65ba2e538858208956aa15857164383538f0ad32cdbaef7dcd2c421f5c5ab997c29adc487d2deec7eeeaf54f49934b09fa0121f4a9fcfc7d9c20b8b979c8955d19e4b13ffe806b3e9fcf98d2e118a702d805c250966fb1cf95ef49a590091f360460c08171f401bbb3553968d669622ed22555add8896d2226c3e48b8f880d8377bd0f7bc21f35f2271ac74a26b62250e716796986750b806a40af28044d2ea7241ad6e136f02098c493af2d496497611f0925390cd903bdffd2a922b48ab4b82a45d64c90ba26c8ad686316ae99ac2d4028ac90eadc2c4c21e0228c8919b5a409f8a08153a2c94c756c5d8442849fe8a5401c05bfcef609e2169b621ed200f487de352d58674b6af8e6c0b2f1e5e720491e47192687a9d79d57b17cfdfb7fa7eef25c9726bb8d8aed7cceabe1f38afb2006863b70264fec840666251bce666539159cf8e23b3a7d847bc38277c162ba2e9cf67dfcdec9ecb80446a0bc27ba7fe1c808ea69034dbc80312a12d4812fb5959cceae1f39eef165e38bce408926333bf0258e757b4d6bd027295917a0072153f1ced4ede7544e9040649d4c2f74bc5766ae99abe63154ab0ce491f30cd221f929b59b23ad017014b3845397c126c35cbcb7411dae2551d330b52058b5fa512c62055485a299ad525549a38a075a8b88fa6cfa72435337dde315bf8eef19223489a45b02afa529f8af4e73836cf7514e3250b00c3f0807e05ca8932609ac8ea403106c90265a230b37215010a3f426c93112d3409e45124a33737b2ab6fbb70f1810d8e3a805e3591e2013a8151902ae11458ab9076fac6aae598d8af92260e913f873b77df86089755d2d3527c3ad51bf7a6eedc7db873f751711fdd4a4efe00f0922248cd4cd3c87eb8f8bdd7d4ca13739b270237f99b64891fb99a45aa36cf9590b4858aa4e2b6be5e45842fd243d4562a54431393de0f4791ca550805e17afd181059fa5c41d2c4219047491387d0864a54265aece66af3107347750b13ab380f1ba2ce1c723a4b3cff79b4f8d9b414cda595f8501ace7f0d25398d6e58e2a734268ebdfcd026d76a0bff3b784964d2ad929e4ac949fcc69d1b3ecb6ba084a9949b33832411f44edce2ce9eb441110a426ae3fb250cc3db345722ab03a04c60a815246932fbe338c6a8888009c75b44aec2742f86e111564ba886079285a180efc5e0c7f8581838858ac48b223a182fcea1482909a05960609366ef534542354de2d3af254def13261dcf5009af41aeb5889d2914a38d5a3601133f9d26589c431f7b334aeb490022c45d2eb62b2816c47e15b5dc217215886628257b534fae6f45c0be475c7405a9e83369dcfacf449d8de4109f2f15effb1df74172e5e8f52f92a855a8414e0e9236abce1e647d8a30dd8b6cec4336f689c55352052933c9002474902c647daaef1886e109f2941490c7c576f238257312ca9318e59af079b2d071c2a9e207f30cfa50d7a708e45131a695d2090c14b3ab3a39b192568a5a8e916493c85532d5791509a70816bf9a9d6ca5fb835019554908da3d265deb3e060c7bcbd4fa1e71d1083260d86945be374dbcc79f776c9e2ddfcccc3a6f963db5bb9359bd9473a79afce20716f8c3df7d92e5b5508cc92616086248e8a40448f2f8c6730866857f2055fafc04091d49b290248b923989a45c8231fa4e4a7bfe11dad8ad6863b716a6934f0f116513c5aa51d1fd6e6211412c7fe930f2802454a067bc5e1946660f09a788ec165e27ead9ae56bcd70d0b554948a81175e6f0161eddcacc7f8fb8680489dc6ff428c2850b0c7353aa971ceb43b81bc2b6f238923c5e4cdef986c6673f750f5fb967be3ba667a2a70440a6202054a48788c5fe7bb7c9946a03240b59dd25cae8ad29f43daf2a1c791f0bc3f0f0b1906493c4d9054ebd2f442ca567485a298ad1267215d472bcf18a9cb89b92e575bf2e4d714eaa4de077cfab3df31449e730e1fcd7b67229df032e0a41aac65ada9b153f7fad551749b426266ce674af77bcf3a245d9d827c8d163369d772203a49de2f394402808ba500ab99a9d5b46e478be4f75f26d3640aa20ab035958589ca354ae5232278549164c6094147c2c344be444f4b13703e0cc8f0ab32ced0893a91c174a22ab5564eb6600cc8925fca58db991d0160a12f8369a05e6d008ad137723a7b3348e7f15bd716faadb87d252d2d80a077f17b82804593f61c5e4dfc58595a455449dc446ddacb9ac0e08db3f6bc8d03be90124c9a2b51c33f85d862452823e82e5c76fb4e6bb0ab22e1cdb0b298b9ef5d67c45cb33e23374e4721d59de8151ae11c8a3c217d11464f65099a820b3077fe9307ad5c4c7222e9784922809aa3580332f7c18293d0369a7cfbcea45ec5751cc29cc8925d68e7c0bc32c09a50917c13981bff838a5ce6369299adb22ca7970714cac6c7209df626d9d829c9f247d66544e8e9c181b26743f0646143a710f4352bb70e6d713aac0ba7d56f425486d22afd4ddcd26dba5a99d99592221893d046663c358591ac428d750abd7502f5f8232365938f6ea6854288781845a2e67e754a1322154ac33df11fe4a665e81508ffc3589daa895499cf951527f91a47318d71119ce246a130489d8c83b87e69cd822c926b8c851ac16bdb554cf6f6ab5fac3b59285a45cb2c1ec01ce3be99d35b76f7b2e607e49f2f8c6a2c96016b5e415c7d8743bc92272c57615dd2f6ab2f2f19262f68da5ac83348524fd30aaf5d348d26b45342b9a11810620c2c4d74d126aa4d24e409859ceeab238af1e15c97d1059ade23a069221f22289dd9f17d175b920899234b61cf94d70710812cfaffb433f49bae6d6463529b2d299135e90a09724eb267d9adab496632a4a843998df89adfed7f3994c72954e305a54fae6e7e97b71b1dd664454cd4424146d1568d1d114f004b9f3b64405dc004a297ad5449f9cc2d87d19b275338a55034f074aa8381894d14b63d8b6f80ecefc28d6a0238a1c69164a22ab55a258465512caa68f39340208c5d19253f88ed777f8442a130409c156bdd7065c9444e1e60b9c5ac0e0794caeee789117b9acf01124c91213b4f00d4472b0ed86ac2d75800ee75612da6b62823b6b2e0f3f708c7aa584512a53b14a689a4e6d5c6764c8dee87b64bf7733e42df05a18a58cbc9ba9572fac08ec212ad612693251040124c5248d1d4257422de71d262aa2aa57aaa34f0e22a56348a6b816696a0b2201437bae66f5a9c7302796e8cc83251d461b7b230051dcbde745b14c422dcbb31c4232c6889d598c3151791c0409ba2e43eaa2ca367e63857269782bb1d8839744263d472f3944b63cf739ba15bc7929489ada053966cf469c389b70f2e967b9ff598bf9850ecb67176874127cd7c14f2c5a0d1b5d2b7366cee3ddbf70145956314c313107ac947a456664c73813e3157ee4b63aa33beaecdd35c6d454859a31419c8a8465b4a8224fce234b931774d44144ae5852c15a15252563d3c4f63e744b2f54442f6b2429e0495092a19dad0d69b6914b369879ae45279042546d95c4ab5199a8d0592fc4884461ae1e512c23d324816cfc22ce2a942a1e86592a4c2cd5b0705c8f60e101a4c4461bb939d5ebbbb1bd40b24a7a1a344e138601baec10242625abcedf1712bda40892fb18f9ba8f5e9214a657e69c1f3bd2e1e927cff0275f98e1d8990ec1f2028d9644c9f0f00361fea4a9054884918da64a58a10b94906595248968354274cdc1ed58cccca6e8271749538bcf7e2665a06e3160a5dc76c765dcb6dfe6b6ebebecdedf28927abedbc428d7bac9c34de0fb25944c41d4b155b055d4b11629e5cdbfbe27089b2f9c8afc3974ae0284dfa2971d5206d1831522840f22b307d23319116a821c6a992812be56904c9210e1ae9948868935e82027a7889257a223fc900430cb21a17f166709245fa1b4fa34b1544d3b691bcff528954b34421d296a115476511ab9264d14f5ef3c492e9289d59fd4cb3b8b743f9fee23498ee5d630ffebcf9fe313777a1c7a621649b249530b49b209c21443af2369435c79d520eaaeed68e343dcba6f90a989019e7bec249fff8f7fcae4e5e3bce7dffd633a03359a47cf02d09e5de6b1934da2e91956e65659587069356c5a0df8ec671ee4b358e89ac32bf7d5f9c97f749a1fbd43667cbf07d488bc12ea26f35d922c8c32440b6a773d09083fc41499fa3c738f2781d1064f47b16ac4e93438750002bb896ed5f03a324659b4568d8d4912eb1f22db7f4567be83648ca18f75d04b9344996ba41627e582ac220d8d609f3b84bd3646eaac52c9d69e0933cba5136721f2d66324e64e3c174ad92e4ae5126ea8a3eb065efb1ca57289a051461dbee27ff33ffff2c3455210a11279b2707d056c2f647580271f38c71ffc458dbbbefc4ddc8e8324d98045109a4ced1b63e2da3d1cb8a4c615072e419b18c6d2851d5ed21456ec10330ea94e0947b5d149a88d0e502feb6cbf712f7690c0757bb829dbc60e12c2f91566e75b3cf6d7dfe6d8990e8b2717094293079f0d78f037753e3234c31b7e64989f7d57995baecf2a75537b6372d293906b5592688d6851c5ab2bd4120709085d09ad9c25194b29b8ba8866d9087264e69b2a35801a46b953f82d0095e19d44d69bb1a4c348e91922bb059a9c114328511409a73d8f70e5d12ccb72857248655403a120a584b9780c9345dce5630cefb90500cff548d501ca5a408c41208fe3ce3c8735ae539bba36fdbbde9de5a29a5882249bb7f449a269ee7f60828ffef122cf3e7e9a6651806731ba670f13d7eee18edbf752dbb7832923a53e64e267376a2f14b7d1153bccc8623060b7e8c42a5315994a1c6023f2013999720c5b1ac6e513ecba7c825b5ebb8fc6aac3a16766987de420df7a749ed9a30b2cadc217fffc21bef195a7d87fc35efed507afe696ebea683dfebd2459a4251bc91e00bb8d3a6652a19b38d4ca69bf8240e18417be8d154160939ac2b14f6387c00dd1ca26a90f91ddc218bd12b8521004009d4813ff56955a4112c59c822c240c64be47ff352fd5b6f1d0ddf770f30d0771da976156470b7208058192556765e14958781abd32f9775e455e7482d4cc34f503368956754dadb34fc6fcf27f9de4d9c78f17c490a41a57bc629c57bf6e3f03b75ccb8021f20353464a79a04b0e43052fab45b474193b48b07499963540458950db4d3a8a4e5953f0c2b8f83c8717c618aad8774992a90f99dcf2da7df8b7eec33cdae0d00347387bf76305511ebcef197ef2c169def2f6fdfcdafb2f61cfae09f4b2d6cdc6cba6580895af67afb5086d17ddaa75ebbfca266956f521b9665110192d3a28e336912ba1f79871a9eb8064a1660ded3cbb845e99423527207051c308b4ee77725c8d6e6a139cd565ac11d0151d1f13121729f5a9d7e1e61b84ca38cd15ccea28652dc0733d507512d944cf846e61719eb2f94d0c6328d52a637f6755e44527481c89706b7fb40aa085624df17bfff771fee0d31334dbcf00c2d1bef66dafe68edbf7b23f37897ae0005218532b2b05494ad9e487ae42b467c5dd33aaf69765ac5790defd37d9582418edd9c1b6f7ee60c7a9b39cbdfb31164f2ed2769a7cf6334f71d7978ff3abff78987ffa2f6ea532ac12b9112a95ac4ba338b9a835803eda026a99999539e46e842a6980583055892aa816c476136d3c257043f4b286564e49b35c6764b750ad014a1515f21c486d1b811b42e2a0226e2e663924e909b8a5c60e626f053f2fb397cba4948918e3a1c717b9f98631a4701537ccc2cfaa2e4cacc421c94af6657f81e9d3b04dbe1fad76493aba6d37415ac1775791fcd5ec3843d447b6bfac9be45d34132b5790fcf5aeafa87ce43fae72ecd40e92244292e0caebf6f1c677bf96ddd7ed61d8d28a6dd7930428c8e147fd2a928fcf7d901c860a207c9435276bc6e0c70c180a6b0e0c9a6a419e5c65760f1a3c3d27265d4e946d40f8b92ff3dc530bb41a361ffe7d9bcf7d6d95dffec88dbce91689449a27b11f2238251ad329a8e0996052280d805a56216d8357a11295bbe538d4485d07bd2c9c76619639802e1444aae075224192c025c0422f6b408dc44d216ae2b81a2a63a4fe22923186e49f454a8469646424f231899489424102778d614d9c9be77ab80ca0960439724bb0b97892e1a9fdd03cc95cf3246e28a3246d3a9e4ad92ca35b63382ba719dc7ec3cb36e275d1174c7502833ff9c413bcf75756387a7291248918bb648c1bdefb0edef41befa2b66f07d0f52be0fc777d23a3bb1f0915e91d9f2b480e3fa22047cbdfa814b979d67bbc4153a556de784ff9897ff76e7eee83af676a9f884e1d3cd2e1bdefbb87ffe7778fd15a101d56124e112fce112c7e15efdc6324ce02892b7a0f87ae24fc90ac83496fe858a6299c782070c36ef5706642799d4894bda71de8a92c0edc10b95c2756b751af0b25900c41921c060e3e263e268a0abaa133bd5c637ab9465d9b65ade1e0863a69bec4205b025cb286586bdab8cd390638831b8a73296be27a95cd32cda56974c9465675d6669e7fcdcf4b152fbe8214c9b5162dc7e0ddff4ce6817b0dc0a15c19e5b2375ec3ee7f7023b592c2aec1ae17b9996af4421048c150bb6ad28bde285673a985a3681b07f520578d5e1fc5d265ea6585a6bbf100db5f773defbae55abef93fbfc5d1bbbec3d26ac4877fff0cdf38acf127ef37b106c54227993d48d634e041ea91369ba8bda792250bfb92909e0465326500ca903a3e48154a56a750914ac946c52670858a046e88a29b100c0267806e240bc04fa4e2161907c26edb35d2a4114e31bd0c3b276cca9a59847813b9bf3b0bc04ac347abb771c38cdc7295b296d004d6168e33bc6b14dfed1076165f96beca8baf2059ddd2e37f9bf0c36f59e2c1fb9e218c52c62e19e3aa9f792daf7bf7edec1932d83db8f15104bd2459af22397213cbe8a1be1d248582d42b329d818de5e1b979b55e4dce779cf5db02ec1a34f827bffc46defbef7fb2509307ef7b861bdfb38b670f2ac5a2a86849254d16f14941039f943459246a1f235a3a42d499eb894a09046e58bca66eb796cbb34b9076323fa41f05a1f43295912b498d1ddd6b628b7de426167299c00f688453d4b5596ab50a69d82196aa94b580443691d532b25ac6d2847a007456cfa21b56573db48448ae639a3a8b2b365e76ae5ef3a5d5c1f3bbc54531b1fef6ab3e3ff92f1c0e1e5920084d5ef1aaedbcf9b77e9adbdeb4bf884e6dafebcfb3977ed8415298617ed435b3ec20297c8c1c9556134b978bc93f60289b92a39790f9fb576cdb78175dcdf69f1f67f7757b78dfeffd3c77bc712f696ad16c3bfca30fefe3fe074491a03a2ac61948c56bde2b8bb443623f24fc96c5af1275e6206d16935d2f6b4865b3785049beaad0eb4445156f3e362715993a98a35750defe2652630769d8414a7da122f41005985e163710d7f109029f58aa22ab6554bd44b9acb1e80e15beca5ad3c60d65dc50a6ac25b8a18ca49688a43a96b44c7349e4ba1a2bddde022f27bce804f9c2e77d7ee1d7429a6d8781fa1807de711397fed28f179fe77772e8bf7be7932f9fa8254dd970774f5dbf208970d463a6d77c4eaff93c6d8b7d363a09b3f32d1a67969869040c9a6adf71f363af3951dffe7bfd90f5985edbb8aa707b5de7273efc2e0ebcef4730b4019a6d87f77df47afefcee2ad192da2504009d621d476fd94a675e90256a3d41e2368a091fba12a47e9100f4ec52dff2db8218887c4ba49a043ddc2f8f1fa052ef9a5a246e4114106656b3d9410a57d1f57e250f638581fa384f9e10d7c16dce512f89456c6e28a31903e8924dd92c63a723f82b4fd15a5bc0b797093b8b2fbb72fa17d507f9dadf4ca7bff1914769b42464b9c6553ff35aa60e5c4a2d5bf3b0ea440c6513300fd5e67e40efc43c9f3fe2281aa6ebb3f8c434874eaf71f4f1e32c9f5d6061a983e7fba88033bbc4c73ff4494a86815136199e1c42ddb59d0397d43875c5e5ec19caba271aca063f247fdd356430bdea6f7a0e6b4ec494910206661cf2ebefbe8e2f5b319ffdf8fd2caddafcdb3fdccee888cbad3f3a8fce1884805641a4d0fb614e2c011511ce2dbba8b82494c53f4d3290690a725454bc4e093de356ee7fe4af6ae414ee7ba9a2e23a209b3b918d3a71e012c60abaeca0a46d9acd0ed4a6a8d544b4aa0ed88186d523e8816f3358b38049066b166d07ca465238eb416aa1190a95b2c6d2b2ce68699144ad73faf023ecbef2c63e5f448ea314e0a51ae57ad108f2f4413bfdd06ffc2533b30e86aef1731f7c3dd175976f18b7ea445c355ea6a6c9ec19d4281bdd6894ebc7ac76629aa120484ea0430b2e339fff1a878fae30776286a55591138822a13a65497ccdaa22d2656ddba36d7b44d10a33d367891e7a8a8701b35c666c6c844bafdcc6be1b2e85d75d8fa57767c6f9fc91a61b150a34688aec830548658315e09ab788ee899ffa2ff7b0b41af28b1faa72e784cf4db78bed7d520c3d25f16bc83449a59d229937b887ce7c87a16bb36a662d8020280a112137b12a942a2af96da38f1cd844aa894e408030c5903355904d949209de0a9db64fec7aec1a69329d05fc2a432257552e9d3fa0b1d6b41990abe4a265683141a6131d37440a56699c798e814bde826faf70faf023940c2395f40a61a6f66aea32b0edfab4363af29223c98b4290634783f41deff8635a0d87aaa972f9bf7b0f0397761743e536fc90a972c3f60aaf982c332caf491d6924f5e3184351f0e318adac325a11ff5cc771387cbcc1ef7ce8f33cf5e8b31b8e1945116af6f5c2143409523c244aa2db1a649f47c545085c9799d9739c9e3ecbbd5f7f9ceac7bec4819bafe2c08fddc4eeeb84836de9327b9e47413633c3066eb996eb6d85273e71376d27e45dffc71c1fffa336afb9a582114a908ab99150434acf6065450695895c418050070292489834e1e2a338abcb54b7bf8288314a95265122a15bbd0a62014e6162e50ad20ba5348c058461cc371e5f6472678d5aad02f11a41e0a3964c54bd9b8b57c215d69a5dc55392367259241d83b484aea94524518d16596bba0c00254387a88d07e0fb987a446a8ca36943acce3fc7d8f0eda92fa72f2992bce03ec8ca8a96beff573e879391e35def7f03775c3a50d8fa39ae9fb2f8896b06b96a42fc233ad2480a6028d9ba6c452988622fcdb3387d06ddeef0e36fbf9eab2f9f228a22a11811105190a317525fc1450eb5ff278a5055b16ddbf6b8f7eb8ff3f10f7d922ffcf69f71fac9538030bfd6e74372926f460e4b97193014a23d3bb8faad0730748da555f8f0bf7e84b9534de8b941e70a02c2072990e53d7c2d4556abc59f537f91d689bb919c27f03a11aa9cf62908802aa7c859fa3defa5a5cafd269d521a2e1285b90fd26c762867c9c228103e4ed3013b123729f7bb884cad355d9616bbe3d2ecdca5a84d3baa91061dc230c034cb2c2e9d7adefdbdd878c109f2dbbff3573cfbe82c920aef7aff1bf8a99fbea9984c2026dbf55316afdc6e16e6544e04804aba2cf9714c255d961cc7e1dcd1639c3cdea02d726cbcea5a995ffcc08f72ddfe5de79543ade79e94e29d67540eb52099f88968db1e5fff9b47f8f8873ec9a73ffc994db76a664b70d747ccd643bae9155cfdd603003c77c4e6977f6b06a769832e3abaf7ae2daf4c54b0d74c9131cfcc4a23dcfc49bcf6b943b8337743d0d3c0218b664569d7694f65110c88929eca6306890307ddd05949ae2ea258b55a8596ab1409c228f0a899a0f8e70028d744bb56cfed6068e2fb97ca26b2aa23a9255cbbc572c3c5755de4a8d1bd06519b54ad6269119154a6317f54eca7b372c16b7731f08212e48f3e7930fd8bcf3c0dc0ad775cc22ffcc2ada8ba5a38e220eeb8b7efad16e4d0e42cec98916425194c0d45e1f48c939e78ea4c418c1c7e34c6aec92affead7df4ab5b6f9c2a5b0277692ab482f69b40b8aba208caaaa0551fee8037f827da8ff6ed770e30d61e2de6c7e6f165ebae915459ee4deaf9fe08ffedb51082beb225b60af89054e794e4454e9063d6b3d7abe5796000cbc4512778ec06e76a359a9deed60b20924baeb7386262f63e7d5afa756ab08871de1a4e7089c355af6c6a89d1f76bf6bc394d65d0000200049444154a2d6d13595914a401a887db7a31ed5cb542492ca689a82d35e62add1a254193eef395e2cbc600479e2b1e5f4a31ff90a00e3fbc6f8371f7d378665a0190aab4ed7a97de5f68d79854aba2c41d7bc3a7dec38e766367f5e482ffee56fbc035dfeeedcaa5ed284df4df03153135555993d74886f7feccf48bffd14c006732b57112f8cfb48d28b6def7d1be3fbc4a4fef0ef9fe1ee47855f9197cce7e4c8cdad6e75ae4e10d3676655262a7d25240089df2071e750836590ba135a4a6c62a9ca66087c314e56ab0cee7903233b5e0180a587b89e4712b9b85e88ec2fe036e70a132b92b23a3155dc7c2cd5c38b1456563bb8ae30eda470b520460e2b33df16db1aadb9c7407e9ef5fd17012f0841a2b894fe5fbff5155c27a66c2afcfb0fbd815a5ddcf5744566c854597522f66f2b5336944235e430c050145692c114206aaf72eee831dacb17365b00aa758b6baf9ae095d79cbf75506e5e5d58312e04b570f0011efeec9739f7f1bfa4e9467de52783a68a1d241beac1eae57eb2ec78d30106ea82111ffed78fd06826858a5883e28690b7f5214cb232f6007d1de7f255859b21f066e82cce127bc27c49650b2515644cd9fc5ae54180caf06eca9511dcc4c250c55dc4773bcc9d39060813cb6dcea1a642d6754d2551ebd8510939f559ec79e662a5ac2165fb95a236b16c11644b8fc7aa2167a64fd15772fc12c10b12c5fae34f7d87671f1565ed6f79fb7eae7de301e2282b958885d40f992aa359d8344cc485540c615f1b8a4273a5c1e2a9c5beaadc1c86ba881f8dd16ed88c8e5a7d63defc336fe63b473f47ad6a32b9773b57ee1be6cafd3b39fcec19bef69907d93959e2edef7f1b00b38d80d6ec3c07bf738285a50e8da5e677a5269aa4728519f3440ba60f1d828f0b455875a2ac1a38eaab04c85736aec7d4814b09175639f8a5c73872c2e633fff31cfffc9f775757e62ad23db08cef1b18724a10f4db63d6a083bdb6518d7dc7434d5670969e03401ad88f668e52d665608d20ada04b6262068188ccf9b1452e8a923545357588020fd7f35093ae8deb36e7f01844b3c403478330a2a43648d43a69e431183e459e3fefb8218335a120b9ff9163b1ad317de220a78f1fe215e3bb2f70e55f7cfcc009b23caff69956effdd5b70111791ea8dc93add6b257390c48b4ee84f2d796593cb58c17424983341584283ecfdeaf2707c08daf98e07f7ce21799b86a1713a36641bac7bef6245ff8f4df12556bdcfe0f6e606864003974500c032f4858393ec7438f9ce28b773ec1e1878f1024e753ad888a02dbcab33cd19a425555a60f1d22f89d05767df45f005d0581ae1fb23e87929b65fff017ee60fee953cc1e5de0bf7ee60c77fc508d7d999f9e4ffaaa8530b1c204c39021dc1862cec91125162a904a0652d6313b952d24ff2c6b1d8d41ff2cfee0ad98030790a120078014b5480143b1717d0bc5a832a046804e289918d12c2b8d05ce2ebaec18ebfa41aee38a0cbad69d4e8bf36739bb28ccab72b98c591dedbf8a52b908de55e515427b89e70e3ecae5d7ff705a32e5974ca8f7076e627de43f7d09d7895174955ffde0eb181a11f98e2c615abc5e3a2acc2bd78f09250d3914f6a8e3389c39b15c4cfc9a7a0e49dadc7cc8c79434b8ec92116ebe6944bafec08874ed1b0f501dae926862d2c4becfaa935051b2454b4180ebfb288681a128947499a9abb6f38e7f723b9ffcfcfbf9dc973ec84ffddc6bbac57e7d50d96e4ad9bbaec9b5b4dae4dbbffbb9be91ebfd8fbc6200284cb24153e5a7fef91b5191682edb7cf8f78462d86b66bf828489280709134047d7e5aef9d5033d23624e0e107ec75a471325ec1d0d77f918cd2c7294230cbb7e8a1f5b188a8da62a38918a13a9544d1dc99a42f1cff59163b056a66c8adfbd28bb19a81e4e7ba9eb7fe8fda69c5aaaa365d7260c6396965708021f6fee5b9c3e7c1f9e93bc644a527ea00af2f4413bfdf29dcf129172db6b76f2ea375f4b3e837205c95f6b3d4b421555c2f6152cdf67fef4b97e55d0ebec93577960c9a05adfd87f77db7693ddf98ccd20870e6b87bfc3634f3fcbdc138771e64e71e8390f89bdcc1e99e6fffdf13ba895ca0c5e7f33e357a75c76e09d8c6dbf84f2d836145562e7757bf9c0357bf8c977dec8effdc13d3cf0d5c70bd34b93e0b6c9839c58ab839ae54d32a2cc1e3dca3dfff9f3bcfe57deb9211f52d294bee85d8e352762ff8d7bd9ffaa290e3d31cbd35f7f9afb7ea8c11dafee12a59a7d6dc5508840f822197ad778984323c55af35432883db1b2cff5b33ab4b0e7413dee393a6bf35406278abf2551bb2087ac564901538d50749320ad00ab18dbee8027ef01c0639032e0042a3503cc92422728011ededa6940a8472fd4529d4a592691f48294a1b38ce34b2cb7429a4ba7389bd8a8a57a3a347105466d3b25ddbb688af20325c827ffe43eda4e84a16b7ce0fdafa76c1885efd15b6ad36b9feb8a5ca8cafce973d8cd7e9ba961b71937d40de6544983ebaf1c0193be8bd75c5a4efff6afbfc99dffe6d78bbf6dab58080ddacb765342eeac71747e064e1f833b01fe3ff6edbe8cc1eb6fe6b69f7b07c3971da06c19ecbc6e2fffe1633bf8e33fbe943bffc757692c3579ddd83437e171bfbb1d2d8ee83bdb08eefdfae3ecbbe15206b3f292f3ad4fc99113e9e7fee58ff1ebfff87f60eb75fecba706b9e3d54f75c3bcd9d9ab92469486f88944ae45f92ac1d45fc4b677303429b33ea09b446d062ba130b12a21760c929635c05e13dde72223f3117d1b0c0be2844a65102752210aa89a1d1435a29d34d876cd3b599e3b86b7324da48e61eae20b3a5e4ca5e4e17831b3f3ddea5ddd1aa664e8e4b21029627dbea681db3ec7dcb9794c437c6a95149a1d97ce629395e5730c8f6c6368e28a8b5686f20323c8d307edf4ae2f1f4745e2e6d7ec64e29a3dc4515810238e52b43424d1746ae58da1cff64a7b033980ccbc5ae5ba8acd136d1b3f1a63646880cbf6e91b88b132778e8596c3354bb3ac4c8c727bbd8e392c164a7dbb53e1cb8f7980c47bb64f16db9df53cee5e5ee5e8e96370fa180fdff9695efdf69fe575effb39862ebd16c332f857bff243dc76d5308f7fe2b77875a5c2d1674534ec7c0efd9f7dec4b5c71e012bc9da3f42ee2eaad1ec87d10111256a9ef1ce5e6d7ece4feaf9fe49167e1d9830afbafce7d9045d0cb4489841a45a872005297060549107d763783509929d63a1a7a598472cd5282e3c910ac102f9f6475ee18439397d19bcec915a4ed04686940e0db98a6cece4bf7630f555859ed90f4b43b72bc98c05ec55f3b4ed3817219025b44d04a868194995615dda31388ed42bb4b262f15667159f1d1f441fc20c4e92c531bed5f32fd62e107e6837cf24feec36908b3e0977eedad940da34f3514552a1cf1c9aab0edf3f06ee407c44b1bed69107ec642e2e3043ed7572d6e1ab4fbc86137a4f4e453cfa427a61719970d6e1a9b606ab8ce3b6ebb95f1abf753ddd67d9cdae6a526f09eed93fcecee1dbc664238920fdff9697ef787dfc05dfff90f4996d6583e7b865d4fddc9ab2b2ac189e31ceb38cc38297d31df0c519679ffd447ff1a3b48fa1424578b5a59ed0b0b0f5b1a254de1c08fdd84a28b317ff5a73d8e77ae20915394aef73e45aa37c41bf91bab8225e74c9f790590aa03389e4c92153e3acd158e3e790fa78f3d8ba1e4dde1cb0539aaa64ed31159f31cd6d02e262fbb154357905411da95539fe6ea1caeeb5233c1755d746b9854ad6287e2bb55748f44ad232736ab2b8b04818fe34b8c0c887911fb6d14a38a9175aef33acb4471e9a2f8253f10822ccfabe9fdf78ad8f8fe574d71f995db89a37083639ebfea8a8c97666df75589e6dcfc866894a176135fe359f5a99385218db30ba91794d2e6d272ba302d32f5d7572d4c7d631946fbdc421f49d66347a94b9adda512db2a56f193dcf907041ffc59f895f711dffd558213c739ed792c2a57f53f6ba407b93ff2d8434ff1cc971fed6b47b4e6441bc801ddf5f6fb6fdccbcdafd94944ca1f3f71156b1d3161f2860c916aa2460ebad235517bc931303a846a58a452f73a78ae871df6fb6ea93654acf328699170906de1afc8fe02670ede43e0dba87aa92047db0984f3ed04384e569f25d5199ddc4bb92a4ca64432f02309a7ddbf384a33478a1c88a6e97482124ed6617e6955fcdd3452d6c2a1beed7ccfa5d35ac60f42a2988b42921f0841be70d7932c2d8528bacacffffc6d1bfc8ecd5efd08bc20216e753635adf2506ebb6173c48f584804399cc0c7733c8c534750e75719970df694fa1f93e01f3c58bcdf8c1cb9d995e3acd7adcf7ad3c810efd93ec97bb64f727bbdce91d9198eccce14638e60f0cad75fc9e5574df17c16ea5d9ff9166e2beb1a126d2c646cb859fd524f9ba2033f7693f8de4ec45ffc9578bc81eb18a0975165b1f8a97771536f06bd91a528f20856e00794ca25a47095ba26f2527a79104bb38bf5e55e7657efac9e2d6aab00d64ede43bb2576281c74083a7398a68e6976092aab3aa5da247a751239f531d45424fd80a586388fb1018954ada224fdea168601deea5141566384f1ba44ec6744d22d4c3d61fedc9c204973065579f19df51f0841be79cf21e2206264f71057bd529485f7fa1ef96bfe1ec45d73be19b2786a9316e53d181db53684799dc02fd4a41725b34472ecd8f39eafb3b2b9390770f7f22a9f9c99e3ace771d6f3fa14e6ee6571977debaffd4b7ef1033f4ab5b6b9c906823aa7a7cff2f0df3cd9b73ebe177966bdb724a5b66f07dba74c5424ee3d6461af99944d5f284822a1460e869ce23b5e9f839efa8bd4eb089fa207526213b86b858915b86bd8a145a9275127658fa3709b73ac356dd69a3689318e12891e57be2bbeb767370af500a8942212b58e963a9896895e9d248d3ccae1199a0e8cd60d1c69945417ca5032baca2627366e7b057be9089a358a658a6ba918dd729458b6b0db0de6cfcdb132770edb55d3175b45be6f822ccfabe9fd5f3f09c0edaf9a606cb25e7c1647699f6ae4efe53060dcd438f2dc5c9f69d56b56f562e7ee6d8ccb46a122394cddc0d40d4a66899259c2733cdcf999e73de7f50a9293e0b4e771ae6373ae63176438eb799cce7e00c676ed61626c881ffd8957f196b7dd7881a38882fb3ffbd89768bafd4dec40f821bd0a92637b5d67fce66b0178e6749b93cb75d1b55d3551254f7442ec41ea2fd208a7908c31dafe36cc52d29724cc43bc39626590b26910a4dd899844ed627dc760cdca560b424805d7f3f09a7348fe6a9fdf1349753a5eb6de4612e7645a26a956636971aec8ca0f973a94eabb710299280b20c8894d1806acae2c323ddf2ef629d7aea2e30485ffe17b2e4ab8c8f1830f70fcc4c32c1c7da268cefd62e1fb26c8d71f3c46448aa4c28d6fbd0550d1d210503755118050d218aa287ceaa37fcd571e3c53ecab375b9e63c7d404c3c3a1e48e8ac700f49264bd8ad8dffa669f79f5dda2d7c402389126dcdf6ef3e9d3670b621ceb389ceb88091219c2e4f8d047dec1d5fbcfdf781b4405f0d96f3e21ce2f480ad5d8ac75504e943b6edf0b806b97f8c657c5e4532387282da16801411c2065e68a648c3158090b532b2787e3c92869bba8abca51d621c89e03af4be233a7b982db9ce3e61bc60a0519b074645527890292286061e6395666bb0bd3d4b481618d505b57dd6296142a5337315a176a21e98358250553173e671806846140c7f6f01aa7d1b3bab0dc411fb12234bdeb33cdcc2dd15a118d1f8e9f7898238f7e11cf495e3425f9be09f2975f7c141589cbf75a5c77f918712442b972286ceff52a92936471b1c3dc89191ef99f77f1f4a1794a9af037f2d59df9fb918948022897621a5949754e92a17a8d5226cdeeb1e3df3539d69b58bd66d48934e97bffb7f34b05394ea409cf3cfc2d1efb9b8f03609a26bff8811fbde0b1a228e29bf71c029ebf8550ee8748bb2631eb261129f71ecad66fa81951b224a16d3b8579b5d6d1908c314a65f13d52c9c02c25c4529534ec50d7668bd2753780b291af1d172a923be80f3dbe58a88756bf8c2412e654104684f6391e7de06e96e78e156696a12b34d73f4daebdca95bbabd427c5838e746b985813d1c1deecb9efb93cf1b4a80f53cae3ac8543ec99b458f1fb2b7e6377013bbb99d44c99858539ce9d78f082d7f10789ef8b205e504a97cf2e109172f52bf7325213921b472989a6f7912327466e6a3df9cd67585a6df2ecd90e9ff8d837583c7394d1518ba52571671c1db5d831d5cdf272f60875ad4b92de88957bec386b5fbaf379cf77ca14c43a9f937eacd3d3fac60f99f6c3424d4ea4097b2571b9eefded4fd038274cb99bdf7015db776dbbe0711f7be850e1ace766d5661d1a7b4dadea58051589330d9593f3066ad46d11aa2b50b33a0531062bc24ecdcbd8c35821f26d82c0470e57995ece96d0221424ef9498442e72e2d05915cf4929d726596b8a860c4597950cf6aab88b9f3cfc10cb73c7e8042646b9bf3cdd71655a6b0bd8e9087baf7c15a397be0ecd1cc1929bc472777f7e10e2b5e789dd0502a94aec2e0022ba963f1a0f60adb1c6e24a07c70da999326e2cfee7c78e3d47c7ddb826e585c0f74590a3475778ee8898d057eedf4928697dbe462f397afd0f80c3cf9e8128224c61f1ec12ffe72fddc59df79da15ab70a15c9d503877421f1596839d4b59871d9287c8ea56f7fe7bb2207c06cf608e45e05e935af72136ada0fd96568c57b80bd92cc8934e1449a70f4f431be7dd75f03305cb7f8073f73fb798fa96666d6a16704a17a4dacf5e5efb982ac3a113bde7400498566638db34b3291a6124779ff2a9dd6d26a615aad7534910034447449536254c3a2ac053456fa83206e4011e295d532b6b34e02324472d7974c238fe6e2c9e2f753279ea375f2cb80f03b0a241d02bbeb475e71f58d5c71f58dd8490d4317d7330c6394c4c66b9cc65e9b299cf3f1ba44a93a5190c3d03516668e2385628564d3e92a7be0d9b84b875e94b0eff74590871e11e13c43d7b8ee75d7a0a85a5fb42a8e52e43040c97a6bc6514a288931dff8ca53c57ed234a293c05ffcc72ff29f7ee353dc79df99bee3346d31a1afad0fb2d072282f2de13cf50cabffedf7091ff8e6a6e7f6f45a93f6397167ca5fd7e3933373fce6a9697ef3d474e194e7e4c88991ff2d37bdf2bf3ff8871f235e7c0e3f8e79c39bae62746c63b7c61c511431fbc8c10dc58bb99a6cbacd9e1d84514adb3638f8b7c721d55154b1aa30887b16401963d4b559f4f2206a76d70f63854e67f3a61200e859bfe0c825f6dbc5fa8edcbc4a8cf13e7508fd56b1386ac75899ed758f3967944e630ec7ee124c8e1a74b2558c95acd0737cfb650c0f0f16e6951f84343b2e4bcb2bd84997849a3982512a63e81a86aee107218db555161b09a3436586066b04be4be0899b5873f5dc8b921bf9be4a4d661b011129e3bb87a896b5bed212390c403349908abfe73ec8ccb956f6dc8f6ed711d288d5041e7d7a89e79efd22b75df54fe94857a4adb925fee277fe90376f1f6006f00e3dcbdae0f927e377bef318bf7b029e0b8ff3332343bc9f6b452ee4d8c60cf39b4686b8bfddcecca9d50daa713e9c4813989fe1dbf71fe5cd6f1f91765e329aeebf612ff7fecde64d9a55540e1f5de187c27ef3aa5741f2506fefba9181ba78f8e8b3ab8345165d0d237a8d0b515f3546ef931a7459f4c172da4b349b9da2954fad56c97c0bb768231a77ba37a33c92650dedea3bffe6d2346717c5daf2b38b8224630312813c42d09e032641aed0eae99e98a8754a864ea40c51ad8ac4a0d71137bad86f337de220832517a8603b1ea5a17d80f05302bf82ef9d65e1d4b719abcbc4ea309dccefd14b16ba51667e7e8e89cb034aba0e94d2172a47f23d2b481497d2a38f8bdaabcb7656a8d5cb59f4aaeb8340d4675e016869c8a9274e12b8ee79f62cb0fdbacba8a4cbd2835ff90b1ebef3d3cc1d7a96b943dd28ca7a75689f5ba07d6e81df3c35dd25c72baeed1bb31e3b4a257e7edb781f31f2f7f96b2f72e2e4af47eef97ad17d65df0d979effcba8b032b7ca4c23a056dabcf9756fb2100489aa63e22e7ef03b270088238a306fbebe232f61374da3c881048949498b4843e198f7fa20204c2b100a12b6c4be7b9384f90228100e7aea654d1ab2cadcc5708a91c9cb5053173f9208da7378ad697cbb3ff891aa554cb38469998c8c0e619a6594c4a6e92484f61241cfd2dfd121f15e3106d18d0e5e7b1edb8db02393c15a85b2e217ea51317502df45721789e3e75f6dfafde07b26881f442c9f15136fdf0d97a2a81a89666e70ccd73be989a6f3ed070e733ef10a5398bc7c9cf1318b8e3492465fb8876d158b6b076becf13cf6643e439e211f79d31b8adfffe0a9a78b499e9323c76053444cb695bb59f1fc3577bea14b92b7ddf45afef42d3fdcf7f7f538fdd03d44ed55e428e28a03979c3f7118452c2e2e170f0ded75d0376b1394774899b8768f70d417521a7684a167d644b8881d0be73c77d2136d8872592bba24067e801c0ab33127c79a67511b101331afc12aa25b99093558b3a8547a3a9eacf33f46c72619d01c746b8c482a63a8297e24b174f6204f3e76bfd846db9818745c99526518279069cd3d4110f885ff619925e17fe81a6e2b146b44f21294b2c6f6c9d1c207191aac5119184137caac2c8bef10c52260b4f9c5fffef03d13c46d8a3eb7112953753dabbd0acf4b8edcbc8aa394f9850baf3dbefa95220f602fcdf3c8c2612eab88bb6675db38d56de3855a0cbef5ed0cbff94718faa55fc6b8fa6a3eb32ccca44f5eb9b163e35a4d3c30e69cbb1de88f5cf58676ffd91557f3c01f7d9c5ffdf99fe135effc49deb57befa6e778224d58989f61f5c45324aacad450a96f42f4432570dd0dcf2881fe060f9b2122c57702965a10652526bee36129c219ce1d74a5bc0d434ed194b85092f50efa80a5a39922e42aab65dcce72e17f4ceebcac1817a416411889f0aedfe2e831a1323bc6ca2c2dce511dde45a44f6069017e2491061d9cf6124bc7bfc9e1effc0d55554c6eddeaafad02181e1e64666e090c1149b41d8f5d7bafde306ef64c9794b13646e0d9e8a52e7117668eb3b03c471827858abc10fec8f74c90b59643cb16ffb06baf9a4051b53effa394c5fc35b93faa15f90122347c7e691c989ac05014961a8d4d3fcf8922bffe56c9df312e4997ef926657c4d8b7ddf45ac6afde5f8c7556967156960b05e9c5ddcbabdcdf16ffcc0fbcf68dec32342eafedee1bf3be77be6dd373c815e5d849b1bd3a5a677cf4c25d395ab31bcb6a064d15431526d67a275e1b1f2aa23f6e2b14512cbd3b07721519ac84a4ea007e2211c60a66292932d9d05509a0ef191f6eab7b3eb9ff91d6ae43d7d462f96cde9d1de0eca2cbe8d824a93ec49095164d173cdfe7ccf429961a3ee7cecd71e8b9a3d9b12c4ccbc47165cc7282e378689acef5d75e51a807c0c0e4f545f44a929bb45a2de6ce1ec32aab94aa595233f33d34dd62cd3169acadd25e7a06df0b50d2e00533b59ed7498fe2527acfdd4758751286cc2e9fee3fb482d370d0139baf3c7886a943f3d4ea16cd86b8d0e77b0fb0b0d4c1943737472cd9e3e8e3c7f95f5f18a47df84196dd6d8c5d51e233f1006327cf15e3162fd9c6e5773e984ae529569d84c5991615650fe6e41ebe38ba97ea3121f7839e08af7e66ad9b53f93625dacb733cd61c62dfd055bcf2f557529ed8cbbee73cee3adda0fd54d76771e7c57ed763bbac30170b3fe4f45ab75872b3b643691a112ac2512fd78f102eaca28d0f6103cf3c17f3ccbaf1b3b642b820cca3248908a3946ffcafa73976720fed355174b8b26870dbd50183250dbd3c485d370863054dd3899c25a4a8551023ef7155de7655e17f00848d8d756b43c3ddbbbeaea92ccf75c7e44b678727f616e400d1a5c45e3a228e6582bd748495f961765cf9da2e396c0739b1999f5fa06c0d70f9ab7e9c238f7e9181e15d0c6541173f10379d858539946885581d6640b7b1aa7502cfc6c814c9945738f8d83799da790961146107254a065919ca0fd6617f5e82cc9c5be583ffe4139b76241ca004b208cf424fef5bba2d76244a9bbeafc8a50de3c5fb124f7ffd699efefad3741280bd7c6705c4e3c57a1a8b3d16c0e7efea3b1f4d7a0dfffdf30170b867ecadd87a1d2b100a33eb187ceef8014074375c5881ef7c3e20e509600a89128ffefe136c3725669c1489129af49aec5cba381e455415551ceff39fa51d47549488ca3ae2f77ec7338f3e058f3ed5f7f991ec35b22aa876f74e6f6b65f053aad93de9b77fef3015f970cf3eabf0c1363f7b875821a81b3a8a2696b106a14a67e57416bd12932f31c619a8772b9b5dcfeb4b10e6c87bec7a9182143609579e2c3e1bc95a371996b8b6b9ffb1d274719a73e8ba8199edab9d0cd35e3bc7f8f6bd386ecf5384dbf34808a7dcbee2f534d656a90c7413b7bee772ea68f796a194c70bf5b07461869e9d3ec6fc420bbbddc0715a944b25c23841accf5151376f45f63de17909525107b8627f77d17d2bd21950039c3597337362b24f5e3e8eda6e1255cfbfeea2177347c41d3a278c44a9effdcec91251b586da6e323dd760ca9450ea35e246b3efb51771237b1e787db310b047dcf08b44e1ce493161cdc1ee5dd05973b37df82875119fdf5517fb9d7152ac4d8cd19488eda644ba6367dff7cabfc7fa1b406455a8d5c5b5f45d07a36c52aff4ee789846c644d575a00af1aa50deabb677cf393fd7e14a242259c306aa611184019a1213201ab5e5e400182cd994ac6edec1739dc2ac729b73946b93d4c62e299abf81c87fe49d49768c959969b8ecbef296c2d74a24833074f1171f67a9e11709c8b57088039375c2306675e1ac70ce1d0fcf7191c2551a619d9a06bb77ed60e886034584daf75c1616e65838f56d627518afbd40f9ff67efcdc3e4baab3bef4f55ddbab5dcaaaeadf76ea925b5ba25b516db5a6cd91248768ced18e38dcd71806042861908130821f30e7943763209c940124806662640c26207b0c101c7760c58d8b265c9b62c6bb3d6ee96d46b75ed75ebdeba75ab6afef8d5fd755577cb264804e6e53dcfa3a7bbab4ab5dd7bee39df73bee77b96096c140aaa5494e5e8c509894fb29934e59281dd261c43988d5dbd7c51e4351da4bddb763df8bd8f2cbafdf147c7ebef79f7d708043dfcf5031f410b7828575d84ca3a459fb6e4cfaccb87375fe4d65ffc04859c89d70595ba50589f7f3b36bff1eb7772db9d577264cf0ff9870fbe8bf7beee7a7a47fa689fca02d946d9769af85bee91efe76fefff06d784145effd69bd18dc54db2bfbdff1bfcc3de3eea98fcd5dbdbe9bff556b4c16131d35ea25edbb79753070ef0d0fe43bcff9eddf2ff3df2c5eff0e1e7beb3e4777383dfc7356f7c17bb3ffa413239934f7ceceb1cdb77b4785093820000200049444154e933b57eb6ddd78e90b8f78db241180d78d8a1558874cca768c7f3350e4e946429f8e41f7f997c56e753bfbb8bedd7f5e2b6b394c71ec4324c1c0859f3c6b16a41bc8d08e2ae95b00c21f9198984c8981a6d9a4a55994f9faa8533b272e5441097bf07d5abe05604976ee2dc690cc32010087021eba73d1a20a0b5e15243f8943a35c4ea82d133afa0aa3e224198cb571818ec9051a65432c8644709697e527322458e3452758f2f4ce7f20d1432531475936cd16c891e5a40a16ff92a7c5a1cafeac74b8a829ee6d42be231d1581cad9a078478b947114c82cb996afdd820bd5961440b78507c2a5ad04b3d16bde8cf787b907a7b545e455f4da42d9288d2b12c4a4fa3e4d89798bffa857bba28a5e670e79268011f5ac047b07725bd23eb1befc7d7f26feaec291e7b664cfeff87f61fc23f3edf20f3a5c4957f6a4307d78414f9ff003efdd2634bbe3fa74f12e81ec41f0ae20f05167da6660547a728b1b00fe2ed4e10680b12680bd21e583cb3de6ced11954840e4e96a20462c54410dc4707943783dc2e96ccba4524a4afc91cb1589f975aabe1e020d52a6619a8bf087ad7412e9100dc29259a56e9bd8c9fdf3af1d0d90af0489758b6aa0881e16b9f4245353c2d19cf46af9c04aaa6e4d76cf8bf93926c68ea3cf1c265b993f8e4e6a154e882851d6d34c9e17efcb2cccd0961840f56b4443f3512d939c20954a138a88e7d13d6d541a7b60aa76ad916a5d3ebb6436af65bb28575b673e2ef6af6ad7f179ea0bd28a5653dd8ae06901514dd4ec67e614c9d4754abc00e7ee7f0063fa02ba51e6e6feb6259fcf98bec0e7befe2d2ed4e6cba8dfdab7871f7efd016afbf652fbfedeba71ea34f59241cf9124db5eb70300dd28f3a9bffacc45bbeaceedb11e71d5328b06a9c974cb639a9d4501cc35a2fcdc7cf237337c531709e8dea646ab55b608067d681ec1c1b28c0cc1700795aa47ac11f0d730cae2248944423282f89ba82301b7cee8f9f4e2d7f1b561da1efc4a755179772e6bd0d7dd41243c5f05ab54aaa4a6cf605965193ddadbbcf8e223f854af60ed5a15aae502e74fbfc09e1f3c46d43b5f998cc47b841e6fad4824de43263981c74e912f8b8b62a0ad470273806cd1249b4953cc654924e2c43a961e35a856edcb363772c90e52b56ccc2616ecc5e6d00527cb85e253695fd675d1e4ceaad94ccf1409d5e75cbeae95d4423172332fb53ca6996c78eefe07a8ecfd414b84712cfbc4a37cfc7f7c9167a65ab95de3e50af77ef751fee92fbf4ce9ec29ea259167f725a204bafb397df408bfff679fe47fbc7271fabc1341566d5a8f6dd9143d2ae5859b69688e220a9b3471d49c08d22c24a735d4129b574328a3e7a95b652a769db676f158a53a4da9546ea893c4500331c9e2f57a554aa65bd24772b92219539c6c6d717132e9b69f74ae8c628b3e8ad9d0e74dc443f80221827e0fa6ed91e55d27bd52b504fed80af48a2a5339dbcc3276bc957aae75ac91255b10d12357aa317e467c97cf3cbb9f64ba403cd14930e86fd1e3d5c2e2187a6a024fae1cde28a347b668b64498fe5e117d2aa68e6dd7a834f6c3546d7171104e72e97d911f9b8ba58502785485b2552193334934c87a4ea4f028ae061f4b5c611d45138fe26278f36a9e7c743f5e97d222c8e66c823a7d7c8a592358f7477dacb8f6064efdeb3797a48b38cdbea79edecb8ae75f0060f2d85166e614f6cf1c5fe4180bedc3cf7d874fbff418d7f52ca773409472e78ebe28f959af66832e375dddfd84db565357152eec3b4632adcbcfe198f37b38e227dcd74e86a5d327ddeb83259a8596ed6a8920ba5e42f3cc6221a2871a88b554b06ab621e73b4080f3aa2726f187a69864d227162dbff125aec0b43d041570d7cbcc4d9e92f803a0cd5b22dede27d32680746a56a657255707ed6d5e960fcc97c46d334bb55cc0679d633655a43311229f1ae7f411b87273631ad31da2549c23979e42f56b8c6cdcca23dffd17365db555468f522d41dd3e8d65ea9c3b37495873d333b05e524f165aa55ac3eb716357b9e48ad68fed20ed89201d1d5e2e4c54983a35c59a75ddd231e46054c32916f2b1768e24f83cca922752a50eb3b3734c9f49323c9ca0f7aa753cf7904e29354730d1be68d8c999f8fbd7b934b5500cf773fb256d7da12d55aa1e2f57181f3b036367fecddf41e7c04aeaede2aa27e9fb4df7373b4b241a2332bc8cb1a98baf71a81b6549336936b75ba1ab2d0835837aa52805e032452ffe480f563d4c004173b79be63b6abe2e72b919023d232df8c3598003423ad4563af169edb8eb652088a5cf327aa62176adc6688f0630bccbf1698dab76c542c5e0fce917b0acb2983d77de6b684036374b9648500ebefc0a5ae3a2e034088bba4938868c20c5bc38aefef830cb568dd233b05ece8654f2e72803a78fecc565e7d14221196d1cb3ed1a5e8516b00e5c7245ebc74eb15497f812145c1c1bcbbc2a07abd939aa769dee918157153c281906cfee1f4557026cbe763b3d218da7b2d98bce71000c8582b88b19a68a3ad6aaa5bbaa17d3c57a35bbc1bf983ee2a457abdf782b00b66573fce4e2ed48f317009bd5eb7ac4129da6b46aa11469c9d34a90accca4295b1554a54ea23b8c615424bf4aaf8af16447211104cdbd529a67d4c6fcfaa2fe47cdb624fe6849af548f585f605b4c9c3b4dddcac8e8319735583eb01257638dae4fa93395326573d0891e5ac71a09bccb56054f2549325d607af445b4a01fbd21f5d333208a2953174629954cdc359d5a71be633fb2e91a06874728d51242faa76461950d2e4ccea18542c43bfb25edc4db443ff94980f51fdb41dabb6d57a25784c0fcc4b49c0581a507a59a154dfafa630cf45f7c9b9082c2830f1dc4cc168874aea27dfde69669bfa5acf97ef5acd2c2af72d2a5d75ebfb6d8deb562d992b77775f7337cf5add896cd4b2766397fe0044b09c9095324db77a9087131d593e997c5bc4d24a6d21e51e50c3920d32bb7126e59b0594c8dc9df9d4a56b35248313b29f18763f5d03a5c8a1fd316f8c3cc8c49e1e9f66880f6a8506777b6d2966d17e5f431c6c7474573b09e642e5f61d9ea2d327a944d03ddac52b8f00cc1b684740e80c1e111f99889b1c34c4fcf90ad886eb95ec832383c42df8a8dc48225b245f1ff464f1e2695128e1d8b845ad22bdb5e7abaf072d04f2e09a4af1b4e6053e7f8c914657dfe0d373bcac2df1d8771088917b363fb8e72eee434bef608bb3ef41f992aea3cd5e0662d8c1eaf65ce15ffdf1a41067c5ed4c1d52d5164c0e765d0e566dd5dbf467b2288a22aec7ff819666d9357cb58d76e5905b402f366332b5532257bc921aad5eb7a848074d9a2542aa306e61bb70ef9b052b1b02d13534fcb0660cdd725c417fce231baed27971c6fc11fb6d249ac41f5f02b55f2e92946cfbcd2123dc28901b4c4a0dc0855d44dce1c3f203e4f50449081c10df8c382cee38cd426d3055e3a721a2de8470bfaa92a09060637106a6ba76c1a648b26e94c8e7d4f3d8665ea84dd29b4709465cb57110cfaa5b3014c9e3f45c82f2e7a3d03eb31cd5e54bf86cbdf3a1aec8075f9f92eb19a75490ed2d6d78d828bd15319a6d3e692e20c4b46937299ab6fbfee22eb058419759b07bebe9f52a9c4baabaee54d57bc8153c592748eb18666d50abf5f468f8b618f1f3782dcd7d3c54ad36478c53cd375d0e5a627a4b1f5969b29fa34a626d27cf75bfb97dcaaeb58ff400f918e3632255b469068c0b340abd723771c3a1bab0ab345bc8a8beeae100a3a4a55900b9d2660b379bd2a35dba0983e2f2703dde59996fe07e6ac9ced3089118b0448c443787d6dd41a6a8c95dc19b957d0a5c664f50a90fc2bbb708eeca468d6955cc2f93ada13b27ae508c44d9c3b8be6161735bd64128b84685f799d7ccf755bd04ace1e7b9ad347f6329df3d0ddd38b3f9460460fe20fb5130df999b9701a5d37299a6ee29dfdc43afae8e8f3a0fa02288a22e3b6c0218b8fc3a554b32ec941768e8834a95cb2c89d1893b72f853b9affaeb8bcec1e8ed0d979714162058507ffe959ce1c3a473518e1ea4fbc5fea558d99262b1a077d99df2fe9f03d210d6b95cd64753e2d6a1e82fab7d82fb7c759e1f7534acdb1bde158cef36cffedff175f9f688a3df4c5ef53c81559985e35370977ee1e221a0fb660908591a259013e12505046cf93cfea54ec3abfb8b3d1146b1a6f5503313177d1189fad542caa4d797ccd277087833f74db4f55bf402a3d5f56cde40ceaa1755804f02b554cdb23ab5730cfbd8a75af6da95ea5a6cfb4504b7a7bba892edb2e4765734541299919dd2769ed5525417f6f07b14693385b34b1ca06c54609ffe583cf33357e94ee9e7e4a2593b02b8dbba6e38eac179492c630d6c8a66b6475cbb5c432d3a570c84f05a4036cd9b69a40d043d5b279fa580a502eaa64d2fc3780bba3839dbb87163d67b3594685bffaccf7a996cb4436be9edb7ff79d008bf088e32c53451df5ac82e11e974350cdf3e53f6a8a7583dfc71bdae3520ec849b3065d6e365ef33aaed879078aaa903a798e6f3ef0325e97b3677dfe2c6f2e5f5f7dfb75946d164590e66129b3526de981386cdeb6a8c6d0aa3045bd42bd5294d8c332320423c239bc8d6a612e3f2f00e72ecf0875444dccbf688a493e3bd3823f6291009178afdc3f68e9e996ead55cd6a077f99a9639974aa52a7b1f5e4d8073679e1c44f4a8960b1c3c7a1eca7368413f794b231609495a7bd934a8db06f9c98352b5a4a08b9379b628d23d774d67d668c75b3e4b34261c62f9f25ebafa059653837da8c1f946a16d2f0dca2fb51f72490e9248545cabd68bbcf3b91f1c6dc121d09a6a397fcfffb4b9ebdd37108ef8e5d576a9e59a4f3efa229ff9bba749b833ae5fb8e38f685fbf1910295630d12e53ae37b4c7252d055af5ad9c2bff8f92620df8bcf48434c61ad2a3e71b538cafefeea0abbb9f5bffe03354da42647206bfff27ff42c59ca3526fe692b57e8e91edeb1958d32d81f8c53048b3e50c5b02f4e55d2e960d76615b26ee4aba057fb8fce204918b6816d047da3415fca2daa517f3cca67432b9f95167a5e36a7caa879acb87697b981a3fd452bd6a8f0648740fe25243d20967274e4a70eed88af5bb255ec8150d92e9424bf4f0d829fa7b3b583e3028b1473137c7e1e3a38df756a4bbab8d91ad37512b1c25979ea25432e80ccc31339721d6d1c7862dd78be8d1b69aaef618b160a965f9cfc5cce3b9b40d1f97dc49bfe67a51b21b3d9561ec5c6649a758d855777e5fb73ace1befbcbaa507028b77983ff4bf1ee3d97d73755767983bffec5384db457a534acdb5c886d642e2e4593842fb5a4d3f108ee100f0a9a2cea96249f6584aa93986d76fe0e6dff9044abb788daf7de6bb1c7af65053cc583a7adcf88e5dc07c0ab554150b84ea62f37d1327675070b161eb2041c546751528951a72a29648b154d5272b58562923fb1ff2bb8b0ea1298d8b829dc3cc8ce12723f187b33730e817d4f6e6ea1580e15d8e12164c65c709cf9f160d59475151eb5843a25dccb0db6696742687991603534e69570bfa69ebbd4a3eafbf9e65e2dc59ccc20cc96486825e63c396ebf1697174cbc3b9f13364ca7132d93c85d4792c5367ed55bbb862ebebe573644a8dd510364be23f07a85f6a25eb921de4ae5de20b2c654bbc72e034c045f147f3ed20b08813455a6e5fd0404ccee6f8e007bec2c4850cf1be5eeefa9ff733bc5e8c693adab9a78a2566a62f48edaae614ab19836496f8be9ad330e7ff4f15757e389de45fe7d2b27ad6b3763d864be1a9475ee4c17f7a1671689cf46af1411ad9be9ed75f2d0880171ba98d043c52bbd73167ffba4755f8c59d517c6a9d62a15542b4ee8db74e073614431c800ee0090fa2db7e0cd324393b8762cf4afabaad741289f7e252fc94cc2af9cccca2e660477b426ea3f5297552a90cc9d33f40558528b527d0d5d239cf150da2de2cc70e3f0f204bbba1ae2b65f4a8583ac97481c9f3a728352482babbda58392c9418cb0d16c0dcb967387d42acb650fd1a6b570fd0d3bf125f4094ac0bc9c3544c5d6cc1134bece5fba834f6d95f0ebb6407b96a4bbbabbb4f84e4071f3a8851ae4a3dace693666114719c65c5f2d86b88400bbb303ec5473ff08f4c274b447abbe91d59cf79d3641ffe16dd5cc73196ea8300c496f8de9ad54a9a151501c2edbdacf89dbfc4baf33edcae0aa7f61ee54f7eef014a86010b0e4cb3a9012f37be631776603e15c937ad6e7252ad9c512512f0c8d9f4e6f4aaa3c3cbf6eb7a295b2eeaa69824342ca18e18088ae7b52d71121af969a9ab0b02a4fb034134c5a4665b58fa2c999cd84e1b8b04a8ab71995ef9952ae9b98996f42a5f09d237b04ea65765db45f6fc3e92d9b21ce7ed8aba68eb15836765ab423a93e3e0d1f3526f170438bff2ca2b289bc2318b254b460fbd280a061bb65c4f3c16a16ecf47afd1938779ead17f00c0a7c5a968ebc11da227e166662e43263941f27cf348f6fc81f52a4a4ba9f752ecb2ac3fd8b97b088faa8872ef61717085c2496551f4585802f6693e3efcf137d33fd0b3240671cceb8243cf1ee237dff9374c1e3fcfe4b1a364dfb99bd855d75e8e8f206dc0e7e506bf8f9de130d7dcf52edefa8defb1ecdadd2cbb76377b9f99e643efff1c9651691c8ef9219d8576f7dbae65cb8ee1577d2d4d75cb08922f5765656be2e40c5ec5c5cedd43b44704c7aa5e294ae7302c2140ed560228aa5f50dcb3ade26fbec41504fc7e59bdaa9b53f8c970212ba275dfc03a391c95cfe5645fc319abed5dbe064f4854031db169079c77447db4b77909f75f27b147313f47d49b6566745f8b9ccfc6752b89748828e3608fe2cc4b327a7474c458b3f16ad92d07a19cf8dc9e7fe6ec588a897367191e1e21ec9a96b41435d8c7b1979fa377a8ef351de1a78e4100de73df2e54a54e3eabf3c0d7f7e351bc6207f9023cb25455ab6ad7f1691a9ff8933b89765c5c104ea45d0a478e4ef0c10f7c85993b3ec6556ffd33eef8e33fe5cd5ffc1ed7dcf52e09d2075d6e19497e9432af93863557aadef0a77fc78dbff3c700148c0a9fffe4b7f893df7b4024bd2d0ed19a5ed9d8f48d0c33f28e5f7ccdefcdd9a51e09786405abf2c077e5fd6fbf3321d4142d13a354c653cde048d2b6c5bae63be8564ae20f67b7475b4c9477dd76967c768654bac8f95983f668804a70ade45505fd1e0ab3c7e41e41682cdd8cae6879aff9c91724382fb93a50b5046b8644b3d7891e678e1f40376cc9b7aa2a8996be47594f3371ee2cb3a9a28c1e9b77dc8e4b0948e7507d010eec7d8c825e93331f73ba886a33ba482943b16e74dd29b8288b3048738af553c720009b3668ae2dd70da0e0e291ef9e263d975f52bc7a296c229ca8c2a61bafe0aef7debca4e8c1421b1b3fcf1fbeff7ff3e52f3e4d2e6790185eceee8f7e9c9b3efd30d7dcf52ebaba456973d0e596277dbf7bbe7ad4ec10cefd3bc361365ef33adef537ffc0ad9ffa02cbaedd0dc04b2766f9d4ef3ec0fd5ff921965169b8c6c5df63d0ed67ed6fbc65d1edba556b29e3c6830a9aea2667542506c91936a3a732f8542f6b0635b65eb592aa0d58295c4d152cbf26f0876d99545c41f29979a6b38c208df90fd328512a59b2bc1b8b086c0162e829571032a04e7310840c683cd189d7eb6950dbab32c2783501ecc3fdd749416abb700ecbd43975660c2da0a0974caa4a828deb56d2dddd2b2b5799e40433a3fb4826c56b2d5bb596aefed51277a8be0033174e73ecf031c29a9be5cb7b5939bc116ff92c67ce9788d41b24ccdc5186d66ec4e58f2c89419a532c8f47b9a46efa65db727be7dddb78fa89b394b225eeffea3edeff9f6f90f72de5284b6966fdeaafeee0e48ba75bf6922ffda615d2b6cde73ff1559ef9f65edefb1bb731b4633d89abd6b1e5ca4f7045328b79fa454e7cff094a93a3cc8e8f3239313f03bf332c5280f6f59b09f6ae64cd0d37d2b97c186de5726c4b7cb1c9649eeffdeb31bef6d9871b8dc0e62fac79067ade54b7c2e60fbe9568c0439faf8e59a9e2535ac989e39979de906ed5e88d7899cc55c89955eafb0e916fa8bffcc75f19201c54a95ab624201a1678aa1902c179e5436fbd443edb3a0aa0c507d0426d22bd2a9ca16e4e49fc01e08d0ce2533dd401a390a2387510c3305a26029dde47a562919a9b62fcf4fc286c7b9b97ee9e5e429a9fa26e32a72b9c3eb257bc76a372d5a6ea740c0951bf8aa553d6734c8d1f45376c0a7a4d9475375d33ffddf9441439f0ec1ef13ca110bdcb86e8eaea65662e43593f4367683d19bb9d99994909ea6d5bacab5f783c9a23884ffdf14ff3cbe720b7ade30b5fe8e3e881091ef9ca53dc73ef76228d4eecc26db717ab6cf9341f7ff8d7efe683bf526ecc76bff6db3f7274820fbdff736c58d3c75b7fe57ad66e5b4da8334ea8f346daafbb1100bb64b0e60787f9f4c7bec8406f9437ffedf77077892ba1120ce02d97505455120ff73ffc0cdffb974324671733745b1b824d8ea2286c7ccb2fd0b7653511bf8789b28bf5f179e7c8946cd225a1e89e35aab4f93c328280e8ac9f7a429c84fd7d41def0a6eba95aa2215ab30b825ee28951f5c4b0dc5da880a2fab14a193ce529b9b60020185f83619ab83199cbd548a78bf8c9305be9a337281a7f2ec58f4fa9f2ca99fdcc65e7c1b1aa2588b7f761bb02041b3326a70e7c03cb9aef9caf58771d89f61e8aba49313f87ab700273ee08b8c2b272b566dbddf4c6554a0d366e7ef2205317ce904c66086b6e0687d6d2bd6223653d8dea13e7c9b1e71f67fcec59babbda8877f6b3f6aa5d72504af50538333e453424007af78a8daf7a662ca4bdffb876d91cc4af9aaefbeedb59ffad030f303d6170ff57f7f1bef75f0fb44689e6799185b7014403f0c9cfbe938f7ee01f39f4ecd1577bc979b3e1a5a3e31cf9d897e9efeb61f5ba1eaebf6184f060bf503c6ccc8bbb106a299616a2eaf5e1c964a16830756a8a6363199efbc151ce1e3b8399379b9a7f4b99d2f2d3eb824d6ff905a2d78b8a4eceac120b2a946d312968077cc4820a639972e333b6360b33259bec0f5e209fd5f12a2ede77773b5d318baa0d869ea7944b51f5cc3708fd5a54ea5b19c539f2fa7c542aa8ebe90d8408f8fde4678ee1b61b04cf5983e1a13a9d03eb64f5aa6ce448cea528e52665f5aa77f91a6cb51bbf578cf01a85948c1e5e4d9476b5ae4649d614eaf0df7fea793c4dc0bc2d3140774f2f25cb2d81f9b1c3cfb7a456ab37ec90a9954b09303d769843874f128a448977f632b2e99a96d4cba50428eb69f61d3c4c3416279c10b3f18abc3eb5a2054551f07adc970cd22f9b8300bce986557c61db7c14f985378cb07aa80b6fbd428d20de7a891aea452388bb6251f3aa74f6aa7cf2cf6fe7a3bf0dc79f3b81557b6da0e5ac5fbe307e9e0be3e779f28917096b7e22d11889de38d5c6c6d6c91333fcdd9f3d4c26274ed6c93317c8154aaf29a67db1af4a0d78b9fb6dd7d2ffd6d7319a16cfd9dc2d77cabc9952eb6798df99eee1e9d132471e160db835831ab7ddbb05892dadf928e6a966f0b60d522184736d34f2d3b8cb22c54aea1acb7b34dc8d2b673a57a66854a8a45ea2a3b3570e46b9143f7560eec26139d3e154affa06d6e16b5af079e8b97f69891e9bd7769268efa16c55a8583a63e3e7f1e82764d75c0bfa19d97a9364ec96f534a78fec259916df6f47478cde6543729e43f58913df49ad128938b14868c979f3d1938739f5ca6186d66e448d36b4bc6ce10cb66da1340f4ad93615c58de712270a2f0b48774c8bd65d1ff980e8764e4f183cf4c5ef0334007be5a25ba79a77173a7f770e0df0375f7a1f77bff3ba852ff31ad6a82ad960e64d2e8c4f71e8d9439c3836211ff1e4a3fb39f4ec210e3d2bd228cbb858a7bdb909b8d849c3113feffef05ddcfee1bb253337e2f72cea96975fc5bfb3e91267fffe61eaf51c5ec5c5db6f8ab3bc6bbeea5629257155d278aa1932a646d59b20e0f78a1de6f92ca6318f8f3a349d607c0d01bf9f5456c7d267313363f2fef6de21b948b352b1c43ab5a6e8a17588e8e10c461985949c25777857c165bb285b15caa641ad38ce8557be3fafb36bd88de6e1600b309f1e7d5156adfce12e891f9a53ab542a4d221147d3fcf40cac279f15154d9f16c72a1b2427aa18f9293113d2f96bc81e9404e98b3188d7e3a65ab57f7a64c5a5eca65b065c3b6f5c854d9d87be7e8ca71e7989e6859eaf3623b2f031d1007cf8e36fe60ffefc1daf3a81b8b4d90d0c337f76ce73b11646037bc1edcdfd8d85f709dbb0be8f3ff8fb0fb1fb6dd7b574c973667511dfcaac54976c12021c3b7c81677f780eab1264e4aa3e7ee5bd2354aace2e3f0ba35cc3b0c476da985f97eaec003533899e1e2793d3b1954e42f165f8026233ad5d14159fe6ee79b87304cd6b09ee55668c89e924b9d23cad7ded86ab65e71c60f2cc7ef4cc05193d9a692566619a8347cf339b2acab26e6722c4953bee10efddd229a4ce73e2c54798cd8a72f68ae51d2dc01c8408f5a1c327a573f42e1b420b47698be6e4637c5a9c0ba7bfce85c939962fef65c7eb1d0e96d38d6afc54169fcea28af553222b5eccfee8e377d2d6d0cdfae4a77f407a2edf122dfcaafba23d11e7778fe2a2e655f1693e6ebb7707ffeb5bff0f575cbbfe559b89add67cb28bdfe7d9bc36add161a9f4e922f7290af7fccaebf9f0df7d80eec1ee8b4e0306abf35169a128b5336aab5b35eeffec13d46a3661adcc1f7ea0424d538442bbad34d618340da279625868f3f8a3497c5ab16729fbd7c9f42a93c95137a738359ea6a3b397508fe0425904a8542c26c68f53ce9c969c2a6fb01d9f969011c628a478fe3991f678b50e7a7bba19baea8d327a24d3053267ff55967501fad7de4077772fc5fc1cc592c5e9237b193b272a70f1ae15b42506e42cb9ea0b50cccdf1e2de87a57380108373d22f87d63e3d76980b9373a45269366eb9aff598d8ce61715f741ee4672a82000c0dabae8ffcf60d542d9b9993b37cfe93df02c489efad57a8d43c72d98e73fbc5761b3ab66e759c4f7ef69ddcf75fdfd6d2755f486c7caddf4514b998437091fbc473f48d0cf391bffa0fecf80f6fc2d5c0160bd327273a38f3e5651bb9c013e6e74082d50a5ffc9b27488e8e52b1eb7cf056379b86e228652fb80384832aa57c064f4560104f3543d5d723a7036dcbc4348a127fc4221abdbda2396814d2b8ed6ccbec475f039cfb943a462145722e25554b542dd152da85d6e891f017714746f0f9c5021cb330cde9237b5b3ae66d8901068747e40cf9cc85d3bc7c5070b2b450084df3b37ac30ea9b30b4284a1ea16a994ae9bf42e1b5a843d9213550e3cbb47a660ab36ada7b57a08602fa2bb7b1ad1e452554d7e220e02f02befd8cace1bc598e937bef27223d5727086ddf8a92cda61d8fcb3d9616a5e3c8828750000200049444154954467845fff4f3bf9fb2fbd97fbfeebdb0847fc4b2aa3bcdaef428cfadff65936acefe3befffa36def757f731b2b11f4d75cba8b0308238f84353ddf81471bfe32c39b32a27099f7bf4254efecb1eac4a902b7babbce58e2475a58d6063acb46a955a166c664c8db668173ea58ea2fac964d2b2bc0ba27ae548fb388d43c59ea53f6a124e0ce0d3da295b556a2e1f99e9575ac0b937d82e4bbb20a287b3a2d9ab7590750db265d3303ed54bc97233367e5e94754176ce576fd88157d5a8583a56d9e0c5bd0f8bef2114a2231e60e33a4137719ce3c4e1fd5c981404cbb23e477f6fbbc426301f3d0ebff00552292116b766e857990aae6d3ca2b965aba0286e14c5bd88a878a923b797b58ad56c7ed574fdd1c7efacffd2f1bf637ac2e0e31ffb67bed41b66f995834d25de0a3400fcc208b2b00c2cd32e5412ab7bf9f5c10eeeb977bb60d63e7490e32f9d7c15b0dd6aafd55fb1b1e9e94cb07ef3205bdeb49df5570f4a5a886bc1ae7327823818a3195f94ed79076aeea2e74e9ee7fecf3f4d41f7d111878f7d681a6fdb6a54d52734763d8d09c172015317001d343cbeb04cafaa85332de5dde5fd5d848a31e63c1328f52c69a34226673097f5b3e5aa6d80586863e969cccc18a5a6b9f4e5032ba92b8ef89c877347f7939f7c41628fab36adc5135a2667cd4fbcf80834a287165008755dc99aa1414a9620231e7bfe7159d20d06bcb42506f0c787094504982fe6e6a4be6e599fc3a7b533b2f526f97e1ce778e5e01e8e1d163be66fbcf50e06860d7ad55645c885f0dce9a23b3d909f9a2ed68f6243c3aaeb6f3efbcbf57bdef645f2599d5fffed87f9ef9fbdb745430b967688a5ee83f974ac627b8944bddc76ef0eeefaa5ab994e9678f689231c3f7a8ea70e4c939f384721d73a20d5acb6de6c6ac04b241ca477b09f75c309faaede40647819b1061dc4eff548076936e7e4372bd0e6f348e75828e7e394789df4eafecf3e413eab130e2afcfabb2eb0bad74520e8c30eb7d118eec3b64cd4da0c3a48f1692d28008353bd7256a3d94a279ef020c540066b6e9652c9c2cc8c919c9d64d5ba6b89c522781b9df3a9f1434c4c0b5c100804d03ad610eb5e4bd5ad11f07a48a5322d1383ce386dd9aa50cccf71f665a155dcbc00e7ca2bafa064b9310bd3cc5c382f53ab8e0e513a76522b4074cbf78ae728eb73144d3737df25807d3e1ba1a34f7c87af1cdcc3bebd7b387fc6cdce37ac201a8bb7c8908aa8719164b951c1ba1cf6137510806bb7b7bb3ef6fbb7d43ff1fb8f327372964f7ceceb7cf2b3efa4b337bac82960b1c8c3a21deb4d0a8dcee32a2e2f89ce08b7ddbb839baad772f5f3e7d9ab7b49bc728217cee6086793cc9d9f91eb09fa4686698f7889457c986bd6b06338261da2d93475f197ac5b35797b738480f9f4ca719045e9976133f5f96f3171f22c5e25c407df68f0e6d745b08c0c9e408fc01f8d52be559cc42895c9eb1631bf8e3bba1ea3a61160be7ae5587bef10fe80709e8a3e45d1a8a0d8b32ceb0ce08fada0e6d284e04245384e3923e6765c6a4cce7338acdcecf97d2d1383e1feebe438edf4d4242f1d394d67222407a1fad7de40a46325c5fc1cc974a125b5025835b213682de9eaba299d63fb8e5dd2791ce7981e3bccbebd7b28e6b2acdb1c65fbebff13a9d9a719dae2a4570db399ef142eb04ab5d6d8807b69f613771080f7bd6783ebf8d173f587be7e8c570ecdf0898ffd131fff8b77106f5f7ae9e7c51cc6710ea7a1b890000910503c5cbb7519c59379f2f14d5cdf68a3e49f79992ffeb707e95cd6c13d7ffe2ef9f866659160b5822be093d142b76a24b4562670b3d36895323ae244ba588ae59480736695a9cf7f8be4e828a0f1e6b76fe297de7e12434fe301fc013f55e6e7cb4d3ddb2221ea0ef4c9d9f1e6ea154077afa0a56753498a561010a3b5f94a1fcbbbd70ade95572579fe0813d3490cc3a0e4ea20aa25f0c547801a5eaf87a26eb654aedadbbcac191a4451bda4e6a63871e041b9bab9aa24f004425cb1f5f5944d837426271a824da9554fff202b87374a9e552639c185c9393cb51cd3337946368e48dce1448742ea3c8f7ee7218ab92ca148945b6ebb8b8e3e0ffb7e7898f85d1b5987c33b9324ac25cbbb7eb70da89754c1829f20485f689ffecb5b5d77bd7544083c3c71963ffcad2f333bd9ba8370a95ec9521a5bb525a248b3057c1ede30dcaaf6feb2eec11195af8fb7ead282e86cbb02ad2a8a9aea9627b853b66d4eb5ec804f4689e6140b4469d7b96f2c5366df7f7b80e4e8285625c8ee1b07f9d3f75b04823e3c5521c250f17449805ea958b2bc1bf3eb64594d3ce2c3ad04d08b79d2a9b44caf229daba8f8c4d462b5781ab79dc5cc8c319735185cb7ad9574387d46d2dadbdbbc0caedb4650ad110827a854aacc9cfa01153d29a347cf15f7a0f8a3e4f379c68e3e49727a4256ae629110d7befe16caa641269b61f4e4615e3ef83c9d51371d1d31b480c2ea0d3ba4c05b2639c1b1979f03e0ec588a8155abd8f10b7703c239ca7a9ab29ee69b5ffb02c59c382fb6efd845f78a8d4c8f89ee7973e97c7163d02d4bbc1ec54dd575e9d103fe1d1d048493bce597376153e7e927ce72df3bfe9ed3a7c415e1d52a58afd633015af6b33b16f079b8bdc949366955ea9844436e5c03f32bc79a1b78ba556b49a1ea4659ee2f772a51cd11a4b9c49b2f575b3ae88e6365cf2579fca39f63f6ec2cf5bac6ee1b07f9f25f6dc21ff04b19517f4434df4aa69b92ad080262a3bc9bcb158927e2e856a3d2a75f68f94e7d892bf02b558c429a524980f6426a9cf66880bee54201a4ee8d909d3ec9e4b913947293729ec3171f910e94cfe765f4b05c617a7bba59b9ac1bdbcc323333c981fdfb08b6099abc5e3259bd6107fe7037996c86626e8eb3c79e16f7d9414a4685359b852c6b28d28e553638f6f273a4672f909e1923148972d3edf7b67e0e2dcee30f7f95e32fe60945a28c6c1c61ed55bb50837d3cfa9d8758b1e6ed0cf9e7a5679b27701cbb9ca3b68efdbb3a08c07ffbd3bbf90fbf7d3300332767f9c8bb3fc7930f1f94f72f4543594a4668614459ea716d6d41ae5dd1ba79365b6c9dcb7052ac4cc94653dd68aa7bbe6215f02d9a255f0aac3be6d04c9ce77c66cf49fefb6f7e890b13255c2e9d37bf7d135ffe641f417f0dd330d12b22f7f604848304025e828a8d519c43b71b6bce7c5d04daba09f8bd18a68955d6a5f85ba473951c8cca6766a829519273c2b1423d57517369d8ae00969e6e891e097f51460fdb15a052a9923dbf8f8a9ec4ab75a005fdacda743355b746ae6870ecf9c7a5001c40d7caed2c1b189225dd037b1f2399ccd01975130c78d9b0e57ab47074de399e7f1cb33043d1745357dab8e5b6bb00e1144e6af5cf5ffb0ce367cfb26e731b89449c1b6e7f2f6ab08f73c71e05c05eb31dabd6e86d20d079eb54278b9a84976357e1bfbb83f855d3f587bfb9d9f59edfbe8940d0c3f484c17ff9d037f9dcdffe806abeb86404818b3bcac5141cc5ed3683ed2136f7877859f7606bc25962c9796d282782c482caa293dff97b61271c68cc7a2cdd28cc97ab3cfe996ff33f7fef5b5c9828a17a4bfcd69d5efee0fd5e31e854d6a9d9053904e50d76e0560272098e624fe3294f91d72d21dda344c45ef3421ad328ca06a0cbdf834bf153368a28f52c6e3b8bcb1251a96f601d80d865aecfb5b076437ddb718706f0fb7c78bd1e5273538c1d7f06cb1526584f3230b8418ec98e1d7d92e9d117c1d72e7b1e5bae11c03b9dc9317af230e7cfbe4267d44ddd1b915c2b07788f9e3ccc9953af309ba952cc65d9be63175dfdaba5632427aa1cdc733fe367e7f7a2bfe9977e1d35d887559ae0d1ef3c4464f8130c3495776dec46e0502e8a3f2e95c5ebd8bfbb8338f687bfb9d9f5477ff116293cf7f77ffe381ff9cf5f6da45ccaab62908bfdeefcdd7abbcd4877887bd6b7a1e845a22137998e4ef9f8e608b2d09c746a29459266a76976acf18cc5bffec9d7f8e6032f4bfafa6fdde9e53defeb20168ba285db302be2e0594646a823369955ca502821ab57dee81001bf48af2ae57ccb7460b87304d5ab90cfcc50b482148d0a85d4b86c0c02e8159589f1e3544a223d71a93196adde422414c0a5868410dcd12799cb57d0827e4aae0e56acdf0d402e39ca81fdfb8886453eaf0514d66cbb1bafaa6116a6c92427183d244684eb5ed111dfb6436407aa2fc089c3fb39f2c20fd08b458ab92c3b765ecddaab76c9f1dab29e2635fb347b9f16abde4291286ffea5fba473bc7250a47c6fbfb355e85c69947865b37009fca1782e8d62e2d84fcd4100eeb97ba5eb9b0fbf9ff5dbfab0a9f3e4136778ef1d7fc3dffef5e3e825812b5e53e7f755d8c1f315aef9933f5bacb5f4299a2388638e632c8c284e1a06ad4e13ac5648976c0e3df82c3ffc8dbfe5d0810b54ec3a1bd684f8df7fddceaffdf2a45c5350a97af05667a8578aa88118c148829a3b2801ba519c93f823636a04daba29db2ef4629e8a3ed5925ef9548f8c1e8064eef60e8935722e35849e3a83cb4a53ce9c967d8f78a213c52f3851b313276557bda22759b3ed6e22a100c5fc1ccffef0515c959c04e643832b646ae5947467b335d9efd8bce376492599b9709ab3c79e462f1629e83576ecbc5a36031d503e7af2304f3cf26d4291a8ac588513a222373d7698bff8d441de78d7ef10ee592074aeb4f6d1e5cd97197fc04fd94140ccb37ffb9bbfc63dbf7c053ed58b51aaf2f77ffe38bf74e76778f2e18394f5b27412e7df8fb287c4b9ad39bae8353fedf5567d29c79a23c8c57046731ae64410b352e5b9475fe2b1dfff2a87bffd7d2a769db056e69e5fbe822ffdf532ae1baea0573ba5489b94e92995312ca18ee85602944c71289ceeb9bb3c43676737281151deb573944a96ac5e45976dc7a5f865f470db590aa971423d57c9e851b78a940a4926a693a4cc102e35c68af5bb9b2a5b55ce9f7e81b9bcb8180dacdec89aa141aa6e4da656c1b684107e4b0cd07bc5dba9583ae94c8e13071e2499ccd0d111c355c9b16a6427b18ebe1612e2d9b11405bdc6c0aa558c6cbd49a655653d4d2639c1bebd7ba4308353b102489ddfc737bef2053ef0abddac7dfdf52dc7c099fbb9982b5ccef40a7e061c04042ef9f45fdeeafa9f9f7f2b6bd7687854859993b3fc970f7d93fff2812ff1e4c307b1aab51f098334dfdedc9107d0dc267638c236cd6ee97fc07c04793510de6c46bec4337b4ef20fbffb15bef4e9ef337b76965a45a3bf2fc867fee2263efdfb23f425aab82b6934cf2c555718ab1e9600dd5549e3d7e2a8aa8f9a6dc8f15967bf60cdd745d59b90ecdce4ec9c8c1eb6d229166e9674893d8a0d9a8d833d5c6a885c7a52360683f5242bd65d47241440af2878bd1e9263fbd09327241b7770dd364a969b5c72548abf391df391ad37110df9259564ecc2bc7374afdc4cdf72c1bbb3ca064f3efe6dd90f1958b58add37ddb1c8399c5e0708e7587b9550a04c4e5439b0f731429128f6ed5f5df4bd37a0074be10f8fe2c6ac5dde28f2efd228fc51eda65b065cafbfe1a3f54f7ce619bef699ef619444cfe4d91f9e63ed154f73df7d3bb9e6e64db405144cab26cabb0bd6bc5d4c14a2d97afae2f4004f8eeb32c5ca946c492d792d2739baff0c4f7c790fc70e4e5069386838a8f0c1bb0cdefa9b77b272591b55cb205f6eac4176af250604fd354af90c355b443127bd722b01bc5e955ca37aa53738566df13eaa806d6650ea599cedeff1e5db0438cf8c635a41dc880e7973f47036d04e36a2477b24264765439a1fa390e2ccf1038c4f17e80814e818dc4a5bef16caa6c1d38f7d89523e4547771f7ac964cde65be9eaea955492e9d117090604e6b07dcb59bd61474bc52a3d3326851976df7487e460353b0708cce1384772a24a5b34476af630c70e1f63dd9d0f7273680268ddff01ad27ad833f9cf4caeb715f36fcb1f0b57e26ac51e5e23fdf7b75fd8f3ff9308f7cf7b490353d34c36fbdff01ba867fc0ebb67573d7bb6f60f55017cd71e0d53af12098bc6d8a856dd944a201de30dcc6370f2fdeb5d1f27e1a7d90b1974679f2a9339c7ae230f9ec2c5e2524d3a92dd78ef0f1774fb1bc3b44bcb306ee20ae7a969a5dc028950944e2a83eb181d6b2ca52044e53e6c9870e39d1539e22e6d7b1822354953801bf9fb19333588df4ca563ae9ed0c63db26963e8b1b281a1566f375aedc22a287ed0a48ec61e92912fe222bd6bd91482880e28f52a954993cb39fc9a96928cf510af6b362fd6ecaa6c1a983df25393d21b7420d0dae60ed866d12773cfdc4378120412f948c0a37df7507aa5f93cef1f2c1e7a573ecbcf1cd8422ed729ebcd93940448e44e74eca7a9ab6a8a878eddbbb878155ab78c79dfdb2ac3b6fafb685e527633f730ee2587bb7edfaf45fdeca07de67d5fff13b4778e42b4f313d21e64bbe717296ef3e749481657eaebb63076bb7ac62c3ca68cba65d580cd6eb98e46d15dbb2f0d6153c3e9581986fc90a56a664933b799ebdfb8f08f2e38514a65545683968747505d8b97b88ff786f80b55d691454b259a87ba254ad12d54627dc3232b40f5c8155b6507d052a761ea32142ed0d7650b30dd4600cdb32a916cf3518ba1a3d8dd90ebd9817d1a3915eb5f70e5155bbc937d634d7942866e6805860d3881eb69995d1636a6a9281d51b892edb8edfe7c54600f3832fbf22e73d5e77c39b6465eaf9bd8f51f746d0827e3c812e893ba6a7267971cf57d11441c1d78d20bb76bd4e96739b9d231489b2f3c6bb24a67016e5ecdbbb477ebfdb77ec62e5f0462c7312cb14cb769cfb37dff72056cda66eea4d1ba41c5a89f8dda1b73be651dc9745a461a1fdcc3a886343c3aa8c28df7ce4251e7ce820678f4e6394aabc7242e7953f7f9c40d04324a6b27a5d0fc39b5733b22246cf500fb1881f7f2888cfd34a45515415bde6c1ad8b13752c5326969c25074cec3fc2f1932952936992c90a65ab22d730fb550f03837ede7e539cdbeeddc240674df4344a69f2c934d10e91677b14b0cc14f54a9158a882ede946f5a9b2bcebaaa48975f460d4347ceec66e8ee2a46c0e0278b47e7c4a9d99d43c38b7954e221d039825316f0e502a0866ae833d40ac6776a2477722d0d2142c5b15ce9f7e41ce730cacde882f3e42c5d279fab12f01c88db40eee98999994c20bc14084925161c396eb69eb150ee0f43a0a7a8db0e6e6e6dbeea2ab7f3575db901caca59c03c0347b49cd3e2def1f79c7c36c5d6661d5dc0bd6ab2dad45d69c5e79ea168a47b96ce9154bbee2cfa8b577dbaef7bd6703ef7bcf065e3ea2d7bff1f8099ef9f65e4e8d96314a3646c9607ae22c4f3f71169722562777747871168d3a36932cf2f94f7e8be919d16c3b75ae88353743be28b6232d349fea6568a58f0d5b0779c76d3a576eda28f652d44ad4caad5cb29c1e22dab434cb5d49a3573b89026645c13633d4ed0286056e77176d6e1d1451e337f5ac5ccfdcd9d98d5b5129dbe0ad4e4b70ee8fadc0eb6b6b515234f43ca871193dcc7219333b26a3c7ea4dd7e38b8f50750708783d9c3bfa38e3678e605965b4583f43db840ae4a903df90a995c3d27570c7e8c9c31277b82a39068736cb137cf4e4619edbf3cfd239aed9f526bafa57e35202d46da305907777b5b161cbf5f42d5f25395aa9d9f9c8b27dc72e766c09b2340454a474c6454f5a25785976a3b7beeaff85b66983e6dab46133fce666e6a695fa13cf9c62dfdee3f2ca3f3d6150a6c285890a17264a28b870d78a84dc7eaa699dfbbf7208051736cd9145448a685b9dae8e101bb60eb273bdcef6ebfa59ddafe2f115a8582b801ad4e627fd14b74e462fe102342d884781aa65601a26a55259f2acfc5e9b6ad5a2b1380abf16a5e60ea236c4a7e7d32ba8b76dc2a7d4c96632b273ae007dcb575329e765f4281a155c565af63d0032d3afb4448fb51baec6a7d6f07b6d8c428ab1e3cfa067049f6beb35bbf0aa1ae7c74f71e8e00bd23906063730b4611b996c86b9d117183d24d2ae9251617068b3ec6738ce0148e770aa514e9fc339f94391281bb6386995be28726cdfb18bfedb3f05a45b53ab664abbe23409dd8b9a83cefc875fbd7cd1a3f192ff775b7bb7edbae7ee95dc73b7a046a452de7a3aa5337a768ad1c90213598bfcc434c74fa6387fe0049eb8c6eecda2f1d4dd15627d5c80f4e1ad01bada63f4b46bc4c22e14b70ede15b8fd416a6609ab5043550d1425d02200e456c2d42b455c40ddad51b5c1552fcb4a95d320342b0a55c3c45349e171cabb88be885ecc4b6a7b9ba6128dc528db2e6ac684ec9c2b1d57e3f5b53177615e02d4d0f374f40ec969c0b23e87a1e765f4b8f686b750f57608ece10a70e8b96f31352598cc235b6f21ba6c3b66619a234f7e0e1025ddde9e6e56acdf8d5998a6982b7060ff3e6874c9e39dfd92a13b71ee2ca387bedb1239d65eb54ba655cdce9148c4195abb51460ed5af3171ee6939f3b163e7d5f4dffe2906d405ce0172e65c5942a41a5a9b83973372b4bcfcff972c91a8b8120995a1e18196db1f7f74bcfe1bef3ec4504f8ccffcc5bd84e20aa665e13266d1024fa05acb507c1aee7a4382dfd250eb063513dc7503d51992aaf9c01638433cae2659b91e7f028f1aa438334abd2252b860b8832ae0ae95a8d8a20918ef15bb199df50555fd988c1edee81065db856994308da24caf9ce851342a84025ed9f750b54e7c8dc65f7a6e82e45c0a4b4fd1d3d34bdfc03aea8ac01eb313275b52ab65abb748dc912d5804db1278025df4acbf1dddf25048177871cf5771557202b4071436efb819d5af919f3cc891179e627ac696ceb166e3d5d46d83626e8ed347f60a95447f0d9fd6ced0da8d2d91c3710e10a3b4ae9b3fcdf2da3960f15ae75671069604e77eb74d95cb436f5f683f138dc27f2f93e3b66e1103bc1e373e2d8e92f5120c0847a806c46314b74e35e0a7de588f6c3512639fbb2ed2281be94c00356f1c557553b54a544a49dc9534756f9caa2b4ccd1d944b674074cf9ded505629d3223edd16178351d5c21909ce2bc1b5d45c1ab9e4fc14a1a1e709686d0482a24c9c4b4f62e8792aa5394ab949d66dbd05bd1641f147295b15cebefc584bd5ca1fee96331e4e6ab57ac30e62d118653dcd89030fa21b36ba2ddee79acdb7a2fa3532c909f6ec798ae9997c8b73586511391ce700163907406af6699e78e4db92b8b869c7bd5ceb3db78463cc9b105f6abd963783f3aa4bc57399c179f36bffdc9853e605271c2b605ba8a1841850f276e2310c6a7601b71206c3a4e66afdceadaa855b1158c32ab5a2c9aa3b0a35e134a546ffc331979d47cfa5f06b712a84c44157fde4b2e72538d7e20354953815d3622e57c3d5881e6bd60c41759ae45c8a8ef6848c1ef1f63e6a2e0db35ca65448929c4b51ce9ca663b500e6f1b0179703cc1bfabaab375d8f3b34c0f9f1533cbff731a261156f03942f1b18a29c3ec6b1e7f73376214330e02518f0b279c7edc43afac8242778ec5b5f6a49ab1cb06e993a07f63ec6b1c3c70845a2241271b65dbb0b2d1c9591e3f00b5f90f73bceb18867d5624b478f85b476e11caf79f87f2cfbb98b206d8a454075a1784c97e241543e6a0d9dd8c697ec56c2177d0e27a2542d03c5a751355b15e09bf18727d083ea130e296f0b2d4753c5096e5b26467e9abc6ee12ecfc89de6c5eca4d4b5523aaea6e2e9e6dc8519029a180033f43c1ded09893dd2a9590c3d8f9e3c21d9ba41b5864b0d3131769cb1e3cf902d580c0cac64c5fadd54cb05893bbc5a0703831bd8bc790b66619a679eddcf9953afd0a1892bbee31cf9c9831c7cf21f01b153d0891c20d4119f7cfcdb9c3b37b9c8399c3ec9be1ffe9dbcff96dbee92ce316eb55619016a95f931674798612971ea6670fe93881ef073e6208ef4a8596d349d1a4e5256055eb11b3bf26a76419ed08e296e5da659555ba45a76a319582a95717943f8dc754af98cc41fde60872cef161a852f8f4f9cd4cef8ac23fe568f5c8937b20a8f9d96ac5dc59e25dede87b73a8da1e725f608686da85a277e9f8fb23e27caba8d69c1755b6f219e10f7157593b32f3fc6f8f828d1b0cada6bc514dfb33f7c14cb2ad3d1dd47a8eb4a56acdfcdc46c8ef3a75fe0cca9570806bce8b528dbaede2e9d63cf9ea738332152d39d37be9995c31b29e6e6c8242738f0ec1ec6cf9ec565e759bebc97dd37dd2115142d53e7c9c7bfcdf8d9b3241271de78d7ef505dfb1b64fac54cc9f2dafc66de7a230d737be7cbedcd43514b55ae7e92d163fe957f4eccc1205ad8038883a0784c973b10afb380e46bd7b416d867d73481311a7f5bd5794d2acd330bca66ca04f1d41d7ac9fc921b979d27e42d52248157f1487592aa7e014f798a9aaf8b9ede65d46c8b7c56cc7ca4d245129dabf069ed9c1b3f447bc8a26854d05c73d443eba82b61cc72994c13300f467a718784b3bbd410f9f1bd8c9f3e8caafa58b9e5edf8c3dd1cdbfba516cdab2bafbc021051e0e93d4fd117b3c9985e568deca4ad7723a3270f3700795ed247621d7d58a68e5ec8ca1e475873b3e9aaadf40cac979f5b2f64a52ae2c8c611366eb98f8e3e0f893e9bba7e1afcada0fc47ed9affa42b57cdf673e3203bb6afe0d35ffc35c2516d51addc6a60826653dc3a20aef6d682ce958f121660952d949a2e9a81c10ea81992a9ebf2362a55b512e97c014fa58c1aea12e5dd46f73c9f9d91c4448f26d6c635cf7cf81257e0ad4e8b398fd80ad114d4da89fb547c3e9f64eb3ac07cf32dbf45241420104e303d7581a7beffcf640b165b77dccc8ae11121e973fa307a2d8aa685d8f8ba77e2f1853973f2182fee7d184d299131236cbb7a3b6dbd1bc94f1ee4b93dff02209dc3c11413e7cef2c423df06448fe39a1dbb24a3b7b9c751cc65b9f1d63b5839bc119fe6213128d4ff5f0d9483935a2d06e6b09856f2934aafe0e7c841b468dd75d32d034bdea7784c97e5595157ed31893fca25138f5f435545da25522c0dc557a65cf3e11c115d2f110cfa507d2a8651a16a8893dbe5171ab3cdd52b8f2f8c659551fc41f4621e4f790a777986408fc8e58bd94929bc9088870804039c3b779aba1a4773cd61a0126fef93d823357d8664be2e81792212a08e98033975e01b54f424eb8657b06cf5166ac5719e7f6e0f9655a633d1c19a6d77138f45d0670ef3e2deefca72eeb6abb7e38f0f379a80c239e25d2bd87d538394d800e3e7cfbe42587313ef5a21f18663875ff802e7ce897ecb8db7de41dff255843b3692e9df49a23ab5e431a855bc8dd44a69a95a35478f66c6ae386e3f59e7809f2307792df36b518c6993405b9872c9c417f403f351e462e63409ad7a18d55520532a83372e5318979dc7534951f58af4aa4208550960a48f88de87af8b607c0d301f3d52e9223deb6ec12815303363b4c743cc155512dd83d495307e9f8f27742610000012f349444154c2ec315c561a3d79025f6c356b375c4d5d09a3f8a39c6d54adbc5a87c41dcf3c2bc4a8f1b5b366dbddace88d323639c98b7b84ca61b3739c3eb257aa232e5bb5568ed13a78233d33465d69e38a8dc3f40cac97ce3171ee2ca75e394c2a9566f9f25eb6edb8196f601bf69aed84d534e18b38072cc01dca62e7688e1ec025ed1dfcb7d8ffef200dab13c317f453b30bf8827ee92496554371eb940c2fa1b01b27d97200babb92a6e68d13f4d7c84d4fe0aaa409b40fc9e7cde50b7880485b58125b6ab6413a9596e0dc1708c9e8914a1769ef1d22a8da9c3e731c1730575409686df87d2a7590220cc97c9dba95a177dd7598f5209a3fcaecc44929dfb3f59a5dffa7bd737b6ee33ceff0b3d8c5e2b0004511e241a4484a142953a2645b9658cb961dc79ea476ed49d24932d3d4b9c8652737bde89fd1ebccb4bd4c33939ba69dd4197b6427b5a348f221921cc77264d9942cea408a14051024b0c01eb1bdf8b08b5d00a425c796647b7f17c21258da20e67bf01ebff7434ee5993bfd2bd617cf8ac0fbc06186b60fb3585ae3dde3bfa4b65e44eb2930b84bb855e7cfbcc6a53931b8fac1838799dc2fda5816ae7ec20767df086291fd875a2e95ff7ab86da430f00485d1b1661a373a4f37ac623d4721e34fa157482b6228433a745a945ff30867ade08bb71ee21dc502c04c7852a2a179aa9aa0bebed2f1baec55b02c15cb4b904d9b91d7a4648e9a9168b59734dd2bbd560bf6975bca3049aa64d249aac5cb78c60d6ee91afbf78a3dd86b2b575afbcdfbc7595bb982649528f4e5b85525d8b20bad8a7975e16d722347d0060fb02597c131ca7cf2feabd8fa0a930f3e4defe811e6fef43273e7cf503325668f1e61eae00b189525ce9df8859852d25360df81c38c8d8ff2e65baf0596230c875ffc939c2ae313131d2e959fa5f2770fe60ba3f48d1c424a6b41eb48fba3af301c4150ee3fd365331408eb7137e010ef2656a046b29f86334f266b52afb55acf6bf524d92c380d50a50afe2e37d9ab502e2eb1b56746b8576bc5887b555f5f4206dc64019c356c650b0a22384f98cbec1a1d45d676502f89a1096b373f61db985894b716e7f0d43e8aa512fdc353a829154fc9532adec46c06e6be6b95d232a45329def9c3afb972f11ce39307983af802737f7a99f3678e5133251e3a78486c8a2a9de79563af63961620b985071e799e74be97978f89b842cbe578eaa927e9193e18a4684bcbf3e47239f61ffa4e87d5f0872e7cebf9ef0583de4a85590a6a892b561fe3cde6051f8a6ec179e05285b6d1b61704d3cd319577130ef19e62054a69bb30962e0029a4860ecdb4b0ec55306be04a4972f9345523019615ec66d4b68e609996d867be657b70e8a56c1731f4123d633324151955b5d1ab6be8a52b14758dad135358b643a958c2336e04fb3dc22d259eda474311dfd69253c128cf0781f9bec7ff11c3cb92424c6dbff8fe1b8c4f1e60e2c16745c6ead207011cc30ffd03ae596ec2f131fd4323ec981667d9bf7bfc975cbbbac2ceb17e1e78e4797afa479ae95d31b26774629a7d0f3e1a580dbd52e6fcfbef70fedc79c6272638f28d9f323235462a9347ed1d20df74a9c6d54ed72aea5241e8840f44ebae1a49e9a6d22d57ebf3de0c753b8a0109c94c78522a9bf6ac6ab7f3d1219bb1b12c1555aa600146bd75bc825d136e999b9924ada682c36fdcd47692cd647dbda1b1bafc3e09739942df20727e37967e13cfb811588f7aad1e580fc92a31363943d5024fc907adecfaca47ec7ae805b2f97e525a06532f72e2f5dfb07dfb3085c96f23d925cebc739c95a50586763dc2d4ec0f71cd326ffde158271ca75e6265659599e9511e9815b372fddd811075b5f44a99f26a89b74f1da750e80bac46be30cd8dec745720dad50e47bae95601284a0b8e4cba75bc423ae1809cbd2b59ab76c580b449b49d084044a00e2e2035746af53c4def495815a7426f6108cbcb532dce23410b86f5256cbd44cfe0c3d88e0bca16924e29b01e7b266650259d95952b144b55bcec345bfac7295f7b3b782fdb86a7a85a59d22915432f06076faa5a8174ef4edc643fd0e0dc1f5fc1d657d8fee4bfd09b2c0719abbd7b7671e8e917d08d0a6ffde1184b97dfa57f68840766bf8f51fa9833a75e4582a0a76a75658193bffb6f9696d73b628d70d1cf0fc247a6c6b07a1f42cd541933aed13e60a1a3753da256cc014e048eb06b959413f70c0effddc50a49ce8ed0a85d0d7e16c01878090dd9ab00052cd302298f675f169311ad22925dc2c98aec956599c876119b566b09c0e2e272603d7afa46585c5c0e5a4a862767585d5da3143a5750d506304c4bc41e73c758585ac1d28b4c3ff622852d19525a32883b1e7be687a4b3093e7ceb18eb8b97d1b6ee60e69bff84e1c1c9577f165893c9fd47a95c7f93dfbe719afefead3c72f4bb68f9dec06a68b95c50bb804e307e70f4c5c09512f2c7a07682d01d8ef0c1379d96a35bc6ea5ec1d17a87b10225d4e821927eb5bc6ecaa433e9e6f00515d72852af99e40a3bb16b2bd42de86b6eb7b51d17432f91ec15c008ab52c52cfe99b5359d89833354eb60e9378376f6a4b69dd2c5df0122ee1819df8b615aa4532aa5a50b011c7b0f3f47df960c9e92e793f327b872e9030147ef4ed177b55441dbba83279efd0900c75f8ac2f1d1e9ff61fefa6ae03ae99532278efd27b5ba1db48af8ad240b57c590ba23dff82923fb9ec6d272e493551a5e12bf55a75d9ea153f2065bae54648fac6f35fceb56402e3ea7161cfe1e8fbb1d94b72b06a44d66c2931c79c8939b1318b3191bab1abdc7322dec664b49323bcbeab5d3645491de55d514eb25b1b0d494f806b5c9512f7d44c25c66cbc00489cc08ebabcbdc5a9c135b69c7f74602f3fe6dad59b4866971f5ca652cbdc8cebd8f93cdf7e32979d6aa75cebc739cf1ddfb5b705c3c87a6f5f3c4b33f414ee539fed2cfb859ac32f1d00b4cefdcc2eb275ec5a854837de1173f38c5a5b90ba4b46d3cf12de14ef9a33ff3fd0718def36d2aa9090a996ad35d021c48483638d0f09ad5efe616cb86972491d62810fac0223186ff54f76c950f87f8214bea1e5a0e5f31205d941b9cc158fc3fbc8486593390f0dbd55b592d1b82c1d3862ea624da8e0b98d8e539d25a5fe05e25a9b2502c515ed3199e16ed2e66f1cf28ce4db60c4c904b3b7c3c370708ebe1bb5629adc08d0f8fa1af7c84aa15280ced0ee28ebffcfe3f18de3ec4e8e421ae5d3ccbdcf93311cb71f2b7ffc5cad202b3479fc54df6f1ca2b2f91ce0ff2fcf32fb0b426f3fbd7fe17b9b1c613dffa01433b0fa06647c86d1dc2937b4948b658ec922d16bbd37497c27b8d15483876e4b97035bcfd78b4706f55bbe510d79d6ed5fda018902e3212bd92230f792060d0f51a09252f52bf721ea36ed0702a64b229116fb8abc8b987492a3292b3ceba6e91ec2d60da32a9a48ba197295f3dc5968109b27d0f502b7d248e30500648151ee2eaf585e0ff5d18dadde15a6debcd307ef0795149571a9c79e317a85a81d927ff9ef7ce9ee4fc996351385efd397acde0efbef72217e6d758befc4ad04672615e58b7bffdee8b6c1b7b1c353740c34ba2263d1cc7416aba4e0929b4d8fd0c6cf8ba0d96869d2481dd72a99496d5d8088cc8c89ea65b752f03f26e8a01d94099adbbb04aef03625a49dd84ba2993143b50f1ec2a72663b6ee5235c792b9954020f585ebe418fa692e919025c928accf50fc5787fad4f580fbd7405c5b949efd8510cd30aa6b2a7b7ee24a7d6a85a590cd3e2d287a7e949d6e89f7c0a37d98fa734f8f33ba281706af687bc77f6f7a2f631be2be8b93af9eacf9133833cf5e87470d6f937befbcfa47a264965f20cef01491a40cefa9b926c12928dd3393bafa52eee5478e5b41a0d014509b952a17fbbc0e1cbb71c2e2aa9fbc472f88a01d940767a5892f296e7552e5037651a4e45b47b34dd2b2999c3537aa8d7e6496b7d58682401d9bc1104e700d5baa890fbd6e3d6f573c11038551b085c2d471113e0ab16a4532aef9d3d89a517c935e38e94da60f192006de2c167a95d3bcec5f7df20bd6d3fd38f3d07b4e0d83e3ec385f912079ffa117d2387009094f68c52f720db77addaafdb2d4a180abf0b173adbd4370223128c4b4ab0f1e97eb11cbe624036537ea7e45a86d7a89c26a1e4c58476cbc4306b6452a2f9d0d04b6883c2bd5a2f2db0ae5bec181b0adcab5bd7cf515f5b6478fa6994463908cc87a78e62e9372996aadcacf533bd7f161070946e2d505d789b89bd8fd137b49b9456a054bcc9caad2263e3bba897e779ebe4eb41d55cb24b9c78fd37ec987e86e9fdb3b8a99d81eb2449dd41d8486110028b115e254ae8b5b08d88a46e455d23f8950de0f0adc6fd0a07c4807caa94cc346c03bb7c01d9aba0aa793c43c75346f08c05d25a5fe05ed9e53906068670cd0aa9541ed7ac50be7a8aa1a927d83a38c9c2e5f3548a57e89f7c0ac52bb3b83847a57885bd53336821d7eac333c7c88d1ca16f6c1637d98fa9af70ede259f64defe1dca53297cffe8ac9079f6674f2102ba50a46e9328f7fff5fd9ba5db4cd3b4d7f29718770a028e038d1982294850a6e6b7baad362a8a1eb4e3080b60d4ff7271c1003f2e9ca2239cac35e26334d65f53d94bad854e501b535b1cfc3537a30f432ebba85363886dc846369f11af5b545a68ffc88959bb7285f3d45be30ced88e413e3ef74e70e08d97db1db856a74ffc5a04e5fbff4654d0cd158a4b97189d3cc4adc577b97ee15c008721f552189d21ffc88f811618ed0abb4a819a3088d84234e22b80d35ccce1cd4b6123a2280a4e73905beb3fd53e5021da68d81e88b7c6f4dcbf60f88a01b94de99644423b88a5ee80da27e0ac01ad5a87befc1e3d9a8a93e8c5697ef196af9e62cfc3cfe0247a318bafb1ba5667e6d1194ac5128a73937a728c5ddb0a3480945660e1d21fb1f422fd879f239d52291b0aae5927ddbb13a33ccf993f9de3c967be43cff021ecd404fd72829a94f9d4f7be111c280a09c746412cfa365b10ac8e740493161cd1346debba1d8e70ac819c0d02f1fb1d0e8801b92d2932904de1ba0eb6b50d4b2da0658b388951b2d504d5fa75d6758bc2c80c4aa38c65ea2c1545e35ea2ef11d65797999ffb0b3ba76670a45e6e2d9ea2b25667df813d34945e525a017bed12f31fbec9dec3cf91cdf78b54af646134ad91a98ef1f48fff0d491ac0d140026a9bbeeb6e7f880043f1af438f011a0a51484269ab6eee93af8e2398dbdc293fd6109fe7fd0f862fa9545abcd7efe14b21c34a7baeeb60980e8ee3e0da32962bf6ab3b4e037f2125ea15b0ca182bafd3507a19181ae5e29bff2e0ebe993acae2dc292e5fbac0aeddd3f48dcd0669ddb36ffc82bd879f23d5b78f543a43cd1b2499d6d0e404557ac05590b8d5251bb58194ce65bee1b7615b801d4ecd3a4e63434b01ddad85af74c20145e4c5bf0cee5437c580dca67c406cb781eb34701c07db71709c461390680c2037b2988d756c1d94948ed6ac1097f50abd4917d46697acdb4073d7d1e51e2445eb8817bac60f9bc95fb08e23e205ff91484b54e8a1fd9bbf339e08ab5b6c0144c0f0abe1e199555f46382006e4b6e5b869cf71216c458036489ca0e0e62f4cffba5b7d21fce8d66c92b7691c3a148a29e80604b45989f65fdf3896b01da7abfb041b43015f5e8bd1ae18903b906f45305d0cbc881501ba42f279aac39af860d05ab4ed19a64e30a2350af1bb9f1e4f402710b6dbe838f6ecab0286af3848bf03f903afdd1460b6167fd857779c5660bbd1c1f64ee8dbbe7d9187a18a00a128a22e41ab56e13f1f8e1ca2e957e874a1d48ed8226c29c26e1974b712202c852c13692afc2a81e12b06e40ea4c886e4b869d1c4a824901595e6b85f1c470c7c138bae0549d888040b4ff16b0ea13b1505cb9648482d50d4a48765b71a09db176fe4bdd1648d6e85bbceeb4c3a6a45fc2daec1df45140888ba4fe1cf64938fec4bafd8c5ba4385639170c00e7471b79abf7387ae56abe2207eea3859296432bad4b8370cb4ef2496804e20fc2f88af3a1461c516e40e251647da73ddf06212dfec62013a2177ab11b2282d893821da311e7a31b83bad205cb6684821fe553a13b7b75bb80322358ab0ba4d4b0f03f1758203620bf299e5b869cfb41c64cfc26828114b02c29a40d49274fb39f40ab751b188e84eea13b0b9a5d80c8aafb3620bf25728a52a38ae42d21530c88a8a6934cf1a6c06befec2f5c148a7950d20519bf7294deb63a1286af0d84d770a45b80f0abe5eb1c467556c41fe4a199608da5db7d39ab467a5ecb65824ec8af98a66c4da5db54e6d1457400b8ef68a76706f0cc5a72a06e473503870f7e507f040575882fb9ab14b3b3c40c7f3ed30f8da2caee81668dfc9dff675570cc8e7283f056c5a5150d20907dd4a202b89001ae80e4e3790222d236d69dedb09b663283ebb62403e67f99038cdb3dac2560508dc305faed388c4096180fce7dbef49271c8c8612c414105b8a2f4a31205fa07c58c475334e9195205e091677db75fbe2f715b92f0eb4ef8ae22cd617a8e8824d7b69d5911c57f11439da14e2b80aad75ae9093c171556802a5c80230458e960c6320be78c580dc25f98bb97d518bca74b7fbc1070ae8387834d6dd510cc83dd6a75981d84adc5b754faec78a150b880189156b53c580c48ab589624062c5da443120b1626da2189058b136510c48ac589b28062456ac4d1403122bd6268a0189156b13c580c48ab589624062c5da44ff0f4ad6944aa68d52f80000000049454e44ae426082</data> + </image> +</images> <includes> <include location="local" impldecl="in implementation">firstrunwizard.ui.h</include> </includes> @@ -285,7 +180,6 @@ </variables> <functions> <function access="private" specifier="non virtual">init()</function> - <function access="protected">showPage( TQWidget * w )</function> <function returnType="KURL">databasePath()</function> <function returnType="KURL">quarantinePath()</function> <function returnType="TQString">defaultDatabasePath()</function> @@ -301,6 +195,5 @@ <includehint>kurlrequester.h</includehint> <includehint>klineedit.h</includehint> <includehint>kpushbutton.h</includehint> - <includehint>kactivelabel.h</includehint> </includehints> </UI> diff --git a/src/firstrunwizard.ui.h b/src/firstrunwizard.ui.h index cb62580..f609bf5 100644 --- a/src/firstrunwizard.ui.h +++ b/src/firstrunwizard.ui.h @@ -28,9 +28,10 @@ void FirstRunWizard::init() { - //aesthetics - cancelButton()->setFixedSize( cancelButton()->sizeHint() ); + // remove unwanted buttons + cancelButton()->hide(); helpButton()->hide(); + backButton()->hide(); TQString homepath = getenv("HOME"); databasepath = homepath + "/.klamav/database"; @@ -39,29 +40,10 @@ FirstRunWizard::init() quarantinepath = homepath + "/.klamav/quarantine"; QuarantineLocation->setURL(quarantinepath); - preview->setPixmap( TQPixmap(locate("data", "klamav/about/klam.png")) ); - - -// picture1->setPixmap( getJPG( "amarok_rocks" ) ); -// picture4->setPixmap( *picture1->pixmap() ); - - - - setFinishEnabled ( WizardPage_1, true ); + setFinishEnabled ( WizardPage, true ); } -void -FirstRunWizard::showPage( TQWidget *w ) //virtual -{ - TQWizard::showPage( w ); - - - - cancelButton()->setText( w == WizardPage ? i18n("&Skip") : i18n("&Cancel") ); -} - - // void // FirstRunWizard::destroy() // { diff --git a/src/klamav.cpp b/src/klamav.cpp index df62cef..c09a9f9 100644 --- a/src/klamav.cpp +++ b/src/klamav.cpp @@ -346,52 +346,51 @@ void Klamav::firstRunWizard() { TQString homepath = getenv("HOME"); TQString defaultdb = homepath + "/.klamav/database"; TQString defaultquar = homepath + "/.klamav/quarantine"; - if( wizard.exec() != TQDialog::Rejected ){ - TDEConfig* config = TDEGlobal::config(); + // Execute wizard + wizard.exec(); - config->setGroup("Freshklam"); + // These are run after the wizard is finished + TDEConfig* config = TDEGlobal::config(); + + config->setGroup("Freshklam"); - TQString wizardDBPath = wizard.databasePath().path(-1); - TQString wizardTQRPath = wizard.quarantinePath().path(-1); -/* kdDebug() << wizard.databasePath() << endl; - kdDebug() << wizard.defaultDatabasePath() << endl;*/ - //Configure Database Path - TQStringList lastDownloadPaths; - if ((wizardDBPath != "") && (TQDir::cleanDirPath(wizardDBPath) != defaultdb)){ - lastDownloadPaths.prepend( TQString("%1").arg(wizardDBPath)); - checkDir(wizardDBPath); - }else{ - lastDownloadPaths.prepend( TQString("%1").arg(wizard.defaultDatabasePath())); - createDefaultKlamAVDir("database"); - } - config->writeEntry("lastDownloadPaths", lastDownloadPaths); - config->sync(); - //Configure Quarantine Path - TQStringList lastQuarLocations; + TQString wizardDBPath = wizard.databasePath().path(-1); + TQString wizardTQRPath = wizard.quarantinePath().path(-1); + + //Configure Database Path + TQStringList lastDownloadPaths; + if ((wizardDBPath != "") && (TQDir::cleanDirPath(wizardDBPath) != defaultdb)){ + lastDownloadPaths.prepend( TQString("%1").arg(wizardDBPath)); + checkDir(wizardDBPath); + }else{ + lastDownloadPaths.prepend( TQString("%1").arg(wizard.defaultDatabasePath())); + createDefaultKlamAVDir("database"); + } + config->writeEntry("lastDownloadPaths", lastDownloadPaths); + config->sync(); + + //Configure Quarantine Path + TQStringList lastQuarLocations; - config->setGroup("Kuarantine"); + config->setGroup("Kuarantine"); -/* kdDebug() << wizard.quarantinePath() << endl; - kdDebug() << wizard.defaultQuarantinePath() << endl; - kdDebug() << defaultquar << endl;*/ - if ((wizardTQRPath != "") && (TQDir::cleanDirPath(wizardTQRPath) != defaultquar)){ - lastQuarLocations.prepend( TQString("%1").arg(wizardTQRPath)); - checkDir(wizardTQRPath); - }else{ - lastQuarLocations.prepend( TQString("%1").arg(wizard.defaultQuarantinePath())); - createDefaultKlamAVDir("quarantine"); - } - config->writeEntry("KuarantineLocations", lastQuarLocations); - config->sync(); - - if (wizard.downloadDatabase()){ - kdDebug() << "downloading database" << endl; - downloadDBForWizard = true; - } + if ((wizardTQRPath != "") && (TQDir::cleanDirPath(wizardTQRPath) != defaultquar)){ + lastQuarLocations.prepend( TQString("%1").arg(wizardTQRPath)); + checkDir(wizardTQRPath); + }else{ + lastQuarLocations.prepend( TQString("%1").arg(wizard.defaultQuarantinePath())); + createDefaultKlamAVDir("quarantine"); + } + config->writeEntry("KuarantineLocations", lastQuarLocations); + config->sync(); + if (wizard.downloadDatabase()){ + kdDebug() << "downloading database" << endl; + downloadDBForWizard = true; } + } void Klamav::createDefaultKlamAVDir(TQString type){ |